diff -Nru sudo-1.9.13p3/ChangeLog sudo-1.9.14p2/ChangeLog --- sudo-1.9.13p3/ChangeLog 2023-03-04 17:00:50.000000000 +0000 +++ sudo-1.9.14p2/ChangeLog 2023-07-15 15:42:21.000000000 +0000 @@ -1,13 +1,1392 @@ +2023-07-15 Todd C. Miller + + * .hgtags: + Added tag SUDO_1_9_14p2 for changeset 47c0bf9a7ebb + [6bbe51d30496] [tip] <1.9> + + * configure, configure.ac: + sudo 1.9.14p2 + [47c0bf9a7ebb] [SUDO_1_9_14p2] <1.9> + + * plugins/sudoers/match.c: + runas_userlist_matches: fix matching a Runas_Spec with an empty + runas user. + + We should only match a rule with an empty runas user if a group was + specified on the command line (sudo -g) without a user (no -u + option) or the user specified their own name on the command line. + GitHub issue #290 + [164428126ee6] <1.9> + +2023-07-14 Todd C. Miller + + * NEWS: + Document bug fixes in 1.9.14p2. + [e5cd975816b8] <1.9> + + * src/exec_pty.c: + Pass SUDO_TERM_OFLAG to sudo_term_raw() when sudo output is piped. + + This fixes a problem with "stair-stepped" output when the sudo-run + command's output is piped to another program and the command reads + input from the terminal. + [17009f9817b0] <1.9> + + * src/exec_monitor.c, src/exec_pty.c: + Simplify the exec_monitor() foreground flag. + + Add cmnd_foreground flag that is only true if sudo is the foreground + process and the CD_EXEC_BG flag is not set and pass it to + exec_monitor(). This means exec_monitor() no longer needs to check + for CD_EXEC_BG. + [6cc420fea368] <1.9> + + * include/sudo_util.h, lib/util/term.c, plugins/sudoers/sudoreplay.c: + sudo_term_raw: change the isig argument into a flags field + + There are current two flags: SUDO_TERM_ISIG (enable terminal + signals) and SUDO_TERM_OFLAG (preserve output flags). + [15fdaae9fa3b] <1.9> + +2023-07-12 Todd C. Miller + + * src/exec_ptrace.c: + Fix a crash in intercept mode running a command with NULL argv[0]. + + Newer Linux kernels replace a NULL argv[0] with the empty string, we + should as well. + [74e81e6d373a] <1.9> + +2023-07-11 Todd C. Miller + + * .hgtags: + Added tag SUDO_1_9_14p1 for changeset fc033946b1a9 + [ee6033290e91] <1.9> + + * configure, configure.ac: + sudo 1.9.14p1 + [fc033946b1a9] [SUDO_1_9_14p1] <1.9> + + * NEWS: + Docume bug fixes in 1.9.14p1. + [f526fda905de] <1.9> + + * plugins/sudoers/log_client.c: + fmt_info_messages: don't include ttyname if it is NULL + + The NULL check was commented out for testing but should have been + restored. Fixes a potential protocol error message from + sudo_logsrvd. + [12cf2b87355a] <1.9> + + * logsrvd/iolog_writer.c: + evlog_new: store a new copy of peeraddr, not a pointer to a buffer. + + Starting in sudo 1.9.14, eventlog_free() will free the peeraddr + member too so it needs to be dynamically allocated. + [4c984e3e6aef] <1.9> + +2023-06-27 Todd C. Miller + + * .hgtags: + Added tag SUDO_1_9_14 for changeset 8010d7515347 + [ff70094a18c0] <1.9> + + * MANIFEST, NEWS, config.h.in, configure, configure.ac, + include/sudo_compat.h, plugins/sudoers/Makefile.in, + plugins/sudoers/logging.c, plugins/sudoers/match_command.c, + plugins/sudoers/parse.c, plugins/sudoers/parse.h, + plugins/sudoers/regress/fuzz/fuzz_policy.c, + plugins/sudoers/sudoers.c, plugins/sudoers/testsudoers.c, + plugins/sudoers/visudo.c, src/exec_nopty.c: + Merge sudo 1.9.14 from tip. + [8010d7515347] [SUDO_1_9_14] <1.9> + +2023-06-26 Todd C. Miller + + * Merge pull request #275 from AtariDreams/emergency + + Set command_info to NULL once it is freed + [6d1e55f4e7b9] + +2023-06-26 Rose <83477269+AtariDreams@users.noreply.github.com> + + * plugins/sudoers/policy.c: + Set command_info to NULL once it is freed + + The lack of setting to NULL is a holdover from when command_info was + a local variable and not a global one. However, we given how other + global variables are set to NULL, it is best that we do the same + here to avoid potential issues should sudoers_policy_store_result be + called again after the first time failed, otherwise we could get a + double-free. + [a1a462a52a98] + +2023-06-25 Todd C. Miller + + * Merge pull request #274 from bin-ly/main + + Modify the is_script function for match_command.c + [05675d16bd52] + +2023-06-25 binlingyu + + * plugins/sudoers/match_command.c: + Modify the is_script function for match_command.c + [ce944a838c33] + +2023-06-21 Todd C. Miller + + * NEWS: + Mention C99 requirement. + [f12a7b68e0b2] + +2023-06-20 Todd C. Miller + + * docs/sudoers.man.in, docs/sudoers.mdoc.in: + Reference SETENV-related settings in the command environment + section. + + Based on GitHub PR #273 from Ilya Kulakov. + [f8b5ef533800] + + * INSTALL.md: + Sudo requires a C99 compiler due to the use of flexible array + members. + [bb80666c7382] + + * Merge pull request #266 from AtariDreams/c99 + + Do variable length arrays the C99 way + [690561b17683] + +2023-06-19 Todd C. Miller + + * Merge pull request #269 from trackers-lover/main + + correct the return value type of function alias_find_used + [30dc3eb4a59a] + +2023-06-18 Todd C. Miller + + * docs/sudoers.man.in, docs/sudoers.mdoc.in: + Clarify that use_pty is on by default starting with 1.9.14. + [984048215229] + + * docs/sudo.man.in, docs/sudo.mdoc.in: + Sudo runs the command in a pty by default in 1.9.14 and above. + [92ec41fdf7c9] + + * plugins/sudoers/sudoers.in: + Add commented out example for disabling use_pty. + [9a59b831f363] + +2023-06-15 Todd C. Miller + + * .circleci/config.yml: + Update Xcode version from 13.2.1 to 13.4.1. + [10bbb25b415e] + +2023-06-14 Todd C. Miller + + * MANIFEST: + Add plugins/sudoers/regress/testsudoers/passwd to MANIFEST. + [016644afd8ae] + + * plugins/sudoers/po/eo.mo, plugins/sudoers/po/eo.po, + plugins/sudoers/po/pl.mo, plugins/sudoers/po/pl.po, po/eo.mo, + po/eo.po, po/pl.mo, po/pl.po: + Updated translations from translationproject.org + [97167b63ffbd] + + * NEWS: + Document recent bug fixes. + [34d8ffa919c6] + + * MANIFEST, plugins/sudoers/regress/testsudoers/group, + plugins/sudoers/regress/testsudoers/passwd, + plugins/sudoers/regress/testsudoers/test22.out.ok, + plugins/sudoers/regress/testsudoers/test22.sh, + plugins/sudoers/regress/testsudoers/test23.out.ok, + plugins/sudoers/regress/testsudoers/test23.sh: + Add tests to exercise recent runas user and group bug fixes. + [20f19831ed34] + + * MANIFEST, plugins/sudoers/regress/testsudoers/passwd, + plugins/sudoers/regress/testsudoers/test21.out.ok, + plugins/sudoers/regress/testsudoers/test21.sh: + Add test to exercise the bug that prevented the group specified via + "sudo -g" from matching when a Runas_Alias was used in the user or + group portion of a Runas_Spec. + [16c0668b5c4b] + +2023-06-13 Todd C. Miller + + * plugins/sudoers/match.c: + runaslist_matches: split out user_list and group_list matching. + + This makes it possible to call the appropriate runas user or group + list match function when resolving aliases instead of calling + runaslist_matches() itself. Fixes a bug that prevented the group + specified via "sudo -g" from matching when a Runas_Alias was used in + the user or group portion of a Runas_Spec. + [3e0885e96418] + + * plugins/sudoers/match.c: + runaslist_matches: remove special case to handle "sudo -g group" + + Now that we are guaranteed to have a runas user list for all sudoers + rules that contain a runas list, we can remove support for the + special case where user_matched is set in the runas group matching + conditional. This fixes a bug where "sudo -u myuser -g mygroup" was + permitted by a rule like "myuser ALL = (root) ALL". + [d80e907efe77] + + * plugins/sudoers/gram.c, plugins/sudoers/gram.y, + plugins/sudoers/regress/sudoers/test27.json.ok, + plugins/sudoers/regress/sudoers/test27.ldif.ok, + plugins/sudoers/regress/sudoers/test27.out.ok: + Populate runasusers even when only a grouplist is specified. + + When a sudoers rule permits the user to run commands as a group, not + a user, we should set the runasusers to single member with the + special MYSELF token. This guarantees that the only time runasusers + will be NULL is when no runaslist is present. + [25c293ae5053] + + * plugins/sudoers/match.c: + runaslist_matches: fix bug when no runas list is specified in + sudoers. + + If a sudoers rule has no runas list, a user-specified runas group + should only be allowed if it matches a group that the default runas + user belongs to. Instead, a missing group check allowed the user run + commands as the default runas user with an arbitrary group. + + This means that a rule like "somebody host = ALL", which should be + equivalent to "somebody host = (root) ALL", had the same effect as + "somebody host = (root:ALL) ALL". + [eeb075b3b79c] + +2023-06-11 Todd C. Miller + + * plugins/python/pyhelpers.h: + Python may be built with 32-bit time_t support on 32-bit platforms. + We need to undef the SIZEOF_TIME_T from pyconfig.h so it does not + conflict with our own. + [c8bf985eb777] + +2023-06-10 Todd C. Miller + + * Merge pull request #272 from millert/main + + Avoid use of variable length arrays and add ctype(3) casts. + [806b2266f6ab] + + * lib/util/lbuf.c: + Avoid use of variable length arrays and add ctype(3) casts. + [d8c80d4905b3] + + * Merge pull request #270 from moehanabi/main + + Add %n$s support for sudo_lbuf_append_v1 + [53ad2cdaaabe] + +2023-06-09 Brilliant Hanabi <130747944+moehanabi@users.noreply.github.com> + + * lib/util/lbuf.c: + Add %n$s support for sudo_lbuf_append_v1 + [f48fa0250fdc] + +2023-06-09 bianguangze + + * plugins/sudoers/alias.c: + correct the return value type of function alias_find_used + [f689f55fef3f] + +2023-06-07 Todd C. Miller + + * plugins/sudoers/po/cs.mo, plugins/sudoers/po/cs.po, + plugins/sudoers/po/de.mo, plugins/sudoers/po/de.po, + plugins/sudoers/po/eo.mo, plugins/sudoers/po/eo.po, + plugins/sudoers/po/fr.mo, plugins/sudoers/po/fr.po, + plugins/sudoers/po/hr.mo, plugins/sudoers/po/hr.po, + plugins/sudoers/po/ko.mo, plugins/sudoers/po/ko.po, + plugins/sudoers/po/ro.mo, plugins/sudoers/po/ro.po, + plugins/sudoers/po/ru.mo, plugins/sudoers/po/ru.po, + plugins/sudoers/po/sr.mo, plugins/sudoers/po/sr.po, + plugins/sudoers/po/uk.mo, plugins/sudoers/po/uk.po, po/cs.mo, + po/cs.po, po/de.mo, po/de.po, po/eo.mo, po/eo.po, po/fr.mo, + po/fr.po, po/hr.mo, po/hr.po, po/ko.mo, po/ko.po, po/ro.mo, + po/ro.po, po/ru.mo, po/ru.po, po/sr.mo, po/sr.po, po/uk.mo, + po/uk.po, po/vi.mo, po/vi.po: + Updated translations from translationproject.org + [966147718ed3] + + * plugins/sudoers/po/sudoers.pot, po/sudo.pot: + Update .pot files for 1.9.14 + [b79b44520c46] + + * NEWS: + Mention Bug #1050 fix. + [c4af7e56a515] + + * docs/sudoers.ldap.man.in, docs/sudoers.ldap.mdoc.in, + plugins/sudoers/ldap.c, plugins/sudoers/ldap_conf.c, + plugins/sudoers/sudo_ldap_conf.h: + Add NETGROUP_QUERY option for servers that can't match + nisNetgroupTriple. This can be used to support netgroup queries on + systems that lack the innetgr() function and where the LDAP server + cannot query the nisNetgroup by nisNetgroupTriple. + [98b293bee424] + +2023-06-06 Todd C. Miller + + * plugins/sudoers/defaults.c, plugins/sudoers/ldap.c, + plugins/sudoers/match.c, plugins/sudoers/parse.h: + sudo_ldap_check_non_unix_group: pass nss pointer to netgr_matches() + This allows us to use the LDAP-specific version of innetgr() when + possible. Also enable "use_netgroups" by default even on systems + without innetgr() since we can now query netgroups directly via + LDAP. + [a443919be48c] + +2023-06-05 Todd C. Miller + + * src/exec_ptrace.c: + Only call ptrace_verify_post_exec() for intercept, not log_subcmds. + [9f55dcdd66cd] + + * NEWS, configure, configure.ac: + sudo 1.9.14 + [73c25828ffc8] + +2023-06-04 Todd C. Miller + + * plugins/sudoers/visudo.c: + run_command: back out changes to run editor in its own process + group. It unnecessarily complicates things to work around bugs in an + OS almost no one runs. + [8790d32a4f99] + + * MANIFEST, include/sudo_util.h, lib/util/Makefile.in, + lib/util/suspend_parent.c, lib/util/util.exp.in, + plugins/sudoers/Makefile.in, src/Makefile.in, src/sudo_exec.h, + src/suspend_parent.c: + Make suspend_parent.c out of lib/util and into src. Nothing else + uses it now. + [69eda3d690e4] + +2023-06-03 Todd C. Miller + + * plugins/sudoers/digestname.c, plugins/sudoers/filedigest.c, + plugins/sudoers/gram.c, plugins/sudoers/gram.y, + plugins/sudoers/parse.h, + plugins/sudoers/regress/parser/check_digest.c, + plugins/sudoers/toke.c, plugins/sudoers/toke.l: + Initialize digest_type to SUDO_DIGEST_INVALID, not -1 and make it + unsigned. This makes the digest type consistently unsigned instead + of a mix of signed (for the -1 value in the tokenizer) and unsigned. + [49ef7c33450f] + +2023-05-25 Todd C. Miller + + * docs/sudo_plugin_python.man.in, docs/sudo_plugin_python.mdoc.in, + etc/codespell.exclude, etc/codespell.ignore, + plugins/sudoers/getdate.c, plugins/sudoers/getdate.y, + plugins/sudoers/pivot.c, plugins/sudoers/visudo.c: + Fix typos and update excluded/ignored codespell lists. + [bdb70620b4e4] + +2023-05-19 Todd C. Miller + + * plugins/sudoers/visudo.c: + run_command: check that ttyfd is not -1 before using it + [990cbd169a37] + +2023-05-18 Rose <83477269+AtariDreams@users.noreply.github.com> + + * include/sudo_event.h, lib/util/event.c, lib/util/rcstr.c, + plugins/sudoers/canon_path.c, plugins/sudoers/ldap_conf.c, + plugins/sudoers/sudo_ldap_conf.h: + Do variable length arrays the C99 way + + Variable length arrays are supported by C99, but having it denoted + as "1" confused the compiler and is not defined. + + Note that because we don't get the inferred NULL terminator, we have + to increase the malloc size by one. + [4e33419e940e] + +2023-05-11 Todd C. Miller + + * plugins/sudoers/visudo.c: + Work around a macOS a kernel bug where tcsetpgrp() does not restart. + + I reported this bug to Apple over 12 years ago. + [77871464e563] + + * plugins/sudoers/visudo.c: + run_command: run editor in foreground if visudo is the foreground + process + + The command is now always run in its own process group. If visudo is + run in the foreground, the command is run in the foreground too. + Otherwise, run the command in the background. There is a race + between the tcsetpgrp() call in the parent and the execve() in the + child. If we lose the race and the command needs the controlling + terminal, it will be stopped with SIGTTOU or SIGTTIN, which the + waitpid() loop will handle. + [e8e14e0024da] + + * plugins/sudoers/visudo.c: + Accept carriage return for EOL in addition to newline. + + Since visudo doesn't alter the terminal settings it is possible for + the terminal to have the ONLCR bit set in the output control flags. + In that case, we will get a CR, not a NL when the user presses + enter/return. One way this can happen is if visudo is run in the + background from a shell that supports line editing and the editor + restores the (cbreak-style) terminal mode when it finishes. + [14538e74fd02] + +2023-05-09 Todd C. Miller + + * plugins/sudoers/regress/parser/check_fill.c: + check_fill: sudoers_strict() is now a function, not a global + variable + [8b8e72d283df] + + * plugins/sudoers/parse.h, plugins/sudoers/sudoers.h, + plugins/sudoers/toke.h: + Move parser prototypes / externs from sudoers.h to parse.h or + toke.h. + [79a52390c46b] + + * plugins/sudoers/file.c, plugins/sudoers/sudoers.c: + parse.h is already included by sudoers.h. + [f6faa3f782a2] + + * plugins/sudoers/policy.c, plugins/sudoers/testsudoers.c, + plugins/sudoers/visudo.c: + Rename parser_conf -> sudoers_conf in all but the parser itself. + [61614621341e] + +2023-05-08 Todd C. Miller + + * plugins/sudoers/cvtsudoers.c, plugins/sudoers/file.c, + plugins/sudoers/gram.c, plugins/sudoers/gram.y, + plugins/sudoers/parse.h, plugins/sudoers/policy.c, + plugins/sudoers/regress/fuzz/fuzz_sudoers.c, + plugins/sudoers/sudoers.h, plugins/sudoers/testsudoers.c, + plugins/sudoers/visudo.c: + Move sudoers search path to struct sudoers_parser_config. + + That way we can avoid passing it to init_parser() directly. We still + need sudoers_search_path to be shared between the lexer and the + parser. + [5e6c6a08aded] + + * plugins/sudoers/cvtsudoers.c, plugins/sudoers/file.c, + plugins/sudoers/gram.c, plugins/sudoers/gram.y, + plugins/sudoers/parse.h, plugins/sudoers/policy.c, + plugins/sudoers/regress/fuzz/fuzz_sudoers.c, + plugins/sudoers/set_perms.c, plugins/sudoers/sudoers.c, + plugins/sudoers/sudoers.h, plugins/sudoers/testsudoers.c, + plugins/sudoers/toke.c, plugins/sudoers/toke.l, + plugins/sudoers/toke_util.c, plugins/sudoers/visudo.c: + Add struct sudoers_parser_config and pass it to init_parser(). + + This struct contains parser configuration such as the sudoers file + uid/gid/mode and parse flags such as verbose, strict and recovery. + [ed8042e7a49a] + + * plugins/sudoers/toke.c, plugins/sudoers/toke.l: + push_include_int: Avoid passing close(2) a negative value on error. + Coverity CID 314108 + [bbbdfa87543e] + + * plugins/sudoers/ldap.c: + Eliminate dead store. Coverity CID 315032. + [6b48998e4db1] + +2023-05-05 Todd C. Miller + + * include/sudo_iolog.h, lib/iolog/iolog_gets.c: + iolog_gets: change size parameter to int to match fgets/gzgets + + Return an error, setting errno to EINVAL, for negative sizes. + [27534bcb58a7] + +2023-05-04 Todd C. Miller + + * plugins/sudoers/policy.c, plugins/sudoers/sudoers.c, + plugins/sudoers/sudoers.h: + Rename force_umask to override_umask and make it private to + sudoers.c. + + Add getter for policy.c. + [1c8a56c767f3] + + * plugins/sudoers/check.h, plugins/sudoers/regress/fuzz/fuzz_stubs.c, + plugins/sudoers/set_perms.c, plugins/sudoers/sudoers.c, + plugins/sudoers/sudoers.h, plugins/sudoers/timestamp.c: + Make timestamp_uid and timestamp_gid private to timestamp.c. + + Add getter (for set_perms.c) and setter (for sudoers.c). + [ad49d0ee7e6f] + + * plugins/sudoers/auth/bsdauth.c, plugins/sudoers/auth/sudo_auth.h, + plugins/sudoers/policy.c, + plugins/sudoers/regress/fuzz/fuzz_policy.c, + plugins/sudoers/sudoers.h: + Make login_style private to bsdauth.c + + Add a setter for policy.c to handle auth_type from the front-end. + [962af1d3d0fd] + +2023-05-03 Todd C. Miller + + * lib/util/sudo_debug.c: + Back out last change, len must be int, not size_t, for %.*s. + [a82bbd86fa29] + + * src/exec_pty.c: + Use a "%s" format instead of using a translated string as the + format. + [1a73a1b4fa94] + + * Merge pull request #260 from AtariDreams/size_t + + Prefer size_t over int, as casting can take extra instructions + [c0fd1027e105] + +2023-05-03 Rose <83477269+AtariDreams@users.noreply.github.com> + + * lib/eventlog/parse_json.c, lib/util/sudo_debug.c, + plugins/sudoers/fmtsudoers.c: + Prefer size_t over int, as casting can take extra instructions + [96fc138b2009] + +2023-05-02 Todd C. Miller + + * plugins/sudoers/cvtsudoers.c, plugins/sudoers/gram.c, + plugins/sudoers/gram.y, plugins/sudoers/parse.h, + plugins/sudoers/regress/fuzz/fuzz_sudoers.c, + plugins/sudoers/testsudoers.c, plugins/sudoers/visudo.c: + Rename init_parser_ext() to init_parser() and remove old wrapper. + + There was only one consumer of the init_parser() wrapper now that + reset_parser() has been introduced. + [4be1b8965ce6] + + * plugins/sudoers/gram.c, plugins/sudoers/gram.y, + plugins/sudoers/parse.h, + plugins/sudoers/regress/fuzz/fuzz_sudoers.c, + plugins/sudoers/sudoers.c: + Add reset_parser() and use in place of init_parser(NULL). + [f85227ac1182] + + * plugins/sudoers/ldap.c, plugins/sudoers/ldap_conf.c, + plugins/sudoers/policy.c, plugins/sudoers/sudoers.h: + Make path_ldap_conf and path_ldap_secret private to policy.c. + + Add getters for both so the ldap code can access them. + [90a2107d6ec7] + + * plugins/sudoers/file.c, plugins/sudoers/policy.c, + plugins/sudoers/sudoers.h, plugins/sudoers/toke.c, + plugins/sudoers/toke.l, plugins/sudoers/visudo.c: + Make sudoers_file private to policy.c and visudo.c. + + We just need a way for the policy (and visudo) to override the + default sudoers path. This adds a getter to be used in file.c when + sudoers is first opened. + [657aa80f3af8] + + * plugins/sudoers/gram.c, plugins/sudoers/gram.y, + plugins/sudoers/parse.h, + plugins/sudoers/regress/fuzz/fuzz_sudoers.c, + plugins/sudoers/sudoers.h, plugins/sudoers/testsudoers.c, + plugins/sudoers/toke.c, plugins/sudoers/toke.l, + plugins/sudoers/visudo.c: + Support adminconfdir for relative include paths in sudoers. + [7ebdbd46b47b] + + * plugins/sudoers/visudo.c: + Track the destination sudoers path for each parsed file. + + When adminconfdir is enabled, the destination pathh may be different + from the path we opened. We always store an edited file in the + adminconfdir (if enabled). This makes it possible to use visudo when + /etc/sudoers is located on a read-only file system. + [de896a012d81] + + * INSTALL.md, Makefile.in, configure, configure.ac, docs/Makefile.in, + examples/Makefile.in, include/Makefile.in, lib/util/Makefile.in, + lib/zlib/Makefile.in, logsrvd/Makefile.in, m4/sudo.m4, + plugins/audit_json/Makefile.in, plugins/group_file/Makefile.in, + plugins/python/Makefile.in, plugins/sample/Makefile.in, + plugins/sample_approval/Makefile.in, plugins/sudoers/Makefile.in, + plugins/system_group/Makefile.in, src/Makefile.in: + Add adminconfdir and --enable-adminconf to set it. Configuration + paths in sudo are now a colon-separated list of files with the + adminconfdir instance first (if enabled), followed by a sysconfdir + instance. + [be1f672878ae] + + * configure, configure.ac, include/sudo_util.h, lib/util/Makefile.in, + lib/util/secure_path.c, lib/util/sudo_conf.c, lib/util/util.exp.in, + logsrvd/Makefile.in, logsrvd/logsrvd.c, logsrvd/logsrvd_conf.c, + plugins/sudoers/Makefile.in, plugins/sudoers/cvtsudoers.c, + plugins/sudoers/sudoers.c, src/Makefile.in: + Convert config file paths to colon-separated path list. This means + that _PATH_SUDO_CONF, _PATH_SUDOERS, _PATH_SUDO_LOGSRVD_CONF, and + _PATH_CVTSUDOERS_CONF can now specify multiple files. The first file + that exists is used. + [902d9da6a941] + + * plugins/sudoers/cvtsudoers.c, plugins/sudoers/file.c, + plugins/sudoers/regress/fuzz/fuzz_sudoers.c, + plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.c, + plugins/sudoers/sudoers.c, plugins/sudoers/sudoers.h, + plugins/sudoers/testsudoers.c, plugins/sudoers/toke.c, + plugins/sudoers/toke.l, plugins/sudoers/visudo.c: + Support sudoers_file being a colon-separated path of files. The + first file found is used. + [bebe005e2d32] + +2023-05-01 Todd C. Miller + + * config.h.in, configure: + Regenerate with latest autoconf from git. + [0996570205bf] + +2023-04-28 Todd C. Miller + + * logsrvd/logsrvd_conf.c: + No longer need to set AI_NUMERICSERV while fuzzing. + + Now that getaddrinfo() is stubbed out while fuzzing we can remove + the hack that set AI_NUMERICSERV. + [8e3deb584c1c] + +2023-04-26 Todd C. Miller + + * logsrvd/regress/fuzz/fuzz_logsrvd_conf.c, + plugins/sudoers/regress/fuzz/fuzz_policy.c: + getaddrinfo stub: set sin_port + [019eb2da9944] + + * logsrvd/regress/fuzz/fuzz_logsrvd_conf.c, + plugins/sudoers/regress/fuzz/fuzz_policy.c: + Avoid NULL deref in stub getaddrinfo() when nodename is NULL. Also + add support for parsing servname. We only need to support a subset + of getaddrinfo() functionality in the fuzzer. + [a605cc43bbaf] + + * configure, m4/hardening.m4: + Add missing stdio.h include for the _FORTIFY_SOURCE=2 check. + Implementations of _FORTIFY_SOURCE require the header file to be + included. Also remove the useless test of an empty program with + _FORTIFY_SOURCE defined. Pointed out by Florian Weimer. + [511b9bdddbdc] + + * configure, m4/ldap.m4: + Use ldap_msgfree() instead of ldap_init() for the lber.h test. The + ldap_init() function is marked as deprecated and not defined by + default on some systems. This can cause an error for compilers that + do not support implicit function declarations. From Florian Weimer. + [1b1ce2072403] + +2023-04-25 Todd C. Miller + + * logsrvd/regress/fuzz/fuzz_logsrvd_conf.c: + Include arpa/inet.h for inet_pton() prototype. + [50d3b09376f7] + + * logsrvd/regress/fuzz/fuzz_logsrvd_conf.c: + Add netdb.h for struct addrinfo and EAI_* error codes. + [92d33c6f8a23] + + * logsrvd/regress/fuzz/fuzz_logsrvd_conf.c: + Stub out getaddrinfo() and freeaddrinfo(). We may not be able have + access to DNS in the fuzzing environment. + [b3d2e6c04076] + + * lib/eventlog/regress/eventlog_store/store_sudo_test.c: + Plug memory leaks in store_sudo_test found by LSAN. + [5f1d68d01c0c] + +2023-04-24 Todd C. Miller + + * src/limits.c: + disable_coredump: only change the soft limit, leave the hard limit + as-is This should avoid problems on Linux in cases where sudo does + not have CAP_SYS_RESOURCE which may be the case in an unprivileged + container. GitHub issue #42 + [4e65c3923119] + +2023-04-19 Todd C. Miller + + * scripts/build_pkgs: + Add basic support for remote power on/off via net-snmp. + [ca021941fd58] + + * src/exec.c: + More accurate description of what happens for "sudo -b". + [a9158169fcac] + + * src/exec_pty.c: + Better support for "sudo -b" when running the command in a pty. + + When a command is run via "sudo -b" it has no access to terminal + input. In non-pty mode, the command runs in an orphaned process + group and reads from the controlling terminal fail with EIO. We + cannot do the same while running in a pty but if we set stdin to a + half-closed pipe, reads from it will get EOF. That is close enough. + [a284611a18fd] + +2023-04-18 Todd C. Miller + + * src/exec_nopty.c, src/exec_pty.c, src/selinux.c, src/sudo.h, + src/ttyname.c: + Avoid calling isatty()/ttyname() on std{in,out,err} if not a char + dev. + + The user controls these fds so we should avoid calling ioctl(2) on + them unless they correspond to actual character device files. + [745430b563db] + + * src/parse_args.c, src/sudo_usage.h.in: + Hard-code usage() and help() for an 80-column terminal. + + Trying to tailor the help and usage output to the terminal width is + simply not worth it and could be abused to mark a socket as + "trusted" on Linux if there are additional kernel bugs like + CVE-2023-2002. + [d06fa6322ffb] + + * config.h.in, configure, configure.ac, src/sudo.c, + src/sudo_usage.h.in: + Move CONFIGURE_ARGS from sudo_usage.h.in to config.h.in. + [e3149b6f4392] + +2023-04-17 Todd C. Miller + + * lib/util/ttysize.c, src/sudo.c: + get_user_info: call sudo_get_ttysize() even if no /dev/tty We still + want to initialize rows and cols based on the environment if + possible. + [4f3801c2f264] + +2023-04-16 Todd C. Miller + + * src/parse_args.c: + Get the tty size using stdout, not stderr, when printing help + output. While usage() prints to stderr, help() prints to stdout. + [0bdf411ebc7f] + + * src/sudo.c: + get_user_info: pass sudo_get_ttysize() the fd of /dev/tty, not + stderr. Both the plugin API and the main event loop expect + lines/cols to refer to the user's terminal, so using /dev/tty is + better here. + [2e7ba199f4c7] + + * include/sudo_util.h, lib/util/ttysize.c, lib/util/util.exp.in, + plugins/sudoers/sudoreplay.c, src/parse_args.c, src/sudo.c: + Add an fd argument to sudo_get_ttysize() instead of always using + stderr. + + For sudoreplay we open /dev/tty, so use that instead of stderr when + determining the terminal size. + [4afc292d3cf4] + + * lib/util/ttysize.c: + Check whether stderr is a tty before trying TIOCGWINSZ. + [4a0d367e49c6] + +2023-04-14 Todd C. Miller + + * configure, configure.ac: + Use -no-undefined on macOS to avoid "-undefined dynamic_lookup" + warnings. + + Starting with macOS 13, the linker warns when "-undefined + dynamic_lookup" is used. This is added by libtool by default on + macOS but we can suppress it by passing -no-undefined to libtool. + [afeb9acd894c] + +2023-04-08 Todd C. Miller + + * docker/debian/latest/Dockerfile, docker/debian/testing/Dockerfile, + docker/fedora/latest/Dockerfile, docker/fedora/rawhide/Dockerfile, + docker/ubuntu/devel/Dockerfile, docker/ubuntu/latest/Dockerfile, + docker/ubuntu/rolling/Dockerfile: + Add make to Dockerfile and sort packages. + [fa937cbf8a23] + +2023-04-06 Todd C. Miller + + * docs/UPGRADE.md, docs/sudoers.man.in, docs/sudoers.mdoc.in, + plugins/sudoers/defaults.c: + Enable the use_pty option by default for sudo 1.9.14. + + GitHub issue #258 + [86a1a6da1878] + +2023-04-05 Todd C. Miller + + * plugins/sudoers/policy.c, plugins/sudoers/sudoers.c, + plugins/sudoers/sudoers.h: + Split up the monolithic sudoers_policy_main() function. + + This splits the code to find the command, perform a sudoers lookup, + ask for a password as needed, and perform post-lokup checks out into + sudoers_check_common(). The old sudoers_policy_main() has been + replaced by sudoers_check_cmnd() (called by sudoers_policy_check()), + sudoers_validate_user() (called by sudoers_policy_validate()) and + sudoers_list() (called by sudoers_policy_list()). The list_user + lookup is now performed in sudoers_list(). + [59e0b245c776] + + * plugins/sudoers/sudoers.c: + Move the root_sudo check until after we apply per-command Defaults. + + It is possible, though unlikely, for "root_sudo" to be used in a + per-command Defaults statement. + [ca1903576e0d] + +2023-04-01 Todd C. Miller + + * plugins/sudoers/sudoers.c: + sudoers_policy_main: restore locale if sudoers_lookup() fails. + + Previously, if sudoers_lookup() set VALIDATE_ERROR, the sudoers + locale would still be in effect instead of the original locale. + [24df4eebbfc8] + + * plugins/sudoers/parse.c: + sudoers_lookup_pseudo: remove validated function argument + + This was always set to FLAG_NO_USER|FLAG_NO_HOST which are cleared + at the top of the fuction. Make validated a local variables, + initialized to 0, instead. No change in behavior. + [72e6207850fc] + +2023-03-31 Todd C. Miller + + * plugins/sudoers/audit.c, plugins/sudoers/iolog.c: + The I/O log file name is not just the basename of the full + iolog_path. The audit plugin already has the correct value for + iolog_file, don't overwrite it with basename(iolog_path). In the + future we may wish to pass in iolog_file and iolog_dir in addition + to iolog_path. Fixes Bug #1046. + [f272de885273] + +2023-03-29 Todd C. Miller + + * plugins/sudoers/sudoers.c: + Warn with "unknown user" not "unknown uid" if user cannot be + resolved. Prior to sudo 1.8 this was after a getpwuid() but now we + use getpwnam(). + [9a523881df41] + + * plugins/sudoers/sudoers.c: + Set timestamp_uid and timestamp_gid via a callback. This also makes + it possible to include the location of the line in the sudoers file + in the warning message (and mail). + [5588cf3cb55b] + +2023-03-28 Todd C. Miller + + * docs/sudoers.ldap.man.in, docs/sudoers.ldap.mdoc.in: + Fix display of escape sequencees in ldapsearch example. + [08dc98162160] + + * docs/sudoers.man.in, docs/sudoers.mdoc.in: + White space is not allowed between Defaults and '@', ':', '!', '>'. + The EBNF made it appear that this is allowed when it really is not. + [74bba755afaf] + +2023-03-27 Todd C. Miller + + * src/edit_open.c, src/exec.c, src/exec_intercept.c, + src/exec_intercept.h, src/exec_monitor.c, src/exec_nopty.c, + src/exec_pty.c, src/sudo.c, src/sudo.h, src/sudo_edit.c, + src/sudo_edit.h, src/sudo_exec.h, src/tgetpass.c: + Make struct {command,user}_details pointers const where possible. + [dcfa95a24789] + + * src/sudo.c, src/sudo.h, src/sudo_edit.c, src/tgetpass.c: + Make user_details private to main. + [43477263455b] + + * src/exec.c, src/exec_nopty.c, src/exec_pty.c, src/parse_args.c, + src/sudo.c, src/sudo.h, src/sudo_edit.c, src/sudo_exec.h, + src/tgetpass.c: + Make user_details private to sudo.c. + [fec5df7605dc] + + * configure, scripts/config.sub: + Regenerate with the autoconf 2.72c snapshot. + [6dda0f9323b1] + +2023-03-25 Todd C. Miller + + * src/parse_args.c: + Use sudo_get_ttysize() in help() and usage(). This eliminates a + dependency on the user_details global. + [ecbc8afc1630] + + * src/exec.c, src/sudo.c, src/sudo.h: + Store submitcwd (from user_details) in struct command_details. This + eliminates use of the user_details global from exec_setup(). + [ed37b2a451f8] + +2023-03-24 Todd C. Miller + + * src/utmp.c: + utmp_fill: user is now always non-NULL, no need for user_details. + [76bdecaaad07] + + * src/parse_args.c, src/sudo.c, src/sudo.h: + Remove list_user global. + [fd397db04688] + + * src/conversation.c: + No need to declare tgetpass_flags, it is already in sudo.h. + [c7e1b8ef75c8] + + * src/sudo.c: + No need for sudo_mode to be global anymore. + [f746eba12bd9] + + * src/sudo.c: + Make command_details private to main(). + [311fd705cce4] + + * src/exec_iolog.c, src/exec_nopty.c, src/exec_pty.c, src/sudo_exec.h: + Make iobufs private to exec_iolog.c. + [80861a209ddd] + + * src/sudo_exec.h: + Remove ttymode and its associated values. + [efb4e04097ab] + + * src/exec.c, src/exec_pty.c, src/get_pty.c, src/sudo.h, + src/sudo_exec.h: + Move ptyname to struct exec_closure + [d4080a4262bd] + + * src/exec_monitor.c, src/exec_pty.c, src/sudo_exec.h: + Move pty_make_controlling() to exec_monitor.c where it is called. We + can use details->tty to access the pty follower path. + [9875f0b136f4] + + * src/exec_pty.c, src/sudo.c: + Eliminate utmp_user global, just use the value in struct command + details. + [95b28adcb0f3] + + * src/exec_iolog.c, src/exec_nopty.c, src/exec_pty.c, src/sudo_exec.h: + Replace tty_mode global with term_raw flag in struct exec_closure. + + The pty_cleanup hook needs access to the closure so add + pty_cleanup_init() to store a pointer to the closure for use by + pty_cleanup_hook(). + [cc01f0da46d9] + + * src/exec_monitor.c, src/exec_pty.c, src/sudo_exec.h: + Register pty cleanup function in exec_pty(), not exec_cmnd_pty(). We + want it to execute in the main sudo process, not the monitor. + [279e370adc01] + + * src/exec_iolog.c: + Make ttyblock private to exec_iolog.c + [61243eba350d] + +2023-03-23 Todd C. Miller + + * src/exec_pty.c, src/sudo_exec.h: + exec_pty.c: move foreground flag to struct exec_closure. Also make + pipeline flag private to exec_pty() and remove the unneeded + check_foreground() prototype. + [dd25f1d91008] + + * src/exec_pty.c: + On resume, always sync the pty terminal settings with /dev/tty. + + Changes made to the terminal settings while the command is suspended + are now reflected in the pty when the command is resumed. This is + more consistent with the non-pty behavior and allows for the removal + of the "tty_initialized" global. One downside to this change is that + if a terminal-based program using the pty is stopped with SIGSTOP it + may have the wrong terminal settings on resume. However, this is no + different from the non-pty case. + [3e59765dea31] + + * lib/util/suspend_parent.c, lib/util/term.c: + Correct a comment. + [393a4d472507] + +2023-03-22 Todd C. Miller + + * .github/FUNDING.yml: + GitHub sponsor settings. + [7bd778b9adef] + + * config.h.in, configure, configure.ac: + Use built-in tests for bit types instead of using AC_CHECK_TYPES. + This should be more portable as it handles the quirks of some older + systems. + [7e471f2a914d] + + * plugins/sudoers/visudo.c, src/regress/intercept/test_ptrace.c: + Quiet compiler warnings on systems where pid_t is not an int. + Historically, pid_t was a long on some 32-bit systems like Solaris. + [c31393da893d] + + * plugins/sudoers/visudo.c: + Silence "used uninitialized" false positives with older gcc + versions. + [40f0ee142249] + + * src/exec_pty.c: + exec_pty: always copy the terminal settings from /dev/tty the pty. + Previously, we only did this when running in the foreground but this + can cause problems when running a program that reads the terminal + settings or window size in the background. If sudo is running in the + background, the terminal settings will be updated if it transitions + to the foreground process. Based on a suggestion from From Duncan + Overbruck. + [51a70eadc7fc] + + * src/exec_pty.c: + check_foreground: use SFD_LEADER not SFD_FOLLOWER (which was + closed). Also use SFD_LEADER for sudo_term_copy() in exec_pty() for + consistency. From Duncan Overbruck. + [172962b90aa6] + + * src/exec_pty.c: + suspend_sudo_pty: fix cut & pasto in last commit to catch SIGCONT. + Also set sa.sa_handler to SIG_DFL instead of SIG_IGN. There is no + difference for SIGCONT but it means we can re-use sa as-is later. + [e07725c8c939] + +2023-03-21 Todd C. Miller + + * src/exec_pty.c: + Catch SIGCONT and restore terminal settings on resume from SIGSTOP. + While we cannot catch SIGSTOP, we _can_ catch SIGCONT and set + /dev/tty to raw mode when running in the foreground. Ignore SIGCONT + in suspend_sudo_pty() so we don't call resume_terminal() twice. + [b5b2d739e44d] + + * src/exec_monitor.c, src/exec_pty.c: + Only convert a signal number to a name if we are going to use it. It + is mostly used for debug logging. + [225c3630ffff] + + * src/exec_monitor.c, src/exec_pty.c, src/sudo.h: + Move updating of the window size back to the main sudo process. We + can use the leader file descriptor with TIOCGWINSZ to set the window + size of the pty. Thanks to Duncan Overbruck for the hint. + [6e3f7622038a] + + * plugins/sudoers/visudo.c: + visudo: restore controlling terminal after running the editor. + Otherwise, visudo will get SIGTTOU if it tries to write to the + terminal after the editor finishes. Also avoid races by setting the + process group ID in both the parent and child, and grant the + controlling terminal in the parent, not the child. + [c0f339a84be8] + +2023-03-20 Todd C. Miller + + * docs/visudo.man.in, docs/visudo.mdoc.in, plugins/sudoers/gram.c, + plugins/sudoers/gram.y, plugins/sudoers/sudoers.h, + plugins/sudoers/toke.c, plugins/sudoers/toke.h, + plugins/sudoers/toke.l: + Warn about ignored files in sudoers.d in visudo. + [61f8def2d666] + + * plugins/sudoers/cvtsudoers.c, plugins/sudoers/gram.c, + plugins/sudoers/gram.y, plugins/sudoers/parse.h, + plugins/sudoers/regress/fuzz/fuzz_sudoers.c, + plugins/sudoers/sudoers.c, plugins/sudoers/sudoers.h, + plugins/sudoers/testsudoers.c, plugins/sudoers/toke.c, + plugins/sudoers/toke.l, plugins/sudoers/visudo.c: + Replace sudoers_warnings with sudoers_verbose. This is now an int, + with values > 1 reserved for visudo. + [d1d7b559b904] + + * plugins/sudoers/gram.c, plugins/sudoers/gram.y, + plugins/sudoers/toke.c, plugins/sudoers/toke.h, + plugins/sudoers/toke.l: + Split push_include() into push_include() and push_includedir(). This + moves the "isdir" function argument to the internal version. + [d454beb6eebf] + +2023-03-17 Todd C. Miller + + * plugins/sudoers/file.c, plugins/sudoers/ldap.c, + plugins/sudoers/regress/fuzz/fuzz_policy.c, + plugins/sudoers/regress/fuzz/fuzz_stubs.c, + plugins/sudoers/regress/fuzz/fuzz_sudoers.c, plugins/sudoers/sssd.c, + plugins/sudoers/sudo_nss.c, plugins/sudoers/sudo_nss.h: + Pass around const struct sudo_nss pointers where possible. + [d13437078d19] + + * plugins/sudoers/alias.c, plugins/sudoers/cvtsudoers.c, + plugins/sudoers/cvtsudoers.h, plugins/sudoers/cvtsudoers_csv.c, + plugins/sudoers/cvtsudoers_json.c, + plugins/sudoers/cvtsudoers_ldif.c, plugins/sudoers/defaults.c, + plugins/sudoers/defaults.h, plugins/sudoers/fmtsudoers.c, + plugins/sudoers/fmtsudoers_cvt.c, plugins/sudoers/match.c, + plugins/sudoers/parse.h: + Pass around const struct sudoers_parse_tree pointers where possible. + [1aa8b9069b39] + + * plugins/sudoers/sudo_ldap.h, plugins/sudoers/sudo_ldap_conf.h: + Move non-config-related macros to from sudo_ldap_conf.h to + sudo_ldap.h. + [16e67a765a30] + +2023-03-16 Todd C. Miller + + * MANIFEST, config.h.in, configure, configure.ac, + include/sudo_compat.h, lib/util/Makefile.in, lib/util/getcwd.c, + scripts/mkdep.pl: + Remove portable getcwd.c, nothing uses it anymore. Any operating + system supported by sudo already includes getcwd(3). + [8f0584066f6f] + + * src/Makefile.in: + Use LIBPROTOBUF_C and LIBUTIL variables and use them. + [062142fa5ae8] + +2023-03-15 Todd C. Miller + + * include/sudo_util.h: + Remove now-unused sudo_timeval* macros. + [3448dce21b9c] + + * lib/util/nanosleep.c: + nanosleep: clear remainder on successful completion Also switch to + doing everything in terms of struct timespec except for the actual + select(2) call. + [d67451eb618e] + + * lib/eventlog/Makefile.in, lib/iolog/Makefile.in: + Add lib dependencies for fuzzer and test targets. + [60605bcc3905] + + * lib/eventlog/eventlog_free.c: + eventlog_free: free peeraddr + [42670e45e57f] + + * plugins/sudoers/ldap_innetgr.c: + sudo_ldap_netgroup_match_str: "-" in a netgroup can never match. We + already check for a NULL value above so "str == NULL" is always + false. Found by PVS-Studio. + [c9cfdd013e92] + +2023-03-14 Todd C. Miller + + * lib/iolog/Makefile.in: + Fix static compilation. + [5a18337c03d3] + + * MANIFEST: + Replace eventlog_json.h with parse_json.h. + [cc68fe24ee0d] + + * lib/eventlog/eventlog_free.c, lib/eventlog/parse_json.c: + Add support for parsing all fields of struct eventlog. + [3828e55bdaff] + +2023-03-13 Todd C. Miller + + * MANIFEST, lib/eventlog/Makefile.in, + lib/eventlog/regress/eventlog_store/store_json_test.c, + lib/eventlog/regress/eventlog_store/store_sudo_test.c, + lib/eventlog/regress/eventlog_store/test1.json.in, + lib/eventlog/regress/eventlog_store/test1.json.out.ok, + lib/eventlog/regress/eventlog_store/test1.sudo.out.ok, + lib/eventlog/regress/eventlog_store/test2.json.in, + lib/eventlog/regress/eventlog_store/test2.json.out.ok, + lib/eventlog/regress/eventlog_store/test2.sudo.out.ok, + lib/eventlog/regress/eventlog_store/test3.json.in, + lib/eventlog/regress/eventlog_store/test3.json.out.ok, + lib/eventlog/regress/eventlog_store/test3.sudo.out.ok, + lib/eventlog/regress/eventlog_store/test4.json.in, + lib/eventlog/regress/eventlog_store/test4.json.out.ok, + lib/eventlog/regress/eventlog_store/test4.sudo.out.ok, + lib/eventlog/regress/parse_json/check_parse_json.c: + Add tests for JSON and sudo-style log output. + [3a923f86fff2] + + * plugins/sudoers/match.c: + Declare domain even if the system lacks innetgr(). Fixes a build + error on musl-based systems like Alpine. + [34cfa5ad4cdc] + + * lib/eventlog/Makefile.in: + Add missing definition of $(SED). + [9a614b90c852] + + * MANIFEST, include/sudo_eventlog.h, lib/eventlog/Makefile.in, + lib/eventlog/parse_json.c, lib/eventlog/parse_json.h, + lib/eventlog/regress/parse_json/check_parse_json.c, + lib/eventlog/regress/parse_json/test1.in, + lib/eventlog/regress/parse_json/test2.in, + lib/eventlog/regress/parse_json/test2.out.ok, + lib/eventlog/regress/parse_json/test3.in, + lib/eventlog/regress/parse_json/test3.out.ok, lib/iolog/Makefile.in, + lib/iolog/iolog_json.c, lib/iolog/iolog_json.h, + lib/iolog/regress/fuzz/fuzz_iolog_json.c, + lib/iolog/regress/iolog_json/check_iolog_json.c, + lib/iolog/regress/iolog_json/test1.in, + lib/iolog/regress/iolog_json/test2.in, + lib/iolog/regress/iolog_json/test2.out.ok, + lib/iolog/regress/iolog_json/test3.in, + lib/iolog/regress/iolog_json/test3.out.ok: + Move JSON log parsing from libsudo_iolog.la to libsudo_eventlog.la + It will be used in the upcoming log output tests. + [1a8dd741b666] + + * lib/eventlog/eventlog.c: + Add missing " ; " separator between environment variables and + command. This is a regression introduced in sudo 1.9.13. GitHub + issue #254. + [a3c09b724b7a] + +2023-03-12 Todd C. Miller + + * docs/sudoers.ldap.man.in, docs/sudoers.ldap.mdoc.in: + Add example to verify support for searching by nisNetgroupTriple. + [090ffa785e56] + +2023-03-11 Todd C. Miller + + * plugins/sudoers/gc.c: + Remove unused sudoers_gc_init() function. + [b2ee61f8f11d] + +2023-03-10 Todd C. Miller + + * docs/sudoers.ldap.man.in, docs/sudoers.ldap.mdoc.in: + Sudo now does its own netgroup lookups if NETGROUP_BASE is set. + Previously, it only performed netgroup queries to determine the list + of netgroups a user was a member of. + [932613f6868a] + + * plugins/sudoers/regress/fuzz/fuzz_policy.c, + plugins/sudoers/sudoers.c: + sudoers_cleanup: free cached environment before running g/c. Avoids + a double free in fuzz_policy. + [e616d4a038b6] + + * plugins/sudoers/policy.c, plugins/sudoers/sudoers.c: + sudoers_cleanup: run the garbage collector at the end + [cbc28a012f8b] + + * plugins/sudoers/sudoers.c: + Plugin a memory leak in intercept mode. + [f63fb51ff972] + + * src/exec_intercept.c: + Sync non-intercept version of intercept_cleanup() declaration. + [712ff6c2f6bd] + + * plugins/sudoers/ldap_innetgr.c: + Plug memory leak if ldap_get_option() fails with LDAP_NO_MEMORY. + [0be36e3e9473] + + * src/exec.c, src/exec_intercept.c, src/sudo_exec.h: + Plug a memory leak with ptrace-based intercept. + [3b411be9fe37] + + * src/exec_intercept.c: + Plug memory leak when log_subcmds is enabled. + [1d5b21665ced] + + * lib/util/suspend_parent.c: + Pass closure to callback, not the callback pointer itself. + [a4e433840f16] + + * MANIFEST, configure, m4/ldap.m4, plugins/sudoers/Makefile.in, + plugins/sudoers/ldap.c, plugins/sudoers/ldap_innetgr.c, + plugins/sudoers/sudo_ldap.h, scripts/mkdep.pl: + Add LDAP-specific innetgr() implementation. Wheh netgroup_base is + set we now do out own netgroup lookups using LDAP. Previously, LDAP + was queried directly to get a list of the netgroups the user belongs + to but other netgroups queries went through innetgr(3). This makes + it possible to use netgroups in LDAP sudoers on systems that don't + have an innetgr() function. GitHub issue #251. + [aa7304a533e0] + + * plugins/sudoers/ldap.c, plugins/sudoers/ldap_conf.c, + plugins/sudoers/ldap_util.c, plugins/sudoers/sudo_ldap.h: + Move some functions from ldap.c to ldap_util.c. These will be used + by the LDAP innetgr() implementation. + [70fd74041c5d] + +2023-03-08 Todd C. Miller + + * lib/zlib/Makefile.in: + fix typo in uninstall target + [e3c1b8427d01] + + * Merge pull request #252 from bin-ly/main + + fix typo in uninstall target + [4a1d3542345c] + +2023-03-09 bin-ly + + * lib/util/Makefile.in: + fix command error for lib/util/Makefile.in + [7dd4e9e6d976] + +2023-03-08 Todd C. Miller + + * plugins/sudoers/cvtsudoers.c, plugins/sudoers/file.c, + plugins/sudoers/gram.c, plugins/sudoers/gram.y, + plugins/sudoers/ldap.c, plugins/sudoers/match.c, + plugins/sudoers/parse.h, + plugins/sudoers/regress/fuzz/fuzz_sudoers.c, + plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.c, + plugins/sudoers/sssd.c, plugins/sudoers/sudo_nss.h: + Add per-source innetgr function pointer and use it in + netgr_matches(). This will be used to implement LDAP-specific + netgroup lookups when netgroup_base is set in ldap.conf. + [f7c89d6e8d6b] + +2023-03-07 Todd C. Miller + + * MANIFEST, lib/util/Makefile.in, + lib/util/regress/digest/digest_test.c: + Add tests for SHA2 digest support. This uses the NIST byte-oriented + short message test vectors. + [06e01abf7943] + 2023-03-04 Todd C. Miller * .hgtags: Added tag SUDO_1_9_13p3 for changeset 0bdd0b8469e3 - [fc4e872d6d89] [tip] <1.9> + [fc4e872d6d89] <1.9> * NEWS, configure, configure.ac: Sudo 1.9.13p3 [0bdd0b8469e3] [SUDO_1_9_13p3] <1.9> + * NEWS, configure, configure.ac: + Sudo 1.9.13p3 + [0c4b7112dde9] + 2023-03-03 Todd C. Miller * plugins/sudoers/match.c, plugins/sudoers/parse.c, @@ -16,6 +1395,12 @@ with "sudo ALL" for root _is_ allowed to list any user. [a3f7301ba4d3] <1.9> + * plugins/sudoers/match.c, plugins/sudoers/parse.c, + plugins/sudoers/parse.h: + A user with "list" privs for root may not list all users. A user + with "sudo ALL" for root _is_ allowed to list any user. + [fe758ae9d0bb] + * plugins/sudoers/policy.c: sudoers_policy_list: do not set runas_pw to list_pw when listing This change introduced in sudo 1.9.13 is not actually needed. The @@ -23,6 +1408,13 @@ which does not use runas_pw. GitHub issue #248 [84effa5ffaa1] <1.9> + * plugins/sudoers/policy.c: + sudoers_policy_list: do not set runas_pw to list_pw when listing + This change introduced in sudo 1.9.13 is not actually needed. The + "list" pseudo-command checks are performed via runas_matches_pw() + which does not use runas_pw. GitHub issue #248 + [94c1f6d9bc6d] + * plugins/sudoers/logging.c, plugins/sudoers/parse.c, plugins/sudoers/sudoers.c: Fix "sudo -l command args", broken in sudo 1.9.13. The value of @@ -31,8 +1423,24 @@ restores the pre-1.9.13 behavior. GitHub issue #249 [3e1225e7bf33] <1.9> + * plugins/sudoers/logging.c, plugins/sudoers/parse.c, + plugins/sudoers/sudoers.c: + Fix "sudo -l command args", broken in sudo 1.9.13. The value of + user_args should not contain the command to be run in "sudo -l + command args", only the arguments of the command being checked. This + restores the pre-1.9.13 behavior. GitHub issue #249 + [2773b6d91cf1] + 2023-03-01 Todd C. Miller + * logsrvd/logsrv_util.c, logsrvd/logsrvd.c, logsrvd/logsrvd_journal.c, + logsrvd/sendlog.c, plugins/sudoers/log_client.c: + Check for sudo_pow2_roundup() overflow. Calling + sudo_pow2_roundup(INT_MAX+2) will return since there is no power of + 2 larger than INT_MAX+1 that fits in an unsigned int. This is not an + issue in practice since we restrict messages to 2Mib. + [d76de48704d0] + * src/exec_nopty.c, src/exec_pty.c: write_callback: only enable /dev/tty reader if the command is running This fixes a hang when there is /dev/tty data in a buffer to @@ -42,6 +1450,15 @@ reproduce it. [b7ea5b5e6a88] <1.9> + * src/exec_nopty.c, src/exec_pty.c: + write_callback: only enable /dev/tty reader if the command is + running This fixes a hang when there is /dev/tty data in a buffer to + be flushed by the final call to del_io_events(). We do not want to + re-enable the reader when flushing the buffers as part of + pty_finish(). See PR #247 for analysis of the problem and how to + reproduce it. + [2cf041ccbd98] + 2023-02-28 Todd C. Miller * plugins/sudoers/regress/testsudoers/test12.out.ok, @@ -49,10 +1466,19 @@ Test non-fully qualified path name. [0a9e6e83fe15] <1.9> + * plugins/sudoers/regress/testsudoers/test12.out.ok, + plugins/sudoers/regress/testsudoers/test12.sh: + Test non-fully qualified path name. + [b653458b1758] + * plugins/sudoers/Makefile.in: Fix removal of y.tab.[ch] when generating gram.[ch]. [f69c86ecae66] <1.9> + * plugins/sudoers/Makefile.in: + Fix removal of y.tab.[ch] when generating gram.[ch]. + [9c5f5be26ad0] + * MANIFEST, plugins/sudoers/regress/sudoers/test30.in, plugins/sudoers/regress/sudoers/test30.json.ok, plugins/sudoers/regress/sudoers/test30.ldif.ok, @@ -63,6 +1489,16 @@ Add test for using "list" as user, runas and host. [ae2c84c73371] <1.9> + * MANIFEST, plugins/sudoers/regress/sudoers/test30.in, + plugins/sudoers/regress/sudoers/test30.json.ok, + plugins/sudoers/regress/sudoers/test30.ldif.ok, + plugins/sudoers/regress/sudoers/test30.ldif2sudo.ok, + plugins/sudoers/regress/sudoers/test30.out.ok, + plugins/sudoers/regress/sudoers/test30.sudo.ok, + plugins/sudoers/regress/sudoers/test30.toke.ok: + Add test for using "list" as user, runas and host. + [712c96af942d] + * plugins/sudoers/gram.c, plugins/sudoers/gram.y, plugins/sudoers/toke.c, plugins/sudoers/toke.l: Move handling of the "list" pseudo-command from lexer to parser. The @@ -71,12 +1507,29 @@ #246. [efb3a4dea1da] <1.9> + * plugins/sudoers/gram.c, plugins/sudoers/gram.y, + plugins/sudoers/toke.c, plugins/sudoers/toke.l: + Move handling of the "list" pseudo-command from lexer to parser. The + special handling of "list" in the lexer meant it could not be used + as a user, group or host, which was unintentional. GitHub issue + #246. + [d36f1d686343] + 2023-02-27 Todd C. Miller * include/sudo_compat.h: Make the check for HAVE_DECL_NSIG consistent with other decl checks. [616c42c4adce] <1.9> + * include/sudo_compat.h: + Make the check for HAVE_DECL_NSIG consistent with other decl checks. + [4e6e627062af] + + * plugins/sudoers/match_command.c: + Plug memory leak with multiple matching CHROOT= entries. Found by + oss-fuzz. + [a4982b468985] + 2023-02-25 Todd C. Miller * .hgtags: @@ -87,24 +1540,117 @@ Sudo 1.9.13p2. [2db7cee1cb77] [SUDO_1_9_13p2] <1.9> + * NEWS, configure, configure.ac: + Sudo 1.9.13p2. + [251788b2308b] + 2023-02-23 Todd C. Miller + * plugins/sudoers/logging.c: + Include error string when formatting a SLOG_PARSE_ERROR message if + present. + [b4254bf84300] + * lib/util/lbuf.c: Add missing include of errno.h. [65ddd70d0c18] <1.9> * lib/util/lbuf.c: + Add missing include of errno.h. + [669e4a4ab3ad] + + * lib/util/lbuf.c: sudo_lbuf_expand: check for overflow when rounding to the nearest power of 2. Problem deteced by oss-fuzz using the fuzz_sudoers fuzzer. [9357396fdaa0] <1.9> + * lib/util/lbuf.c: + sudo_lbuf_expand: check for overflow when rounding to the nearest + power of 2. Problem deteced by oss-fuzz using the fuzz_sudoers + fuzzer. + [7d433e75c858] + * src/load_plugins.c: Fix --enable-static-sudoers, broken in sudo 1.9.13. sudo_qualify_plugin() should not try to fully-qualify the path to a statically-compiled plugin. GitHub issue #245 [eca5f1f6555e] <1.9> + * src/load_plugins.c: + Fix --enable-static-sudoers, broken in sudo 1.9.13. + sudo_qualify_plugin() should not try to fully-qualify the path to a + statically-compiled plugin. GitHub issue #245 + [f323e3f0a5c0] + +2023-02-22 Todd C. Miller + + * plugins/sudoers/logging.c, plugins/sudoers/logging.h, + plugins/sudoers/sudoers.c: + Add sudoers open errors to the list of parse errors sent via mail. + Previously there would be one email for the open failure and a + separate one describing the parse error. Now a single email message + contains everything. + [b81299ccdad8] + + * plugins/sudoers/visudo.c: + visudo: quiet a compiler warning on Solaris 10. Also explicitly + close /dev/tty fd instead of relying on closefrom() in case the fd + ends up being a value 0-2. + [d839cc458245] + + * Merge pull request #244 from ffontaine/main + + configure.ac: fix openssl static build + [af40f67e9771] + + * configure, configure.ac, lib/util/Makefile.in: + Replace LIBMD with LIBCRYPTO display crypto/tls libs in summary. We + can only have one of either -lmd, -lgcrypt or -lcrypto so there is + no need to have more than one variable. + [da65125af8c6] + +2023-02-22 Fabrice Fontaine + + * m4/openssl.m4: + configure.ac: fix openssl static build + + Do not use AX_APPEND_FLAG as it will break static builds by removing + duplicates such as -lz or -latomic which are needed by -lssl and + -lcrypto. This will fix the following build failure with sparc which + needs -latomic: + + Checking for X509_STORE_CTX_get0_cert configure:21215: + /home/thomas/autobuild/instance-3/output-1/host/bin/sparc-buildroot- + linux-uclibc-gcc -o conftest -D_LARGEFILE_SOURCE + -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -g0 -static + -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 + -DZLIB_CONST -static conftest.c + -L/home/thomas/autobuild/instance-3/output-1/host/bin/../sparc- + buildroot-linux-uclibc/sysroot/usr/lib -lssl -lz -pthread -latomic + -lcrypto >&5 + /home/thomas/autobuild/instance-3/output-1/host/lib/gcc/sparc- + buildroot-linux-uclibc/10.4.0/../../../../sparc-buildroot-linux- + uclibc/bin/ld: + /home/thomas/autobuild/instance-3/output-1/host/bin/../sparc- + buildroot-linux-uclibc/sysroot/usr/lib/libcrypto.a(x509cset.o): in + function `X509_CRL_up_ref': x509cset.c:(.text+0x108): undefined + reference to `__atomic_fetch_add_4' + + [...] + + In file included from ./hostcheck.c:38: + ../../include/sudo_compat.h:342:41: error: conflicting types for + 'ASN1_STRING_data' 342 | # define ASN1_STRING_get0_data(x) + ASN1_STRING_data(x) | ^~~~~~~~~~~~~~~~ + + Fixes: + - http://autobuild.buildroot.org/results/8be59dd94e4916f9457cb435104e3 + 6e62a28373b + + Signed-off-by: Fabrice Fontaine + [487cfc17c742] + 2023-02-21 Todd C. Miller * MANIFEST, plugins/sudoers/match_command.c, @@ -117,6 +1663,116 @@ the user_cmnd variable could be freed twice. [2c1477233f48] <1.9> + * MANIFEST, plugins/sudoers/match_command.c, + plugins/sudoers/regress/fuzz/fuzz_sudoers.c, + plugins/sudoers/regress/testsudoers/test20.out.ok, + plugins/sudoers/regress/testsudoers/test20.sh, + plugins/sudoers/testsudoers.c, plugins/sudoers/visudo.c: + Fix potential double free for rules that include a CHROOT= option. + If a rule with a CHROOT= option matches the user, host and runas, + the user_cmnd variable could be freed twice. + [a988ae0045a2] + + * plugins/sudoers/visudo.c: + Check tcsetpgrp() return value. + [5d9bdb2fea15] + + * MANIFEST, include/sudo_util.h, lib/util/Makefile.in, + lib/util/suspend_parent.c, lib/util/util.exp.in, + plugins/sudoers/visudo.c, src/Makefile.in, src/exec_iolog.c, + src/exec_nopty.c, src/regress/intercept/test_ptrace.c, src/sudo.h, + src/sudo_exec.h, src/suspend_nopty.c, src/tcsetpgrp_nobg.c: + Run the editor in its own process group. This fixes suspending the + editor on GNU Hurd which doesn't seem to have proper process group + signal handling. + [210e058101af] + + * plugins/sudoers/Makefile.in, + plugins/sudoers/regress/fuzz/fuzz_stubs.c, plugins/sudoers/stubs.c, + plugins/sudoers/testsudoers.c: + Stub out pivot_root() and unpivot_root() for all but the sudoers + module. + [967f706e6bff] + + * plugins/sudoers/match_command.c: + Fix build when SUDOERS_NAME_MATCH is defined. + [79e4613fbd85] + + * MANIFEST, plugins/sudoers/Makefile.in, plugins/sudoers/pivot.c, + plugins/sudoers/sudoers.h: + Add pivot_root() and unpivot_root() to switch the root dir and + restore it. This will be used to more accurately handling command + resolution and path matching when a new root directory is specified. + [77300a0e1537] + + * plugins/sudoers/editor.c, plugins/sudoers/find_path.c, + plugins/sudoers/goodpath.c, + plugins/sudoers/regress/editor/check_editor.c, + plugins/sudoers/regress/fuzz/fuzz_policy.c, + plugins/sudoers/sudoers.c, plugins/sudoers/sudoers.h: + set_cmnd_path: apply runchroot if set when finding the command path + Previously we would prepend runchroot to the path we were checking + but that does not properly handle symbolic links. + [3fb7ca4631c0] + + * plugins/sudoers/match_command.c, plugins/sudoers/match_digest.c, + plugins/sudoers/parse.h: + match_command: apply runchroot if set when matching the command + Previously we would prepend runchroot to the path we were checking + but that does not properly handle symbolic links. + [41dc8f445f78] + + * MANIFEST, plugins/sudoers/Makefile.in, plugins/sudoers/canon_path.c, + plugins/sudoers/sudoers.c, plugins/sudoers/sudoers.h: + Add canon_path(), a realpath() wrapper that performs caching. This + also adds a new user_cmnd_dir variable that stores the canonicalized + parent directory of the command to be run. + [6065f5e76387] + + * plugins/sudoers/match_command.c: + Match using canonicalized directories where possible. + [020d4ad53d07] + + * src/exec_ptrace.c: + ptrace_intercept_execve: preserve old argv[0] after policy check. We + have to replace argv[0] with the pathname for the policy check but + want to restore it afterwards if the policy has not changed the + command's path name to avoid a mismatch later on. + [5dcd96a5c369] + + * configure, configure.ac: + Move initial values into AC_SUBST() where possible. + [3db7feb16577] + + * configure, configure.ac: + No need to AC_SUBST() standard autoconf variables. + [48ce145c9e40] + +2023-02-19 Todd C. Miller + + * INSTALL.md: + Document --disable-largefile and --disable-year2038. + [424d17d1b83d] + + * configure, configure.ac: + Fix indentation of intercept file in summary output. + [3cf0104bd2e5] + + * plugins/sudoers/regress/starttime/check_starttime.c, + plugins/sudoers/starttime.c: + get_starttime: add support for GNU Hurd using the mach task_info + call. This is currently Hurd-specific but could be made Mach-generic + as long as the equivalent of pid2task() is available. + [a81de7fb1f83] + +2023-02-18 Todd C. Miller + + * plugins/sudoers/regress/starttime/check_starttime.c: + Only test get_starttime() on platforms where we support it. Fixes a + test failure on systems where we have no way to determine a + process's start time. + [bf8dbe59b2c6] + 2023-02-16 Todd C. Miller * .hgtags: @@ -238,6 +1894,15 @@ Regenerate .mo files. [a7a708d8bf34] +2023-02-12 Todd C. Miller + + * MANIFEST, config.h.in, configure, configure.ac, + include/sudo_compat.h, lib/util/Makefile.in, lib/util/realpath.c, + scripts/mkdep.pl: + Add checks for realpath(3) and a version from NetBSD for those + without it. + [121fb2ed88de] + 2023-02-09 Todd C. Miller * plugins/sudoers/regress/fuzz/fuzz_sudoers.c: @@ -267,6 +1932,14 @@ we only ever pass in a const string. [700e72ca42c0] +2023-02-08 Todd C. Miller + + * configure, configure.ac, m4/sudo.m4, pathnames.h.in, + plugins/sudoers/visudo.c: + Substitute for _PATH_SUDO* variables in pathnames.h. Previously + these were hard-coded with Makefile overrides. + [53c8be4b6af3] + 2023-02-05 Todd C. Miller * configure, configure.ac: diff -Nru sudo-1.9.13p3/config.h.in sudo-1.9.14p2/config.h.in --- sudo-1.9.13p3/config.h.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/config.h.in 2023-07-15 15:41:09.000000000 +0000 @@ -3,6 +3,9 @@ #ifndef SUDO_CONFIG_H #define SUDO_CONFIG_H +/* Configure script arguments used to build sudo. */ +#undef CONFIGURE_ARGS + /* Define to 1 if you want the insults from the "classic" version sudo. */ #undef CLASSIC_INSULTS @@ -35,8 +38,8 @@ /* Define to 1 if you want to require fully qualified hosts in sudoers. */ #undef FQDN -/* Define to the type of elements in the array set by 'getgroups'. Usually - this is either 'int' or 'gid_t'. */ +/* Define to the type of elements in the array argument to 'getgroups'. + Usually this is either 'int' or 'gid_t'. */ #undef GETGROUPS_T /* Define to 1 if you want insults from the "Goon Show". */ @@ -207,6 +210,10 @@ don't. */ #undef HAVE_DECL_SSIZE_MAX +/* Define to 1 if you have the declaration of 'SYMLOOP_MAX', and to 0 if you + don't. */ +#undef HAVE_DECL_SYMLOOP_MAX + /* Define to 1 if you have the declaration of 'sys_sigabbrev', and to 0 if you don't. */ #undef HAVE_DECL_SYS_SIGABBREV @@ -243,6 +250,10 @@ you don't. */ #undef HAVE_DECL__POSIX_PATH_MAX +/* Define to 1 if you have the declaration of '_POSIX_SYMLOOP_MAX', and to 0 + if you don't. */ +#undef HAVE_DECL__POSIX_SYMLOOP_MAX + /* Define to 1 if you have the declaration of '_sys_siglist', and to 0 if you don't. */ #undef HAVE_DECL__SYS_SIGLIST @@ -462,18 +473,6 @@ /* Define to 1 if you have the 'innetgr' function. */ #undef HAVE_INNETGR -/* Define to 1 if the system has the type 'int16_t'. */ -#undef HAVE_INT16_T - -/* Define to 1 if the system has the type 'int32_t'. */ -#undef HAVE_INT32_T - -/* Define to 1 if the system has the type 'int64_t'. */ -#undef HAVE_INT64_T - -/* Define to 1 if the system has the type 'int8_t'. */ -#undef HAVE_INT8_T - /* Define to 1 if the system has the type 'intmax_t'. */ #undef HAVE_INTMAX_T @@ -602,6 +601,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_LOGIN_CAP_H +/* Define to 1 if the system has the type 'long long int'. */ +#undef HAVE_LONG_LONG_INT + /* Define to 1 if you have the header file. */ #undef HAVE_MACHINE_ENDIAN_H @@ -758,6 +760,9 @@ /* Define to 1 if you have the 'reallocarray' function. */ #undef HAVE_REALLOCARRAY +/* Define to 1 if you have the 'realpath' function. */ +#undef HAVE_REALPATH + /* Define to 1 if you have the 'revoke' function. */ #undef HAVE_REVOKE @@ -1027,18 +1032,6 @@ /* Define to 1 if you have the 'ttyslot' function. */ #undef HAVE_TTYSLOT -/* Define to 1 if the system has the type 'uint16_t'. */ -#undef HAVE_UINT16_T - -/* Define to 1 if the system has the type 'uint32_t'. */ -#undef HAVE_UINT32_T - -/* Define to 1 if the system has the type 'uint64_t'. */ -#undef HAVE_UINT64_T - -/* Define to 1 if the system has the type 'uint8_t'. */ -#undef HAVE_UINT8_T - /* Define to 1 if the system has the type 'uintmax_t'. */ #undef HAVE_UINTMAX_T @@ -1051,6 +1044,9 @@ /* Define to 1 if you have the 'unsetenv' function. */ #undef HAVE_UNSETENV +/* Define to 1 if the system has the type 'unsigned long long int'. */ +#undef HAVE_UNSIGNED_LONG_LONG_INT + /* Define to 1 if you have the header file. */ #undef HAVE_UTIL_H @@ -1229,9 +1225,6 @@ /* The passwd prompt timeout (in minutes). */ #undef PASSWORD_TIMEOUT -/* Define to 1 to enable replacement getcwd if system getcwd is broken. */ -#undef PREFER_PORTABLE_GETCWD - /* Enable replacement (v)snprintf if system (v)snprintf is broken. */ #undef PREFER_PORTABLE_SNPRINTF @@ -1447,6 +1440,21 @@ /* Number of bits in time_t, on hosts where this is settable. */ #undef _TIME_BITS +/* Define for Solaris 2.5.1 so the uint32_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +#undef _UINT32_T + +/* Define for Solaris 2.5.1 so the uint64_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +#undef _UINT64_T + +/* Define for Solaris 2.5.1 so the uint8_t typedef from , + , or is not used. If the typedef were allowed, the + #define below would cause a syntax error. */ +#undef _UINT8_T + /* Define to 1 on platforms where this makes time_t a 64-bit type. */ #undef __MINGW_USE_VC2005_COMPAT @@ -1457,7 +1465,7 @@ /* Define to empty if 'const' does not conform to ANSI C. */ #undef const -/* Define to 'int' if doesn't define. */ +/* Define as 'int' if doesn't define. */ #undef gid_t /* Define to '__inline__' or '__inline' if that's what the C compiler @@ -1466,53 +1474,56 @@ #undef inline #endif +/* Define to the type of a signed integer type of width exactly 16 bits if + such a type exists and the standard includes do not define it. */ +#undef int16_t + +/* Define to the type of a signed integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ +#undef int32_t + +/* Define to the type of a signed integer type of width exactly 64 bits if + such a type exists and the standard includes do not define it. */ +#undef int64_t + +/* Define to the type of a signed integer type of width exactly 8 bits if such + a type exists and the standard includes do not define it. */ +#undef int8_t + +/* Define to the widest signed integer type if and do + not define. */ +#undef intmax_t + /* Define to an OS-specific initialization function or 'os_init_common'. */ #undef os_init -/* Define to 'unsigned int' if does not define. */ -#undef size_t - -/* Define to 'int' if doesn't define. */ +/* Define as 'int' if doesn't define. */ #undef uid_t +/* Define to the type of an unsigned integer type of width exactly 16 bits if + such a type exists and the standard includes do not define it. */ +#undef uint16_t + +/* Define to the type of an unsigned integer type of width exactly 32 bits if + such a type exists and the standard includes do not define it. */ +#undef uint32_t + +/* Define to the type of an unsigned integer type of width exactly 64 bits if + such a type exists and the standard includes do not define it. */ +#undef uint64_t + +/* Define to the type of an unsigned integer type of width exactly 8 bits if + such a type exists and the standard includes do not define it. */ +#undef uint8_t + +/* Define to the widest unsigned integer type if and + do not define. */ +#undef uintmax_t + /* Define to empty if the keyword 'volatile' does not work. Warning: valid code using 'volatile' can become incorrect without. Disable with care. */ #undef volatile -/* Define C99 types if stdint.h and inttypes.h are missing. */ -#if !defined(HAVE_STDINT_H) && !defined(HAVE_INTTYPES_H) -# ifndef HAVE_INT8_T -typedef char int8_t; -# endif -# ifndef HAVE_UINT8_T -typedef unsigned char uint8_t; -# endif -# ifndef HAVE_INT16_T -typedef short int16_t; -# endif -# ifndef HAVE_UINT16_T -typedef unsigned short uint16_t; -# endif -# ifndef HAVE_INT32_T -typedef int int32_t; -# endif -# ifndef HAVE_UINT32_T -typedef unsigned int uint32_t; -# endif -# ifndef HAVE_INT64_T -typedef long long int64_t; -# endif -# ifndef HAVE_UINT64_T -typedef unsigned long long uint64_t; -# endif -# ifndef HAVE_INTMAX_T -typedef long long intmax_t; -# endif -# ifndef HAVE_UINTMAX_T -typedef unsigned long long uintmax_t; -# endif -#endif /* !HAVE_STDINT_H && !HAVE_INTTYPES_H */ - #ifndef HAVE_SIG_ATOMIC_T typedef int sig_atomic_t; #endif diff -Nru sudo-1.9.13p3/configure sudo-1.9.14p2/configure --- sudo-1.9.13p3/configure 2023-03-04 16:59:59.000000000 +0000 +++ sudo-1.9.14p2/configure 2023-07-15 15:41:08.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72a for sudo 1.9.13p3. +# Generated by GNU Autoconf 2.72c for sudo 1.9.14p2. # # Report bugs to . # @@ -614,8 +614,8 @@ # Identity of this package. PACKAGE_NAME='sudo' PACKAGE_TARNAME='sudo' -PACKAGE_VERSION='1.9.13p3' -PACKAGE_STRING='sudo 1.9.13p3' +PACKAGE_VERSION='1.9.14p2' +PACKAGE_STRING='sudo 1.9.14p2' PACKAGE_BUGREPORT='https://bugzilla.sudo.ws/' PACKAGE_URL='' @@ -656,7 +656,6 @@ ac_func_c_list= ac_c_werror_flag= enable_year2038=yes -enable_largefile=yes ac_subst_vars='LTLIBOBJS KRB5CONFIG LIBOBJS @@ -700,6 +699,7 @@ EGREP GREP SED +LIBTOOL host_os host_vendor host_cpu @@ -722,6 +722,9 @@ OBJEXT EXEEXT ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS CC python_plugin sudoers_plugin @@ -768,6 +771,10 @@ logpath log_dir iolog_dir +sudoers_path +sudo_logsrvd_conf +sudo_conf +cvtsudoers_conf INTERCEPT_EXP FUZZ_LD FUZZ_ENGINE @@ -782,6 +789,7 @@ SIGNAME devsearch DIGEST +adminconfdir exampledir TMPFILES_D COMPAT_EXP @@ -801,12 +809,10 @@ SUDO_NLS LIBPTHREAD LIBTLS -LIBMD LIBCRYPTO LIBINTL LIBRT LIBDL -CONFIGURE_ARGS LIBTOOL_DEPS ZLIB_SRC ZLIB @@ -867,11 +873,7 @@ LIBUTIL_LDFLAGS SUDOERS_LDFLAGS SUDO_LDFLAGS -LDFLAGS -CPPFLAGS PROGS -CFLAGS -LIBTOOL target_alias host_alias build_alias @@ -1049,6 +1051,7 @@ enable_wolfssl enable_gcrypt enable_python +enable_adminconf enable_shared enable_static with_pic @@ -1062,11 +1065,11 @@ with_noexec with_netsvc enable_sia +enable_largefile with_pam_login enable_pam_session enable_kerb5_instance enable_year2038 -enable_largefile ' ac_precious_vars='SENDMAILPROG VIPROG @@ -1636,7 +1639,7 @@ # 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.13p3 to adapt to many kinds of systems. +'configure' configures sudo 1.9.14p2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1702,7 +1705,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of sudo 1.9.13p3:";; + short | recursive ) echo "Configuration of sudo 1.9.14p2:";; esac cat <<\_ACEOF @@ -1769,6 +1772,9 @@ --enable-wolfssl Use wolfSSL's TLS and sha2 functions --enable-gcrypt Use GNU crypt's sha2 functions --enable-python Compile python plugin support + --enable-adminconf[=DIR] + Use configuration files from adminconfdir in + preference to sysconfdir --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] @@ -1776,11 +1782,11 @@ --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 --enable-kerb5-instance instance string to append to the username (separated by a slash) - --disable-year2038 omit support for dates after Jan 2038 - --disable-largefile omit support for large files + --disable-year2038 don't support timestamps after 2038 Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1993,8 +1999,8 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -sudo configure 1.9.13p3 -generated by GNU Autoconf 2.72a +sudo configure 1.9.14p2 +generated by GNU Autoconf 2.72c Copyright (C) 2023 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation @@ -2409,6 +2415,148 @@ } # ac_fn_c_check_member +# ac_fn_c_find_intX_t LINENO BITS VAR +# ----------------------------------- +# Finds a signed integer type with width BITS, setting cache variable VAR +# accordingly. +ac_fn_c_find_intX_t () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5 +printf %s "checking for int$2_t... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) eval "$3=no" + # Order is important - never check a type that is potentially smaller + # than half of the expected target width. + for ac_type in int$2_t 'int' 'long int' \ + 'long long int' 'short int' 'signed char'; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default + enum { N = $2 / 2 - 1 }; +int +main (void) +{ +static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default + enum { N = $2 / 2 - 1 }; +int +main (void) +{ +static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) + < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) case $ac_type in #( + int$2_t) : + eval "$3=yes" ;; #( + *) : + eval "$3=\$ac_type" ;; +esac ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if eval test \"x\$"$3"\" = x"no" +then : + +else case e in #( + e) break ;; +esac +fi + done ;; +esac +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_find_intX_t + +# ac_fn_c_find_uintX_t LINENO BITS VAR +# ------------------------------------ +# Finds an unsigned integer type with width BITS, setting cache variable VAR +# accordingly. +ac_fn_c_find_uintX_t () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 +printf %s "checking for uint$2_t... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) eval "$3=no" + # Order is important - never check a type that is potentially smaller + # than half of the expected target width. + for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ + 'unsigned long long int' 'unsigned short int' 'unsigned char'; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main (void) +{ +static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + case $ac_type in #( + uint$2_t) : + eval "$3=yes" ;; #( + *) : + eval "$3=\$ac_type" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + if eval test \"x\$"$3"\" = x"no" +then : + +else case e in #( + e) break ;; +esac +fi + done ;; +esac +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_find_uintX_t + # ac_fn_c_try_run LINENO # ---------------------- # Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that @@ -2671,8 +2819,8 @@ 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.13p3, which was -generated by GNU Autoconf 2.72a. Invocation command line was +It was created by sudo $as_me 1.9.14p2, which was +generated by GNU Autoconf 2.72c. Invocation command line was $ $0$ac_configure_args_raw @@ -2972,6 +3120,21 @@ return s; } +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not \xHH hex character constants. These do not provoke an error unfortunately, instead are silently treated @@ -3452,113 +3615,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +PROGS=sudo +LT_LDDEP="\$(shlib_exp)" +LT_LDEXPORTS="-export-symbols \$(shlib_exp)" +BAMAN=0 +LCMAN=0 +PSMAN=0 +SEMAN=0 +AAMAN=0 +devdir='$(srcdir)' +PRELOAD_MODULE='-module' +LDAP='#' +SUDO_NLS=disabled +exampledir='$(docdir)/examples' +adminconfdir='$(prefix)/etc' +PYTHON_PLUGIN='#' +LOGSRV_SRC='lib/logsrv' +LOGSRVD_SRC='logsrvd' +LOGSRVD_CONF='sudo_logsrvd.conf' +LIBLOGSRV='$(top_builddir)/lib/logsrv/liblogsrv.la $(top_builddir)/lib/protobuf-c/libprotobuf-c.la' +PPFILES='$(srcdir)/etc/sudo.pp' +FUZZ_LD='$(CC)' +cvtsudoers_conf='$(sysconfdir)/cvtsudoers.conf' +sudo_conf='$(sysconfdir)/sudo.conf' +sudo_logsrvd_conf='$(sysconfdir)/sudo_logsrvd.conf' +sudoers_path='$(sysconfdir)/sudoers' @@ -3653,62 +3734,20 @@ # # End initial values for man page substitution # -INSTALL_BACKUP= -INSTALL_INTERCEPT= -INSTALL_NOEXEC= -PRELOAD_MODULE=-module -exampledir='$(docdir)/examples' -devdir='$(srcdir)' -PROGS="sudo" : ${MANDIRTYPE='man'} : ${SHLIB_MODE='0644'} : ${SUDOERS_MODE='0440'} : ${SUDOERS_UID='0'} : ${SUDOERS_GID='0'} -DEVEL= -LDAP="#" -BAMAN=0 -LCMAN=0 -PSMAN=0 -SEMAN=0 -AAMAN=0 -LIBINTL= -LIBCRYPTO= -LIBMD= -LIBTLS= -ZLIB= -ZLIB_SRC= -AUTH_OBJS= +CONFIGURE_ARGS="$@" AUTH_REG= AUTH_EXCL= AUTH_EXCL_DEF= AUTH_DEF=passwd -SUDO_NLS=disabled -LOCALEDIR_SUFFIX= -LT_LDEXPORTS="-export-symbols \$(shlib_exp)" -LT_LDDEP="\$(shlib_exp)" -OS_INIT=os_init_common -INIT_SCRIPT= -INIT_DIR= -RC_LINK= -COMPAT_EXP= -SIGNAME= -FUZZ_ENGINE= -FUZZ_LD='$(CC)' -INTERCEPT_EXP= -WEAK_ALIAS=no CHECKSHADOW=true shadow_funcs= shadow_libs= -TMPFILES_D= -CONFIGURE_ARGS="$@" -PYTHON_PLUGIN=# -LOGSRVD= -LOGSRVD_SRC=logsrvd -LOGSRV_SRC=lib/logsrv -LOGSRVD_CONF='sudo_logsrvd.conf' -LIBLOGSRV='$(top_builddir)/lib/logsrv/liblogsrv.la $(top_builddir)/lib/protobuf-c/libprotobuf-c.la' -PPFILES='$(srcdir)/etc/sudo.pp' +OS_INIT=os_init_common RTLD_PRELOAD_VAR="LD_PRELOAD" RTLD_PRELOAD_ENABLE_VAR= @@ -7173,6 +7212,23 @@ fi +# Check whether --enable-adminconf was given. +if test ${enable_adminconf+y} +then : + enableval=$enable_adminconf; case "$enableval" in + yes|no) + ;; + *) adminconfdir="$enableval" + enable_adminconf=yes + ;; + esac + +else case e in #( + e) enable_adminconf=no ;; +esac +fi + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -8987,9 +9043,10 @@ as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in +case `"$ac_path_SED" --version 2>&1` in #( *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +#( *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -9070,9 +9127,10 @@ as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in +case `"$ac_path_GREP" --version 2>&1` in #( *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +#( *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -9143,9 +9201,10 @@ as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in +case `"$ac_path_EGREP" --version 2>&1` in #( *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +#( *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -9188,6 +9247,8 @@ printf "%s\n" "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" + EGREP_TRADITIONAL=$EGREP + ac_cv_path_EGREP_TRADITIONAL=$EGREP { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 printf %s "checking for fgrep... " >&6; } @@ -9217,9 +9278,10 @@ as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in +case `"$ac_path_FGREP" --version 2>&1` in #( *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +#( *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -17504,6 +17566,11 @@ fi sudo_cv_prev_host="$host" +cat >>confdefs.h <&5 printf %s "checking for $CC option to enable large file support... " >&6; } @@ -19880,6 +19952,7 @@ test $ac_opt_found = no || break done CC="$ac_save_CC" + test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected" ;; esac fi @@ -19890,15 +19963,10 @@ case $ac_cv_sys_largefile_opts in #( "none needed") : ;; #( + "supported through gnulib") : + ;; #( "support not detected") : - ac_have_largefile=no - if test $enable_largefile = required -then : - { { 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 $? "support for large files is required -See 'config.log' for more details" "$LINENO" 5; } -fi ;; #( + ac_have_largefile=no ;; #( "-D_FILE_OFFSET_BITS=64") : printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h @@ -19913,10 +19981,10 @@ as_fn_error $? "internal error: bad value for \$ac_cv_sys_largefile_opts" "$LINENO" 5 ;; esac - if test "$enable_year2038" != no +if test "$enable_year2038" != no then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable timestamps after Jan 2038" >&5 -printf %s "checking for $CC option to enable timestamps after Jan 2038... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option for timestamps after 2038" >&5 +printf %s "checking for $CC option for timestamps after 2038... " >&6; } if test ${ac_cv_sys_year2038_opts+y} then : printf %s "(cached) " >&6 @@ -19967,49 +20035,12 @@ "none needed") : ;; #( "support not detected") : - ac_have_year2038=no - case $enable_year2038 in #( - required) : - { { 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 $? "support for timestamps after Jan 2038 is required -See 'config.log' for more details" "$LINENO" 5; } ;; #( - yes) : - # If we're not cross compiling and 'touch' works with a large - # timestamp, then we can presume the system supports wider time_t - # *somehow* and we just weren't able to detect it. One common - # case that we deliberately *don't* probe for is a system that - # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers - # wide time_t. (It would be inappropriate for us to override an - # intentional use of -m32.) Error out, demanding use of - # --disable-year2038 if this is intentional. - if test $cross_compiling = no -then : - if TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null -then : - case `TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null` in #( - *'Feb 7 2106'* | *'Feb 7 17:10'*) : - { { 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 $? "this system appears to support timestamps after -January 2038, but no mechanism for enabling wide -'time_t' was detected. Did you mean to build a 64-bit -binary? (e.g. 'CC=\"${CC} -m64\"'.) To proceed with -32-bit time_t, configure with '--disable-year2038'. -See 'config.log' for more details" "$LINENO" 5; } ;; #( - *) : - ;; -esac -fi -fi ;; #( - *) : - ;; -esac ;; #( + ac_have_year2038=no ;; #( "-D_TIME_BITS=64") : printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h ;; #( - "-D__MINGW_USE_VC2005_COMPAT=1") : + "-D__MINGW_USE_VC2005_COMPAT") : printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h ;; #( @@ -20017,7 +20048,7 @@ { { 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 $? "the 'time_t' type is currently forced to be 32-bit. It -will stop working after January 2038. Remove +will stop working after mid-January 2038. Remove _USE_32BIT_TIME_T from the compiler flags. See 'config.log' for more details" "$LINENO" 5; } ;; #( *) : @@ -20026,12 +20057,34 @@ fi - - fi - - - +if test "$enable_year2038,$ac_have_year2038,$cross_compiling" = yes,no,no +then : + # If we're not cross compiling and 'touch' works with a large + # timestamp, then we can presume the system supports wider time_t + # *somehow* and we just weren't able to detect it. One common + # case that we deliberately *don't* probe for is a system that + # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers + # wide time_t. (It would be inappropriate for us to override an + # intentional use of -m32.) Error out, demanding use of + # --disable-year2038 if this is intentional. + if TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null +then : + case `TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null` in #( + *'Feb 7 2106'* | *'Feb 7 17:10'*) : + { { 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 $? "this system appears to support timestamps after +mid-January 2038, but no mechanism for enabling wide +'time_t' was detected. Did you mean to build a 64-bit +binary? (E.g., 'CC=\"${CC} -m64\"'.) To proceed with +32-bit time_t, configure with '--disable-year2038'. +See 'config.log' for more details" "$LINENO" 5; } ;; #( + *) : + ;; +esac +fi +fi # # Don't allow undefined symbols, even in shared libraries, if possible. @@ -20042,27 +20095,69 @@ if test -n "$GCC" -a X"${enable_sanitizer}${enable_fuzzer}" = X"nono" then : - # On FreeBSD and Dragonfly, environ is filled in by the dynamic loader - # so -Wl,--no-undefined causes a link error when environ is used. - # https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=263265 - # We use errno because OpenBSD shared libraries don't explicitly - # link with libc, which can result in undefined reference errors. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the linker accepts -Wl,--no-undefined" >&5 + case $host_os in #( + darwin*) : + + # On macOS 13, using "-undefined dynamic_lookup" produces a + # warning. Use the -no-undefined libtool option to avoid this. + +if test ${LT_LDFLAGS+y} +then : + + case " $LT_LDFLAGS " in #( + *" -no-undefined "*) : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LT_LDFLAGS already contains -no-undefined"; } >&5 + (: LT_LDFLAGS already contains -no-undefined) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } ;; #( + *) : + + as_fn_append LT_LDFLAGS " -no-undefined" + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LT_LDFLAGS=\"\$LT_LDFLAGS\""; } >&5 + (: LT_LDFLAGS="$LT_LDFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac + +else case e in #( + e) + LT_LDFLAGS=-no-undefined + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LT_LDFLAGS=\"\$LT_LDFLAGS\""; } >&5 + (: LT_LDFLAGS="$LT_LDFLAGS") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + ;; +esac +fi + + ;; #( + *) : + + # On FreeBSD and Dragonfly, environ is filled in by the dynamic loader + # so -Wl,--no-undefined causes a link error when environ is used. + # https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=263265 + # We use errno because OpenBSD shared libraries don't explicitly + # link with libc, which can result in undefined reference errors. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the linker accepts -Wl,--no-undefined" >&5 printf %s "checking the linker accepts -Wl,--no-undefined... " >&6; } if test ${sudo_cv_var_ld___no_undefined+y} then : printf %s "(cached) " >&6 else case e in #( e) - sudo_cv_var_ld___no_undefined=no - _CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $lt_prog_compiler_pic" - _LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_prog_compiler_pic -shared -Wl,--no-undefined" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + sudo_cv_var_ld___no_undefined=no + _CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_prog_compiler_pic" + _LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_prog_compiler_pic -shared -Wl,--no-undefined" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include -extern char **environ; + extern char **environ; int main (void) { @@ -20077,15 +20172,15 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - CFLAGS="$_CFLAGS" - LDFLAGS="$_LDFLAGS" + CFLAGS="$_CFLAGS" + LDFLAGS="$_LDFLAGS" - ;; + ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_ld___no_undefined" >&5 printf "%s\n" "$sudo_cv_var_ld___no_undefined" >&6; } - if test "$sudo_cv_var_ld___no_undefined" = "yes" + if test "$sudo_cv_var_ld___no_undefined" = "yes" then : @@ -20124,6 +20219,8 @@ fi + ;; +esac fi @@ -20445,91 +20542,261 @@ fi -if test X"${ac_cv_header_stdint_h}${ac_cv_header_inttypes_h}" = X"nono" -then : - ac_fn_c_check_type "$LINENO" "int8_t" "ac_cv_type_int8_t" "$ac_includes_default" -if test "x$ac_cv_type_int8_t" = xyes + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 +printf %s "checking for unsigned long long int... " >&6; } +if test ${ac_cv_type_unsigned_long_long_int+y} then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_type_unsigned_long_long_int=yes + case $ac_prog_cc_stdc in + no | c89) ;; + *) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -printf "%s\n" "#define HAVE_INT8_T 1" >>confdefs.h + /* For now, do not test the preprocessor; as of 2007 there are too many + implementations with broken preprocessors. Perhaps this can + be revisited in 2012. In the meantime, code should not expect + #if to work with literals wider than 32 bits. */ + /* Test literals. */ + long long int ll = 9223372036854775807ll; + long long int nll = -9223372036854775807LL; + unsigned long long int ull = 18446744073709551615ULL; + /* Test constant expressions. */ + typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) + ? 1 : -1)]; + typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 + ? 1 : -1)]; + int i = 63; +int +main (void) +{ +/* Test availability of runtime routines for shift and division. */ + long long int llmax = 9223372036854775807ll; + unsigned long long int ullmax = 18446744073709551615ull; + return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) + | (llmax / ll) | (llmax % ll) + | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) + | (ullmax / ull) | (ullmax % ull)); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : +else case e in #( + e) ac_cv_type_unsigned_long_long_int=no ;; +esac fi -ac_fn_c_check_type "$LINENO" "uint8_t" "ac_cv_type_uint8_t" "$ac_includes_default" -if test "x$ac_cv_type_uint8_t" = xyes -then : +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext;; + esac ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_unsigned_long_long_int" >&6; } + if test $ac_cv_type_unsigned_long_long_int = yes; then -printf "%s\n" "#define HAVE_UINT8_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h + fi -fi -ac_fn_c_check_type "$LINENO" "int16_t" "ac_cv_type_int16_t" "$ac_includes_default" -if test "x$ac_cv_type_int16_t" = xyes -then : -printf "%s\n" "#define HAVE_INT16_T 1" >>confdefs.h + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 +printf %s "checking for long long int... " >&6; } +if test ${ac_cv_type_long_long_int+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_cv_type_long_long_int=yes + case $ac_prog_cc_stdc in + no | c89) ;; + *) + ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int + if test $ac_cv_type_long_long_int = yes; then + if test "$cross_compiling" = yes +then : + : +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #ifndef LLONG_MAX + # define HALF \\ + (1LL << (sizeof (long long int) * CHAR_BIT - 2)) + # define LLONG_MAX (HALF - 1 + HALF) + #endif +int +main (void) +{ +long long int n = 1; + int i; + for (i = 0; ; i++) + { + long long int m = n << i; + if (m >> i != n) + return 1; + if (LLONG_MAX / 2 < m) + break; + } + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO" +then : +else case e in #( + e) ac_cv_type_long_long_int=no ;; +esac +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi -ac_fn_c_check_type "$LINENO" "uint16_t" "ac_cv_type_uint16_t" "$ac_includes_default" -if test "x$ac_cv_type_uint16_t" = xyes -then : -printf "%s\n" "#define HAVE_UINT16_T 1" >>confdefs.h + fi;; + esac ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 +printf "%s\n" "$ac_cv_type_long_long_int" >&6; } + if test $ac_cv_type_long_long_int = yes; then +printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h -fi -ac_fn_c_check_type "$LINENO" "int32_t" "ac_cv_type_int32_t" "$ac_includes_default" -if test "x$ac_cv_type_int32_t" = xyes + fi + +if test X"${ac_cv_header_stdint_h}${ac_cv_header_inttypes_h}" = X"nono" then : -printf "%s\n" "#define HAVE_INT32_T 1" >>confdefs.h + ac_fn_c_find_intX_t "$LINENO" "8" "ac_cv_c_int8_t" +case $ac_cv_c_int8_t in #( + no|yes) ;; #( + *) +printf "%s\n" "#define int8_t $ac_cv_c_int8_t" >>confdefs.h +;; +esac -fi -ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "$ac_includes_default" -if test "x$ac_cv_type_uint32_t" = xyes -then : + ac_fn_c_find_uintX_t "$LINENO" "8" "ac_cv_c_uint8_t" +case $ac_cv_c_uint8_t in #( + no|yes) ;; #( + *) -printf "%s\n" "#define HAVE_UINT32_T 1" >>confdefs.h +printf "%s\n" "#define _UINT8_T 1" >>confdefs.h -fi -ac_fn_c_check_type "$LINENO" "int64_t" "ac_cv_type_int64_t" "$ac_includes_default" -if test "x$ac_cv_type_int64_t" = xyes -then : +printf "%s\n" "#define uint8_t $ac_cv_c_uint8_t" >>confdefs.h +;; + esac -printf "%s\n" "#define HAVE_INT64_T 1" >>confdefs.h + ac_fn_c_find_intX_t "$LINENO" "16" "ac_cv_c_int16_t" +case $ac_cv_c_int16_t in #( + no|yes) ;; #( + *) +printf "%s\n" "#define int16_t $ac_cv_c_int16_t" >>confdefs.h +;; +esac + + ac_fn_c_find_uintX_t "$LINENO" "16" "ac_cv_c_uint16_t" +case $ac_cv_c_uint16_t in #( + no|yes) ;; #( + *) -fi -ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "$ac_includes_default" -if test "x$ac_cv_type_uint64_t" = xyes -then : -printf "%s\n" "#define HAVE_UINT64_T 1" >>confdefs.h +printf "%s\n" "#define uint16_t $ac_cv_c_uint16_t" >>confdefs.h +;; + esac + ac_fn_c_find_intX_t "$LINENO" "32" "ac_cv_c_int32_t" +case $ac_cv_c_int32_t in #( + no|yes) ;; #( + *) -fi -ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default" +printf "%s\n" "#define int32_t $ac_cv_c_int32_t" >>confdefs.h +;; +esac + + ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t" +case $ac_cv_c_uint32_t in #( + no|yes) ;; #( + *) + +printf "%s\n" "#define _UINT32_T 1" >>confdefs.h + + +printf "%s\n" "#define uint32_t $ac_cv_c_uint32_t" >>confdefs.h +;; + esac + + ac_fn_c_find_intX_t "$LINENO" "64" "ac_cv_c_int64_t" +case $ac_cv_c_int64_t in #( + no|yes) ;; #( + *) + +printf "%s\n" "#define int64_t $ac_cv_c_int64_t" >>confdefs.h +;; +esac + + ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t" +case $ac_cv_c_uint64_t in #( + no|yes) ;; #( + *) + +printf "%s\n" "#define _UINT64_T 1" >>confdefs.h + + +printf "%s\n" "#define uint64_t $ac_cv_c_uint64_t" >>confdefs.h +;; + esac + + + + ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default" if test "x$ac_cv_type_intmax_t" = xyes then : printf "%s\n" "#define HAVE_INTMAX_T 1" >>confdefs.h +else case e in #( + e) test $ac_cv_type_long_long_int = yes \ + && ac_type='long long int' \ + || ac_type='long int' +printf "%s\n" "#define intmax_t $ac_type" >>confdefs.h + ;; +esac fi -ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" + + + + + ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default" if test "x$ac_cv_type_uintmax_t" = xyes then : printf "%s\n" "#define HAVE_UINTMAX_T 1" >>confdefs.h +else case e in #( + e) test $ac_cv_type_unsigned_long_long_int = yes \ + && ac_type='unsigned long long int' \ + || ac_type='unsigned long int' +printf "%s\n" "#define uintmax_t $ac_type" >>confdefs.h + ;; +esac fi + fi ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" " $ac_includes_default @@ -20566,172 +20833,27 @@ fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 -printf %s "checking for egrep -e... " >&6; } -if test ${ac_cv_path_EGREP_TRADITIONAL+y} +ac_fn_c_check_type "$LINENO" "uid_t" "ac_cv_type_uid_t" "$ac_includes_default" +if test "x$ac_cv_type_uid_t" = xyes then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -z "$EGREP_TRADITIONAL"; then - ac_path_EGREP_TRADITIONAL_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in grep ggrep - do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue -# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. - # Check for GNU $ac_path_EGREP_TRADITIONAL -case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; -*) - ac_count=0 - printf %s 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl" - "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" - ac_path_EGREP_TRADITIONAL_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - $ac_path_EGREP_TRADITIONAL_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then - : - fi -else - ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL -fi - - if test "$ac_cv_path_EGREP_TRADITIONAL" -then : - ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" else case e in #( - e) if test -z "$EGREP_TRADITIONAL"; then - ac_path_EGREP_TRADITIONAL_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in egrep - do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue -# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. - # Check for GNU $ac_path_EGREP_TRADITIONAL -case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; -*) - ac_count=0 - printf %s 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl" - "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" - ac_path_EGREP_TRADITIONAL_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_TRADITIONAL_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL -fi + e) +printf "%s\n" "#define uid_t int" >>confdefs.h ;; esac -fi ;; -esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 -printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; } - EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 -printf %s "checking for uid_t in sys/types.h... " >&6; } -if test ${ac_cv_type_uid_t+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP_TRADITIONAL "uid_t" >/dev/null 2>&1 +ac_fn_c_check_type "$LINENO" "gid_t" "ac_cv_type_gid_t" "$ac_includes_default" +if test "x$ac_cv_type_gid_t" = xyes then : - ac_cv_type_uid_t=yes + else case e in #( - e) ac_cv_type_uid_t=no ;; -esac -fi -rm -rf conftest* + e) +printf "%s\n" "#define gid_t int" >>confdefs.h ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 -printf "%s\n" "$ac_cv_type_uid_t" >&6; } -if test $ac_cv_type_uid_t = no; then - -printf "%s\n" "#define uid_t int" >>confdefs.h - - -printf "%s\n" "#define gid_t int" >>confdefs.h - -fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking max length of uid_t" >&5 @@ -21661,103 +21783,133 @@ then : printf %s "(cached) " >&6 else case e in #( - e) if test "$cross_compiling" = yes -then : - ac_cv_type_getgroups=cross -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext + e) # If AC_TYPE_UID_T says there isn't any gid_t typedef, then we can skip +# everything below. +if test $ac_cv_type_gid_t = no +then : + ac_cv_type_getgroups=int +else case e in #( + e) # Test programs below rely on strict type checking of extern declarations: + # 'extern int getgroups(int, int *); extern int getgroups(int, pid_t *);' + # is valid in C89 if and only if pid_t is a typedef for int. Unlike + # anything involving either an assignment or a function call, compilers + # tend to make this kind of type mismatch a hard error, not just an + # "incompatible pointer types" warning. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Thanks to Mike Rendell for this test. */ $ac_includes_default -#define NGID 256 -#undef MAX -#define MAX(x, y) ((x) > (y) ? (x) : (y)) - +extern int getgroups(int, gid_t *); int main (void) { - gid_t gidset[NGID]; - int i, n; - union { gid_t gval; long int lval; } val; - - val.lval = -1; - for (i = 0; i < NGID; i++) - gidset[i] = val.gval; - n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1, - gidset); - /* Exit non-zero if getgroups seems to require an array of ints. This - happens when gid_t is short int but getgroups modifies an array - of ints. */ - return n > 0 && gidset[n] != val.gval; +return !(getgroups(0, 0) >= 0); + ; + return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO" +if ac_fn_c_try_compile "$LINENO" then : - ac_cv_type_getgroups=gid_t + ac_getgroups_gidarray=yes else case e in #( - e) ac_cv_type_getgroups=int ;; + e) ac_getgroups_gidarray=no ;; esac fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +extern int getgroups(int, int *); +int +main (void) +{ +return !(getgroups(0, 0) >= 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_getgroups_intarray=yes +else case e in #( + e) ac_getgroups_intarray=no ;; esac fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -if test $ac_cv_type_getgroups = cross; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + case int:$ac_getgroups_intarray,gid:$ac_getgroups_gidarray in #( + int:yes,gid:no) : + ac_cv_type_getgroups=int ;; #( + int:no,gid:yes) : + ac_cv_type_getgroups=gid_t ;; #( + int:yes,gid:yes) : + + # Both programs compiled - this means *either* that getgroups + # was declared with no prototype, in which case we should use int, + # or that it was declared prototyped but gid_t is a typedef for int, + # in which case we should use gid_t. Distinguish the two cases + # by testing if the compiler catches a blatantly incorrect function + # signature for getgroups. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include - +$ac_includes_default +extern int getgroups(int, float); +int +main (void) +{ +return !(getgroups(0, 0) >= 0); + ; + return 0; +} _ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP_TRADITIONAL "getgroups.*int.*gid_t" >/dev/null 2>&1 +if ac_fn_c_try_compile "$LINENO" then : - ac_cv_type_getgroups=gid_t + + # Compiler did not catch incorrect argument list; + # getgroups is unprototyped. + ac_cv_type_getgroups=int + else case e in #( - e) ac_cv_type_getgroups=int ;; + e) + # Compiler caught incorrect argument list; + # gid_t is a typedef for int. + ac_cv_type_getgroups=gid_t + ;; esac fi -rm -rf conftest* +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ;; #( + *) : -fi ;; + # Both programs failed to compile - this probably means getgroups + # wasn't declared at all. Use 'int', as this is probably a very + # old system where the type _would have been_ int. + ac_cv_type_getgroups=int + ;; +esac + ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5 -printf "%s\n" "$ac_cv_type_getgroups" >&6; } - -printf "%s\n" "#define GETGROUPS_T $ac_cv_type_getgroups" >>confdefs.h - - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes -then : - -else case e in #( - e) -printf "%s\n" "#define size_t unsigned int" >>confdefs.h ;; esac fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5 +printf "%s\n" "$ac_cv_type_getgroups" >&6; } +printf "%s\n" "#define GETGROUPS_T $ac_cv_type_getgroups" >>confdefs.h -ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups" -if test "x$ac_cv_func_getgroups" = xyes -then : - -fi -# If we don't yet have getgroups, see if it's in -lbsd. +# On older systems getgroups might be in -lbsd. # This is reported to be necessary on an ITOS 3000WS running SEIUX 3.1. ac_save_LIBS=$LIBS -if test $ac_cv_func_getgroups = no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getgroups in -lbsd" >&5 -printf %s "checking for getgroups in -lbsd... " >&6; } -if test ${ac_cv_lib_bsd_getgroups+y} +LIBS= +GETGROUPS_LIB= +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing getgroups" >&5 +printf %s "checking for library containing getgroups... " >&6; } +if test ${ac_cv_search_getgroups+y} then : printf %s "(cached) " >&6 else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" + e) ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -21779,70 +21931,75 @@ return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO" +for ac_lib in '' bsd +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" then : - ac_cv_lib_bsd_getgroups=yes + ac_cv_search_getgroups=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_getgroups+y} +then : + break +fi +done +if test ${ac_cv_search_getgroups+y} +then : + else case e in #( - e) ac_cv_lib_bsd_getgroups=no ;; + e) ac_cv_search_getgroups=no ;; esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_getgroups" >&5 -printf "%s\n" "$ac_cv_lib_bsd_getgroups" >&6; } -if test "x$ac_cv_lib_bsd_getgroups" = xyes +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getgroups" >&5 +printf "%s\n" "$ac_cv_search_getgroups" >&6; } +ac_res=$ac_cv_search_getgroups +if test "$ac_res" != no then : - GETGROUPS_LIB=-lbsd + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + test "$ac_res" = "none required" || GETGROUPS_LIB="$ac_res" + ac_cv_func_getgroups=yes +else case e in #( + e) ac_cv_func_getgroups=no ;; +esac fi -fi +LIBS=$ac_save_LIBS + -# Run the program to test the functionality of the system-supplied -# getgroups function only if there is such a function. +# Known severe bugs in getgroups on particular systems. +# - On Ultrix 4.3 and NextSTEP 3.2, getgroups (0, 0) is reported to +# fail, rather than returning the number of supplementary groups as +# it ought to. We do not know the exact range of releases affected +# in either case. +# We currently reject all versions of the systems with known bugs, and +# no other systems. Please send corrections to bug-autoconf@gnu.org. if test $ac_cv_func_getgroups = yes; then + # This AC_CACHE_CHECK exists so that one may override an incorrect + # guess by setting ac_cv_func_getgroups_works in a config.site file. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working getgroups" >&5 printf %s "checking for working getgroups... " >&6; } if test ${ac_cv_func_getgroups_works+y} then : printf %s "(cached) " >&6 else case e in #( - e) if test "$cross_compiling" = yes -then : - case "$host_os" in # (( - # Guess yes on glibc systems. - *-gnu*) ac_cv_func_getgroups_works="guessing yes" ;; - # If we don't know, assume the worst. - *) ac_cv_func_getgroups_works="guessing no" ;; - esac -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main (void) -{ -/* On Ultrix 4.3, getgroups (0, 0) always fails. */ - return getgroups (0, 0) == -1; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_func_getgroups_works=yes -else case e in #( - e) ac_cv_func_getgroups_works=no ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - - ;; + e) case $host_os in #( + ultrix* | nextstep*) : + ac_cv_func_getgroups_works=no # getgroups(0,0) fails + ;; #( + *) : + ac_cv_func_getgroups_works=yes ;; +esac ;; esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getgroups_works" >&5 @@ -21850,14 +22007,11 @@ else ac_cv_func_getgroups_works=no fi -case "$ac_cv_func_getgroups_works" in - *yes) +if test $ac_cv_func_getgroups_works = yes; then printf "%s\n" "#define HAVE_GETGROUPS 1" >>confdefs.h - ;; -esac -LIBS=$ac_save_LIBS +fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for declarations of fseeko and ftello" >&5 printf %s "checking for declarations of fseeko and ftello... " >&6; } @@ -23822,6 +23976,33 @@ done + for ac_func in realpath +do : + ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath" +if test "x$ac_cv_func_realpath" = xyes +then : + printf "%s\n" "#define HAVE_REALPATH 1" >>confdefs.h + +else case e in #( + e) + case " $LIBOBJS " in + *" realpath.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS realpath.$ac_objext" + ;; +esac + + + for _sym in sudo_realpath; do + COMPAT_EXP="${COMPAT_EXP}${_sym} +" + done + + ;; +esac +fi + +done + for ac_func in strlcpy do : ac_fn_c_check_func "$LINENO" "strlcpy" "ac_cv_func_strlcpy" @@ -24637,6 +24818,7 @@ + openssl_missing=no if test "${enable_openssl-no}" != no; then # Use pkg-config to find the openssl cflags and libs if possible. @@ -26245,7 +26427,7 @@ printf "%s\n" "#define HAVE_GCRYPT 1" >>confdefs.h DIGEST=digest_gcrypt.lo - LIBMD="-lgcrypt" + LIBCRYPTO="-lgcrypt" if test "$enable_gcrypt" != "yes" then : @@ -26501,7 +26683,7 @@ fi - LIBMD="-lmd" + LIBCRYPTO="-lmd" else case e in #( e) @@ -28115,6 +28297,19 @@ esac fi printf "%s\n" "#define HAVE_DECL_SSIZE_MAX $ac_have_decl" >>confdefs.h +ac_fn_check_decl "$LINENO" "SYMLOOP_MAX" "ac_cv_have_decl_SYMLOOP_MAX" " +#include +#include + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_SYMLOOP_MAX" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL_SYMLOOP_MAX $ac_have_decl" >>confdefs.h ac_fn_check_decl "$LINENO" "SIZE_MAX" "ac_cv_have_decl_SIZE_MAX" " #include @@ -28230,6 +28425,25 @@ fi +if test "$ac_cv_have_decl_SYMLOOP_MAX" != "yes" +then : + + ac_fn_check_decl "$LINENO" "_POSIX_SYMLOOP_MAX" "ac_cv_have_decl__POSIX_SYMLOOP_MAX" " +#include +#include + +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl__POSIX_SYMLOOP_MAX" = xyes +then : + ac_have_decl=1 +else case e in #( + e) ac_have_decl=0 ;; +esac +fi +printf "%s\n" "#define HAVE_DECL__POSIX_SYMLOOP_MAX $ac_have_decl" >>confdefs.h + + +fi for ac_func in strsignal @@ -31011,7 +31225,7 @@ with_ldap=yes fi - SUDOERS_OBJS="${SUDOERS_OBJS} ldap.lo ldap_conf.lo" + SUDOERS_OBJS="${SUDOERS_OBJS} ldap.lo ldap_conf.lo ldap_innetgr.lo" case "$SUDOERS_OBJS" in *ldap_util.lo*) ;; *) SUDOERS_OBJS="${SUDOERS_OBJS} ldap_util.lo";; @@ -31223,7 +31437,7 @@ int main (void) { -(void)ldap_init(0, 0) +return ldap_msgfree(NULL) ; return 0; } @@ -33915,33 +34129,11 @@ e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - -int -main (void) -{ -char buf[4]; (void)sprintf(buf, "%s", "foo"); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - sudo_cv_use_fortify_source=yes -else case e in #( - e) sudo_cv_use_fortify_source=no - ;; -esac -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. */ - + #include int main (void) { +char buf[4]; sprintf(buf, "%s", "foo"); return buf[0]; ; return 0; @@ -35339,26 +35531,6 @@ done exec_prefix="$oexec_prefix" -# Convert exampledir to something that can be used in the man pages -# I wish there was a better way to expand this. -EXAMPLES="$exampledir" -while :; do - EXAMPLES="`echo \"$EXAMPLES\" | sed -e 's/(/{/g' -e 's/)/}/g'`" - case "$EXAMPLES" in - *\${[A-Za-z]*}*) - eval EXAMPLES="$EXAMPLES" - ;; - *) - break - ;; - esac -done -case "$EXAMPLES" in - NONE/*) - EXAMPLES="${ac_default_prefix}${EXAMPLES#NONE}" - ;; -esac - if test X"$enable_intercept" != X"no" then : @@ -35448,20 +35620,245 @@ SUDOERS_LIBS=${SUDOERS_LIBS# } if test X"$prefix" = X"NONE"; then - test "$mandir" = '${datarootdir}/man' && mandir='$(prefix)/man' + test X"$mandir" = X'${datarootdir}/man' && mandir='$(prefix)/man' else - test "$mandir" = '${datarootdir}/man' && mandir='$(datarootdir)/man' + test X"$mandir" = X'${datarootdir}/man' && mandir='$(datarootdir)/man' +fi +test X"$bindir" = X'${exec_prefix}/bin' && bindir='$(exec_prefix)/bin' +test X"$sbindir" = X'${exec_prefix}/sbin' && sbindir='$(exec_prefix)/sbin' +test X"$libexecdir" = X'${exec_prefix}/libexec' && libexecdir='$(exec_prefix)/libexec' +test X"$includedir" = X'${prefix}/include' && includedir='$(prefix)/include' +test X"$datarootdir" = X'${prefix}/share' && datarootdir='$(prefix)/share' +test X"$docdir" = X'${datarootdir}/doc/${PACKAGE_TARNAME}' && docdir='$(datarootdir)/doc/$(PACKAGE_TARNAME)' +test X"$localedir" = X'${datarootdir}/locale' && localedir='$(datarootdir)/locale' +test X"$localstatedir" = X'${prefix}/var' && localstatedir='$(prefix)/var' +test X"$runstatedir" = X'${localstatedir}/run' && runstatedir='$(localstatedir)/run' +test X"$adminconfdir" = X'${prefix}/etc' && adminconfdir='$(prefix)/etc' +test X"$sysconfdir" = X'${prefix}/etc' && sysconfdir='/etc' + +# The configuration file search path is to check adminconfdir first and +# fall back to sysconfdir. This can support systems with read-only +# sysconfdir (/etc) that contains a set of default configuration files. + + _sysconfdir="$sysconfdir" + while :; do + _sysconfdir="`echo \"$_sysconfdir\" | sed -e 's/(/{/g' -e 's/)/}/g'`" + case "$_sysconfdir" in + *\${[A-Za-z]*}*) + eval _sysconfdir="$_sysconfdir" + ;; + *) + break + ;; + esac +done +case "$_sysconfdir" in + NONE/*) + _sysconfdir="${ac_default_prefix}${_sysconfdir#NONE}" + ;; +esac + + + _adminconfdir="$adminconfdir" + while :; do + _adminconfdir="`echo \"$_adminconfdir\" | sed -e 's/(/{/g' -e 's/)/}/g'`" + case "$_adminconfdir" in + *\${[A-Za-z]*}*) + eval _adminconfdir="$_adminconfdir" + ;; + *) + break + ;; + esac +done +case "$_adminconfdir" in + NONE/*) + _adminconfdir="${ac_default_prefix}${_adminconfdir#NONE}" + ;; +esac + +if test $enable_adminconf = yes +then : + + # Only use adminconfdir if different from sysconfdir + if test X"$_sysconfdir" != X"$_adminconfdir" +then : + + cvtsudoers_conf='$(adminconfdir)/cvtsudoers.conf:'$cvtsudoers_conf + sudo_conf='$(adminconfdir)/sudo.conf:'$sudo_conf + sudo_logsrvd_conf='$(adminconfdir)/sudo_logsrvd.conf:'$sudo_logsrvd_conf + sudoers_path='$(adminconfdir)/sudoers:'$sudoers_path + fi -test "$bindir" = '${exec_prefix}/bin' && bindir='$(exec_prefix)/bin' -test "$sbindir" = '${exec_prefix}/sbin' && sbindir='$(exec_prefix)/sbin' -test "$libexecdir" = '${exec_prefix}/libexec' && libexecdir='$(exec_prefix)/libexec' -test "$includedir" = '${prefix}/include' && includedir='$(prefix)/include' -test "$datarootdir" = '${prefix}/share' && datarootdir='$(prefix)/share' -test "$docdir" = '${datarootdir}/doc/${PACKAGE_TARNAME}' && docdir='$(datarootdir)/doc/$(PACKAGE_TARNAME)' -test "$localedir" = '${datarootdir}/locale' && localedir='$(datarootdir)/locale' -test "$localstatedir" = '${prefix}/var' && localstatedir='$(prefix)/var' -test "$runstatedir" = '${localstatedir}/run' && runstatedir='$(localstatedir)/run' -test "$sysconfdir" = '${prefix}/etc' && sysconfdir='/etc' + +fi + +# Expand config file paths for use in pathnames.h (after config dir override) + + as_save_IFS=$IFS + IFS=: + _sudo_define_path_res= + for as_dir in $cvtsudoers_conf; do + + _sudo_define_path_exp="$as_dir" + while :; do + _sudo_define_path_exp="`echo \"$_sudo_define_path_exp\" | sed -e 's/(/{/g' -e 's/)/}/g'`" + case "$_sudo_define_path_exp" in + *\${[A-Za-z]*}*) + eval _sudo_define_path_exp="$_sudo_define_path_exp" + ;; + *) + break + ;; + esac +done +case "$_sudo_define_path_exp" in + NONE/*) + _sudo_define_path_exp="${ac_default_prefix}${_sudo_define_path_exp#NONE}" + ;; +esac + + if test -z "${_sudo_define_path_res}"; then + _sudo_define_path_res="${_sudo_define_path_exp}" + else + _sudo_define_path_res="${_sudo_define_path_res}:${_sudo_define_path_exp}" + fi + done + IFS=$as_save_IFS + cat >>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h <&6 echo "Configured Sudo version $PACKAGE_VERSION" >&6 echo " Compiler settings:" >&6 -echo " prefix : $prefix" >&6 echo " compiler : $CC" >&6 echo " compiler options : $CFLAGS" >&6 echo " preprocessor options : $CPPFLAGS" >&6 echo " front-end libraries : $SUDO_LIBS" >&6 echo " front-end linker options : $SUDO_LDFLAGS" >&6 echo " network libraries : $NET_LIBS" >&6 +echo " Crypto library : $LIBCRYPTO" >&6 +echo " TLS libraries : $LIBTLS" >&6 echo " extra libraries : $LIBS" >&6 echo " extra linker options : $LDFLAGS" >&6 echo " sudoers libraries : $SUDOERS_LIBS" >&6 @@ -37774,18 +38166,30 @@ echo " mail if user not on host : ${mail_no_host}" >&6 echo " mail if command not allowed : ${mail_no_perms}" >&6 echo " Pathnames:" >&6 -echo " log directory : ${log_dir}" >&6 -echo " plugin directory : ${plugindir}" >&6 -echo " sudoers plugin : ${sudoers_plugin}" >&6 -if test "${enable_python-no}" != "no"; then - echo " python plugin : ${python_plugin}" >&6 +echo " prefix : $prefix" >&6 +echo " sysconfdir : $_sysconfdir" >&6 +if test "${enable_adminconf-no}" != "no"; then + echo " adminconfdir : $_adminconfdir" >&6 fi +echo " log directory : ${log_dir}" >&6 echo " run directory : ${rundir}" >&6 echo " var directory : ${vardir}" >&6 echo " I/O log directory : ${iolog_dir}" >&6 echo " sudo_logsrvd relay directory : ${relay_dir}" >&6 -echo " time zone directory : ${tzdir}" >&6 +if test X"$with_exampledir" != X""; then + echo " exampledir : $exampledir" >&6 +fi +echo " plugin directory : ${plugindir}" >&6 +echo " sudoers plugin : ${sudoers_plugin}" >&6 +if test "${enable_python-no}" != "no"; then + echo " python plugin : ${python_plugin}" >&6 +fi +echo " sudoers file : ${sudoers_path}" >&6 +echo " cvtsudoers.conf file : ${cvtsudoers_conf}" >&6 +echo " sudo.conf file : ${sudo_conf}" >&6 +echo " sudo_logsrvd.conf file : ${sudo_logsrvd_conf}" >&6 echo " path to sendmail : ${with_sendmail}" >&6 +echo " time zone directory : ${tzdir}" >&6 if test -n "$TMPFILES_D"; then echo " systemd tempfiles dir : ${TMPFILES_D}" >&6 fi @@ -37794,7 +38198,7 @@ elif test ${with_nsswitch-"yes"} != "no"; then echo " nsswitch file : ${nsswitch_conf}" >&6 fi -echo " intercept file : ${intercept_file}" >&6 +echo " intercept file : ${intercept_file}" >&6 echo " noexec file : ${noexec_file}" >&6 echo " secure path : ${with_secure_path-no}" >&6 echo " askpass helper file : ${with_askpass-no}" >&6 @@ -37877,7 +38281,6 @@ - diff -Nru sudo-1.9.13p3/configure.ac sudo-1.9.14p2/configure.ac --- sudo-1.9.13p3/configure.ac 2023-03-04 16:59:59.000000000 +0000 +++ sudo-1.9.14p2/configure.ac 2023-07-15 15:40:47.000000000 +0000 @@ -18,120 +18,120 @@ dnl OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. dnl AC_PREREQ([2.69]) -AC_INIT([sudo], [1.9.13p3], [https://bugzilla.sudo.ws/], [sudo]) +AC_INIT([sudo], [1.9.14p2], [https://bugzilla.sudo.ws/], [sudo]) AC_CONFIG_HEADERS([config.h pathnames.h]) AC_CONFIG_SRCDIR([src/sudo.c]) AC_CONFIG_AUX_DIR([scripts]) dnl dnl Variables that get substituted in the Makefile and man pages dnl -AC_SUBST([SHELL]) -AC_SUBST([LIBTOOL]) -AC_SUBST([CFLAGS]) -AC_SUBST([PROGS]) -AC_SUBST([CPPFLAGS]) -AC_SUBST([LDFLAGS]) -AC_SUBST([SUDO_LDFLAGS]) -AC_SUBST([SUDOERS_LDFLAGS]) -AC_SUBST([LIBUTIL_LDFLAGS]) -AC_SUBST([ZLIB_LDFLAGS]) -AC_SUBST([LT_LDFLAGS]) -AC_SUBST([LT_LDDEP]) -AC_SUBST([LT_LDEXPORTS]) -AC_SUBST([LT_STATIC]) -AC_SUBST([LT_DEP_LIBS]) -AC_SUBST([COMMON_OBJS]) -AC_SUBST([SUDOERS_LT_STATIC]) -AC_SUBST([SUDOERS_OBJS]) -AC_SUBST([SUDO_OBJS]) -AC_SUBST([LIBS]) -AC_SUBST([SUDO_LIBS]) -AC_SUBST([SUDOERS_LIBS]) -AC_SUBST([STATIC_SUDOERS]) -AC_SUBST([NET_LIBS]) -AC_SUBST([AFS_LIBS]) -AC_SUBST([REPLAY_LIBS]) -AC_SUBST([GETGROUPS_LIB]) -AC_SUBST([AUTH_OBJS]) -AC_SUBST([MANTYPE]) -AC_SUBST([MANDIRTYPE]) -AC_SUBST([MANCOMPRESS]) -AC_SUBST([MANCOMPRESSEXT]) -AC_SUBST([SHLIB_ENABLE]) -AC_SUBST([SHLIB_MODE]) -AC_SUBST([SUDOERS_MODE]) -AC_SUBST([SUDOERS_UID]) -AC_SUBST([SUDOERS_GID]) -AC_SUBST([DEVEL]) -AC_SUBST([EXAMPLES]) -AC_SUBST([BAMAN]) -AC_SUBST([LCMAN]) -AC_SUBST([PSMAN]) -AC_SUBST([SEMAN]) -AC_SUBST([AAMAN]) -AC_SUBST([devdir]) -AC_SUBST([mansectsu]) -AC_SUBST([mansectform]) -AC_SUBST([mansectmisc]) -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([PRELOAD_MODULE]) -AC_SUBST([DONT_LEAK_PATH_INFO]) -AC_SUBST([BSDAUTH_USAGE]) -AC_SUBST([SELINUX_USAGE]) -AC_SUBST([LDAP]) -AC_SUBST([LOGINCAP_USAGE]) -AC_SUBST([ZLIB]) -AC_SUBST([ZLIB_SRC]) -AC_SUBST([LIBTOOL_DEPS]) -AC_SUBST([CONFIGURE_ARGS]) -AC_SUBST([LIBDL]) -AC_SUBST([LIBRT]) -AC_SUBST([LIBINTL]) -AC_SUBST([LIBCRYPTO]) -AC_SUBST([LIBMD]) -AC_SUBST([LIBTLS]) -AC_SUBST([LIBPTHREAD]) -AC_SUBST([SUDO_NLS]) -AC_SUBST([LOCALEDIR_SUFFIX]) -AC_SUBST([COMPAT_TEST_PROGS]) -AC_SUBST([SUDOERS_TEST_PROGS]) -AC_SUBST([CROSS_COMPILING]) -AC_SUBST([ASAN_LDFLAGS]) -AC_SUBST([ASAN_CFLAGS]) -AC_SUBST([PIE_LDFLAGS]) -AC_SUBST([PIE_CFLAGS]) -AC_SUBST([HARDENING_LDFLAGS]) -AC_SUBST([HARDENING_CFLAGS]) -AC_SUBST([INIT_SCRIPT]) -AC_SUBST([INIT_DIR]) -AC_SUBST([RC_LINK]) -AC_SUBST([COMPAT_EXP]) -AC_SUBST([TMPFILES_D]) -AC_SUBST([exampledir]) -AC_SUBST([DIGEST]) -AC_SUBST([devsearch]) -AC_SUBST([SIGNAME]) -AC_SUBST([PYTHON_PLUGIN]) -AC_SUBST([PYTHON_PLUGIN_SRC]) -AC_SUBST([LOGSRV]) -AC_SUBST([LOGSRV_SRC]) -AC_SUBST([LOGSRVD_SRC]) -AC_SUBST([LOGSRVD_CONF]) -AC_SUBST([LIBLOGSRV]) -AC_SUBST([PPFILES]) -AC_SUBST([FUZZ_ENGINE]) -AC_SUBST([FUZZ_LD]) -AC_SUBST([INTERCEPT_EXP]) - +AC_SUBST([PROGS], [sudo])dnl +AC_SUBST([SUDO_LDFLAGS])dnl +AC_SUBST([SUDOERS_LDFLAGS])dnl +AC_SUBST([LIBUTIL_LDFLAGS])dnl +AC_SUBST([ZLIB_LDFLAGS])dnl +AC_SUBST([LT_LDFLAGS])dnl +AC_SUBST([LT_LDDEP], ["\$(shlib_exp)"])dnl +AC_SUBST([LT_LDEXPORTS], ["-export-symbols \$(shlib_exp)"])dnl +AC_SUBST([LT_STATIC])dnl +AC_SUBST([LT_DEP_LIBS])dnl +AC_SUBST([COMMON_OBJS])dnl +AC_SUBST([SUDOERS_LT_STATIC])dnl +AC_SUBST([SUDOERS_OBJS])dnl +AC_SUBST([SUDO_OBJS])dnl +AC_SUBST([SUDO_LIBS])dnl +AC_SUBST([SUDOERS_LIBS])dnl +AC_SUBST([STATIC_SUDOERS])dnl +AC_SUBST([NET_LIBS])dnl +AC_SUBST([AFS_LIBS])dnl +AC_SUBST([REPLAY_LIBS])dnl +AC_SUBST([GETGROUPS_LIB])dnl +AC_SUBST([AUTH_OBJS])dnl +AC_SUBST([MANTYPE])dnl +AC_SUBST([MANDIRTYPE])dnl +AC_SUBST([MANCOMPRESS])dnl +AC_SUBST([MANCOMPRESSEXT])dnl +AC_SUBST([SHLIB_ENABLE])dnl +AC_SUBST([SHLIB_MODE])dnl +AC_SUBST([SUDOERS_MODE])dnl +AC_SUBST([SUDOERS_UID])dnl +AC_SUBST([SUDOERS_GID])dnl +AC_SUBST([DEVEL])dnl +AC_SUBST([EXAMPLES])dnl +AC_SUBST([BAMAN], [0])dnl +AC_SUBST([LCMAN], [0])dnl +AC_SUBST([PSMAN], [0])dnl +AC_SUBST([SEMAN], [0])dnl +AC_SUBST([AAMAN], [0])dnl +AC_SUBST([devdir], ['$(srcdir)'])dnl +AC_SUBST([mansectsu])dnl +AC_SUBST([mansectform])dnl +AC_SUBST([mansectmisc])dnl +AC_SUBST([INTERCEPTFILE])dnl +AC_SUBST([INTERCEPTDIR])dnl +AC_SUBST([intercept_file])dnl +AC_SUBST([NOEXECFILE])dnl +AC_SUBST([NOEXECDIR])dnl +AC_SUBST([noexec_file])dnl +AC_SUBST([sesh_file])dnl +AC_SUBST([INSTALL_BACKUP])dnl +AC_SUBST([INSTALL_INTERCEPT])dnl +AC_SUBST([INSTALL_NOEXEC])dnl +AC_SUBST([PRELOAD_MODULE], ['-module'])dnl +AC_SUBST([DONT_LEAK_PATH_INFO])dnl +AC_SUBST([BSDAUTH_USAGE])dnl +AC_SUBST([SELINUX_USAGE])dnl +AC_SUBST([LDAP], ['#'])dnl +AC_SUBST([LOGINCAP_USAGE])dnl +AC_SUBST([ZLIB])dnl +AC_SUBST([ZLIB_SRC])dnl +AC_SUBST([LIBTOOL_DEPS])dnl +AC_SUBST([LIBDL])dnl +AC_SUBST([LIBRT])dnl +AC_SUBST([LIBINTL])dnl +AC_SUBST([LIBCRYPTO])dnl +AC_SUBST([LIBTLS])dnl +AC_SUBST([LIBPTHREAD])dnl +AC_SUBST([SUDO_NLS], [disabled])dnl +AC_SUBST([LOCALEDIR_SUFFIX])dnl +AC_SUBST([COMPAT_TEST_PROGS])dnl +AC_SUBST([SUDOERS_TEST_PROGS])dnl +AC_SUBST([CROSS_COMPILING])dnl +AC_SUBST([ASAN_LDFLAGS])dnl +AC_SUBST([ASAN_CFLAGS])dnl +AC_SUBST([PIE_LDFLAGS])dnl +AC_SUBST([PIE_CFLAGS])dnl +AC_SUBST([HARDENING_LDFLAGS])dnl +AC_SUBST([HARDENING_CFLAGS])dnl +AC_SUBST([INIT_SCRIPT])dnl +AC_SUBST([INIT_DIR])dnl +AC_SUBST([RC_LINK])dnl +AC_SUBST([COMPAT_EXP])dnl +AC_SUBST([TMPFILES_D])dnl +AC_SUBST([exampledir], ['$(docdir)/examples'])dnl +AC_SUBST([adminconfdir], ['$(prefix)/etc'])dnl +AC_SUBST([DIGEST])dnl +AC_SUBST([devsearch])dnl +AC_SUBST([SIGNAME])dnl +AC_SUBST([PYTHON_PLUGIN], ['#'])dnl +AC_SUBST([PYTHON_PLUGIN_SRC])dnl +AC_SUBST([LOGSRV])dnl +AC_SUBST([LOGSRV_SRC], ['lib/logsrv'])dnl +AC_SUBST([LOGSRVD_SRC], ['logsrvd'])dnl +AC_SUBST([LOGSRVD_CONF], ['sudo_logsrvd.conf'])dnl +AC_SUBST([LIBLOGSRV], ['$(top_builddir)/lib/logsrv/liblogsrv.la $(top_builddir)/lib/protobuf-c/libprotobuf-c.la'])dnl +AC_SUBST([PPFILES], ['$(srcdir)/etc/sudo.pp'])dnl +AC_SUBST([FUZZ_ENGINE])dnl +AC_SUBST([FUZZ_LD], ['$(CC)'])dnl +AC_SUBST([INTERCEPT_EXP])dnl +dnl +dnl Config file paths +dnl Either a single file or a colon-separated list of paths. +dnl +AC_SUBST([cvtsudoers_conf], ['$(sysconfdir)/cvtsudoers.conf'])dnl +AC_SUBST([sudo_conf], ['$(sysconfdir)/sudo.conf'])dnl +AC_SUBST([sudo_logsrvd_conf], ['$(sysconfdir)/sudo_logsrvd.conf'])dnl +AC_SUBST([sudoers_path], ['$(sysconfdir)/sudoers'])dnl dnl dnl Variables that get substituted in docs (not overridden by environment) dnl @@ -239,65 +239,23 @@ dnl Initial values for Makefile variables listed above dnl May be overridden by environment variables.. dnl -INSTALL_BACKUP= -INSTALL_INTERCEPT= -INSTALL_NOEXEC= -PRELOAD_MODULE=-module -exampledir='$(docdir)/examples' -devdir='$(srcdir)' -PROGS="sudo" : ${MANDIRTYPE='man'} : ${SHLIB_MODE='0644'} : ${SUDOERS_MODE='0440'} : ${SUDOERS_UID='0'} : ${SUDOERS_GID='0'} -DEVEL= -LDAP="#" -BAMAN=0 -LCMAN=0 -PSMAN=0 -SEMAN=0 -AAMAN=0 -LIBINTL= -LIBCRYPTO= -LIBMD= -LIBTLS= -ZLIB= -ZLIB_SRC= -AUTH_OBJS= +dnl +dnl Other variables +dnl +CONFIGURE_ARGS="$@" AUTH_REG= AUTH_EXCL= AUTH_EXCL_DEF= AUTH_DEF=passwd -SUDO_NLS=disabled -LOCALEDIR_SUFFIX= -LT_LDEXPORTS="-export-symbols \$(shlib_exp)" -LT_LDDEP="\$(shlib_exp)" -OS_INIT=os_init_common -INIT_SCRIPT= -INIT_DIR= -RC_LINK= -COMPAT_EXP= -SIGNAME= -FUZZ_ENGINE= -FUZZ_LD='$(CC)' -INTERCEPT_EXP= -dnl -dnl Other variables -dnl -WEAK_ALIAS=no CHECKSHADOW=true shadow_funcs= shadow_libs= -TMPFILES_D= -CONFIGURE_ARGS="$@" -PYTHON_PLUGIN=# -LOGSRVD= -LOGSRVD_SRC=logsrvd -LOGSRV_SRC=lib/logsrv -LOGSRVD_CONF='sudo_logsrvd.conf' -LIBLOGSRV='$(top_builddir)/lib/logsrv/liblogsrv.la $(top_builddir)/lib/protobuf-c/libprotobuf-c.la' -PPFILES='$(srcdir)/etc/sudo.pp' +OS_INIT=os_init_common dnl dnl LD_PRELOAD equivalents @@ -1613,6 +1571,17 @@ esac ]) +AC_ARG_ENABLE(adminconf, +[AS_HELP_STRING([--enable-adminconf[[=DIR]]], [Use configuration files from adminconfdir in preference to sysconfdir])], +[ case "$enableval" in + yes|no) + ;; + *) adminconfdir="$enableval" + enable_adminconf=yes + ;; + esac +], [enable_adminconf=no]) + dnl dnl C compiler checks dnl @@ -1787,6 +1756,11 @@ sudo_cv_prev_host="$host" dnl +dnl Store configure arguments for "sudo -V" +dnl +SUDO_DEFINE_UNQUOTED([CONFIGURE_ARGS], "$CONFIGURE_ARGS") + +dnl dnl We want to be able to differentiate between different rev's dnl AS_IF([test -n "$host_os"], [ @@ -2460,28 +2434,34 @@ # We must set this *before* the library tests. # AS_IF([test -n "$GCC" -a X"${enable_sanitizer}${enable_fuzzer}" = X"nono"], [ - # On FreeBSD and Dragonfly, environ is filled in by the dynamic loader - # so -Wl,--no-undefined causes a link error when environ is used. - # https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=263265 - # We use errno because OpenBSD shared libraries don't explicitly - # link with libc, which can result in undefined reference errors. - AC_CACHE_CHECK([the linker accepts -Wl,--no-undefined], - [sudo_cv_var_ld___no_undefined], - [ - sudo_cv_var_ld___no_undefined=no - _CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $lt_prog_compiler_pic" - _LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_prog_compiler_pic -shared -Wl,--no-undefined" - AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include -extern char **environ;]], [[int ret = ((long)environ & 0xff) + errno; return ret;]])], - [sudo_cv_var_ld___no_undefined=yes]) - CFLAGS="$_CFLAGS" - LDFLAGS="$_LDFLAGS" - ] - ) - AS_IF([test "$sudo_cv_var_ld___no_undefined" = "yes"], [ - AX_APPEND_FLAG([-Wl,--no-undefined], [LDFLAGS]) + AS_CASE([$host_os], [darwin*], [ + # On macOS 13, using "-undefined dynamic_lookup" produces a + # warning. Use the -no-undefined libtool option to avoid this. + AX_APPEND_FLAG([-no-undefined], [LT_LDFLAGS]) + ], [ + # On FreeBSD and Dragonfly, environ is filled in by the dynamic loader + # so -Wl,--no-undefined causes a link error when environ is used. + # https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=263265 + # We use errno because OpenBSD shared libraries don't explicitly + # link with libc, which can result in undefined reference errors. + AC_CACHE_CHECK([the linker accepts -Wl,--no-undefined], + [sudo_cv_var_ld___no_undefined], + [ + sudo_cv_var_ld___no_undefined=no + _CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_prog_compiler_pic" + _LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_prog_compiler_pic -shared -Wl,--no-undefined" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include + extern char **environ;]], [[int ret = ((long)environ & 0xff) + errno; return ret;]])], + [sudo_cv_var_ld___no_undefined=yes]) + CFLAGS="$_CFLAGS" + LDFLAGS="$_LDFLAGS" + ] + ) + AS_IF([test "$sudo_cv_var_ld___no_undefined" = "yes"], [ + AX_APPEND_FLAG([-Wl,--no-undefined], [LDFLAGS]) + ]) ]) ]) @@ -2539,7 +2519,16 @@ dnl typedef checks dnl AS_IF([test X"${ac_cv_header_stdint_h}${ac_cv_header_inttypes_h}" = X"nono"], [ - AC_CHECK_TYPES([int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, intmax_t, uintmax_t]) + AC_TYPE_INT8_T + AC_TYPE_UINT8_T + AC_TYPE_INT16_T + AC_TYPE_UINT16_T + AC_TYPE_INT32_T + AC_TYPE_UINT32_T + AC_TYPE_INT64_T + AC_TYPE_UINT64_T + AC_TYPE_INTMAX_T + AC_TYPE_UINTMAX_T ]) AC_CHECK_TYPES([sig_atomic_t], [], [], [ AC_INCLUDES_DEFAULT @@ -2933,6 +2922,10 @@ AC_LIBOBJ(pw_dup) SUDO_APPEND_COMPAT_EXP(sudo_pw_dup) ]) +AC_CHECK_FUNCS([realpath], [], [ + AC_LIBOBJ(realpath) + SUDO_APPEND_COMPAT_EXP(sudo_realpath) +]) AC_CHECK_FUNCS([strlcpy], [], [ AC_LIBOBJ(strlcpy) SUDO_APPEND_COMPAT_EXP(sudo_strlcpy) @@ -3068,7 +3061,7 @@ # Use gcrypt's sha2 functions AC_DEFINE(HAVE_GCRYPT) DIGEST=digest_gcrypt.lo - LIBMD="-lgcrypt" + LIBCRYPTO="-lgcrypt" AS_IF([test "$enable_gcrypt" != "yes"], [ AX_APPEND_FLAG([-I${enable_gcrypt}/include], [CPPFLAGS]) SUDO_APPEND_LIBPATH(LDFLAGS, [${enable_gcrypt}/lib]) @@ -3083,7 +3076,7 @@ AC_CHECK_LIB([md], [SHA224Update], [ AC_DEFINE(HAVE_SHA224UPDATE) SUDO_FUNC_SHA2_VOID_PTR - LIBMD="-lmd" + LIBCRYPTO="-lmd" ], [ # Does not have SHA224Update FOUND_SHA2=no @@ -3324,7 +3317,7 @@ dnl dnl Check for incomplete limits.h and missing SIZE_MAX. dnl -AC_CHECK_DECLS([LLONG_MAX, LLONG_MIN, ULLONG_MAX, PATH_MAX, SSIZE_MAX], [], [], [ +AC_CHECK_DECLS([LLONG_MAX, LLONG_MIN, ULLONG_MAX, PATH_MAX, SSIZE_MAX, SYMLOOP_MAX], [], [], [ #include #include ]) @@ -3370,6 +3363,12 @@ #include ]]) ]) +AS_IF([test "$ac_cv_have_decl_SYMLOOP_MAX" != "yes"], [ + AC_CHECK_DECLS([_POSIX_SYMLOOP_MAX], [], [], [[ +#include +#include + ]]) +]) dnl dnl Check for strsignal() or sys_siglist @@ -4270,26 +4269,6 @@ done exec_prefix="$oexec_prefix" -# Convert exampledir to something that can be used in the man pages -# I wish there was a better way to expand this. -EXAMPLES="$exampledir" -while :; do - EXAMPLES="`echo \"$EXAMPLES\" | sed -e 's/(/{/g' -e 's/)/}/g'`" - case "$EXAMPLES" in - *\${[[A-Za-z]]*}*) - eval EXAMPLES="$EXAMPLES" - ;; - *) - break - ;; - esac -done -case "$EXAMPLES" in - NONE/*) - EXAMPLES="${ac_default_prefix}${EXAMPLES#NONE}" - ;; -esac - dnl dnl Defer setting _PATH_SUDO_NOEXEC, etc until after exec_prefix is set dnl @@ -4353,20 +4332,45 @@ dnl Override default configure dirs for the Makefile dnl if test X"$prefix" = X"NONE"; then - test "$mandir" = '${datarootdir}/man' && mandir='$(prefix)/man' + test X"$mandir" = X'${datarootdir}/man' && mandir='$(prefix)/man' else - test "$mandir" = '${datarootdir}/man' && mandir='$(datarootdir)/man' + test X"$mandir" = X'${datarootdir}/man' && mandir='$(datarootdir)/man' fi -test "$bindir" = '${exec_prefix}/bin' && bindir='$(exec_prefix)/bin' -test "$sbindir" = '${exec_prefix}/sbin' && sbindir='$(exec_prefix)/sbin' -test "$libexecdir" = '${exec_prefix}/libexec' && libexecdir='$(exec_prefix)/libexec' -test "$includedir" = '${prefix}/include' && includedir='$(prefix)/include' -test "$datarootdir" = '${prefix}/share' && datarootdir='$(prefix)/share' -test "$docdir" = '${datarootdir}/doc/${PACKAGE_TARNAME}' && docdir='$(datarootdir)/doc/$(PACKAGE_TARNAME)' -test "$localedir" = '${datarootdir}/locale' && localedir='$(datarootdir)/locale' -test "$localstatedir" = '${prefix}/var' && localstatedir='$(prefix)/var' -test "$runstatedir" = '${localstatedir}/run' && runstatedir='$(localstatedir)/run' -test "$sysconfdir" = '${prefix}/etc' && sysconfdir='/etc' +test X"$bindir" = X'${exec_prefix}/bin' && bindir='$(exec_prefix)/bin' +test X"$sbindir" = X'${exec_prefix}/sbin' && sbindir='$(exec_prefix)/sbin' +test X"$libexecdir" = X'${exec_prefix}/libexec' && libexecdir='$(exec_prefix)/libexec' +test X"$includedir" = X'${prefix}/include' && includedir='$(prefix)/include' +test X"$datarootdir" = X'${prefix}/share' && datarootdir='$(prefix)/share' +test X"$docdir" = X'${datarootdir}/doc/${PACKAGE_TARNAME}' && docdir='$(datarootdir)/doc/$(PACKAGE_TARNAME)' +test X"$localedir" = X'${datarootdir}/locale' && localedir='$(datarootdir)/locale' +test X"$localstatedir" = X'${prefix}/var' && localstatedir='$(prefix)/var' +test X"$runstatedir" = X'${localstatedir}/run' && runstatedir='$(localstatedir)/run' +test X"$adminconfdir" = X'${prefix}/etc' && adminconfdir='$(prefix)/etc' +test X"$sysconfdir" = X'${prefix}/etc' && sysconfdir='/etc' + +# The configuration file search path is to check adminconfdir first and +# fall back to sysconfdir. This can support systems with read-only +# sysconfdir (/etc) that contains a set of default configuration files. +SUDO_EXPAND_PATH([$sysconfdir], [_sysconfdir]) +SUDO_EXPAND_PATH([$adminconfdir], [_adminconfdir]) +AS_IF([test $enable_adminconf = yes], [ + # Only use adminconfdir if different from sysconfdir + AS_IF([test X"$_sysconfdir" != X"$_adminconfdir"], [ + cvtsudoers_conf='$(adminconfdir)/cvtsudoers.conf:'$cvtsudoers_conf + sudo_conf='$(adminconfdir)/sudo.conf:'$sudo_conf + sudo_logsrvd_conf='$(adminconfdir)/sudo_logsrvd.conf:'$sudo_logsrvd_conf + sudoers_path='$(adminconfdir)/sudoers:'$sudoers_path + ]) +]) + +# Expand config file paths for use in pathnames.h (after config dir override) +SUDO_DEFINE_PATH([$cvtsudoers_conf], [_PATH_CVTSUDOERS_CONF]) +SUDO_DEFINE_PATH([$sudo_conf], [_PATH_SUDO_CONF]) +SUDO_DEFINE_PATH([$sudo_logsrvd_conf], [_PATH_SUDO_LOGSRVD_CONF]) +SUDO_DEFINE_PATH([$sudoers_path], [_PATH_SUDOERS]) + +# Convert exampledir to something that can be used in the man pages +SUDO_EXPAND_PATH([$exampledir], [EXAMPLES]) dnl dnl Substitute into the Makefile and man pages @@ -4391,13 +4395,14 @@ echo "" >&AS_MESSAGE_FD echo "Configured Sudo version $PACKAGE_VERSION" >&AS_MESSAGE_FD echo " Compiler settings:" >&AS_MESSAGE_FD -echo " prefix : $prefix" >&AS_MESSAGE_FD echo " compiler : $CC" >&AS_MESSAGE_FD echo " compiler options : $CFLAGS" >&AS_MESSAGE_FD echo " preprocessor options : $CPPFLAGS" >&AS_MESSAGE_FD echo " front-end libraries : $SUDO_LIBS" >&AS_MESSAGE_FD echo " front-end linker options : $SUDO_LDFLAGS" >&AS_MESSAGE_FD echo " network libraries : $NET_LIBS" >&AS_MESSAGE_FD +echo " Crypto library : $LIBCRYPTO" >&AS_MESSAGE_FD +echo " TLS libraries : $LIBTLS" >&AS_MESSAGE_FD echo " extra libraries : $LIBS" >&AS_MESSAGE_FD echo " extra linker options : $LDFLAGS" >&AS_MESSAGE_FD echo " sudoers libraries : $SUDOERS_LIBS" >&AS_MESSAGE_FD @@ -4497,18 +4502,30 @@ echo " mail if user not on host : ${mail_no_host}" >&AS_MESSAGE_FD echo " mail if command not allowed : ${mail_no_perms}" >&AS_MESSAGE_FD echo " Pathnames:" >&AS_MESSAGE_FD -echo " log directory : ${log_dir}" >&AS_MESSAGE_FD -echo " plugin directory : ${plugindir}" >&AS_MESSAGE_FD -echo " sudoers plugin : ${sudoers_plugin}" >&AS_MESSAGE_FD -if test "${enable_python-no}" != "no"; then - echo " python plugin : ${python_plugin}" >&AS_MESSAGE_FD +echo " prefix : $prefix" >&AS_MESSAGE_FD +echo " sysconfdir : $_sysconfdir" >&AS_MESSAGE_FD +if test "${enable_adminconf-no}" != "no"; then + echo " adminconfdir : $_adminconfdir" >&AS_MESSAGE_FD fi +echo " log directory : ${log_dir}" >&AS_MESSAGE_FD echo " run directory : ${rundir}" >&AS_MESSAGE_FD echo " var directory : ${vardir}" >&AS_MESSAGE_FD echo " I/O log directory : ${iolog_dir}" >&AS_MESSAGE_FD echo " sudo_logsrvd relay directory : ${relay_dir}" >&AS_MESSAGE_FD -echo " time zone directory : ${tzdir}" >&AS_MESSAGE_FD +if test X"$with_exampledir" != X""; then + echo " exampledir : $exampledir" >&AS_MESSAGE_FD +fi +echo " plugin directory : ${plugindir}" >&AS_MESSAGE_FD +echo " sudoers plugin : ${sudoers_plugin}" >&AS_MESSAGE_FD +if test "${enable_python-no}" != "no"; then + echo " python plugin : ${python_plugin}" >&AS_MESSAGE_FD +fi +echo " sudoers file : ${sudoers_path}" >&AS_MESSAGE_FD +echo " cvtsudoers.conf file : ${cvtsudoers_conf}" >&AS_MESSAGE_FD +echo " sudo.conf file : ${sudo_conf}" >&AS_MESSAGE_FD +echo " sudo_logsrvd.conf file : ${sudo_logsrvd_conf}" >&AS_MESSAGE_FD echo " path to sendmail : ${with_sendmail}" >&AS_MESSAGE_FD +echo " time zone directory : ${tzdir}" >&AS_MESSAGE_FD if test -n "$TMPFILES_D"; then echo " systemd tempfiles dir : ${TMPFILES_D}" >&AS_MESSAGE_FD fi @@ -4517,7 +4534,7 @@ elif test ${with_nsswitch-"yes"} != "no"; then echo " nsswitch file : ${nsswitch_conf}" >&AS_MESSAGE_FD fi -echo " intercept file : ${intercept_file}" >&AS_MESSAGE_FD +echo " intercept file : ${intercept_file}" >&AS_MESSAGE_FD echo " noexec file : ${noexec_file}" >&AS_MESSAGE_FD echo " secure path : ${with_secure_path-no}" >&AS_MESSAGE_FD echo " askpass helper file : ${with_askpass-no}" >&AS_MESSAGE_FD @@ -4661,7 +4678,6 @@ AH_TEMPLATE(NO_ROOT_SUDO, [Define to 1 if root should not be allowed to use sudo.]) AH_TEMPLATE(TIMESTAMP_TYPE, [Define to global, ppid or tty to set the default timestamp record type.]) AH_TEMPLATE(OFFENSIVE_INSULTS, [Define to 1 to include offensive insults from the classic version of sudo.]) -AH_TEMPLATE(PREFER_PORTABLE_GETCWD, [Define to 1 to enable replacement getcwd if system getcwd is broken.]) AH_TEMPLATE(SECURE_PATH, [A colon-separated list of directories to override the user's PATH with.]) AH_TEMPLATE(SEND_MAIL_WHEN_NOT_OK, [Define to 1 to send mail when the user is not allowed to run a command.]) AH_TEMPLATE(SEND_MAIL_WHEN_NO_HOST, [Define to 1 to send mail when the user is not allowed to run sudo on this host.]) @@ -4710,43 +4726,12 @@ dnl Bits to copy verbatim into config.h.in dnl AH_TOP([#ifndef SUDO_CONFIG_H -#define SUDO_CONFIG_H]) +#define SUDO_CONFIG_H -AH_BOTTOM([/* Define C99 types if stdint.h and inttypes.h are missing. */ -#if !defined(HAVE_STDINT_H) && !defined(HAVE_INTTYPES_H) -# ifndef HAVE_INT8_T -typedef char int8_t; -# endif -# ifndef HAVE_UINT8_T -typedef unsigned char uint8_t; -# endif -# ifndef HAVE_INT16_T -typedef short int16_t; -# endif -# ifndef HAVE_UINT16_T -typedef unsigned short uint16_t; -# endif -# ifndef HAVE_INT32_T -typedef int int32_t; -# endif -# ifndef HAVE_UINT32_T -typedef unsigned int uint32_t; -# endif -# ifndef HAVE_INT64_T -typedef long long int64_t; -# endif -# ifndef HAVE_UINT64_T -typedef unsigned long long uint64_t; -# endif -# ifndef HAVE_INTMAX_T -typedef long long intmax_t; -# endif -# ifndef HAVE_UINTMAX_T -typedef unsigned long long uintmax_t; -# endif -#endif /* !HAVE_STDINT_H && !HAVE_INTTYPES_H */ +/* Configure script arguments used to build sudo. */ +#undef CONFIGURE_ARGS]) -#ifndef HAVE_SIG_ATOMIC_T +AH_BOTTOM([#ifndef HAVE_SIG_ATOMIC_T typedef int sig_atomic_t; #endif diff -Nru sudo-1.9.13p3/debian/changelog sudo-1.9.14p2/debian/changelog --- sudo-1.9.13p3/debian/changelog 2023-07-03 14:23:30.000000000 +0000 +++ sudo-1.9.14p2/debian/changelog 2023-08-09 20:53:59.000000000 +0000 @@ -1,3 +1,31 @@ +sudo (1.9.14p2-1ubuntu1) mantic; urgency=medium + + * Merge with Debian unstable (LP: #2030914). Remaining changes: + - debian/sudo[-ldap].manpages: install man/man8/sudo_root.8 + - debian/sudo[-ldap].init: delete init scripts, as they are no longer + necessary. + - debian/etc/pam.d/sudo[-i]: + + Use pam_env to read /etc/environment and /etc/default/locale + environment files. Reading ~/.pam_environment is not permitted due + to security reasons. + - debian/etc/sudoers: + + also grant admin group sudo access + + include /snap/bin in the secure_path + - debian/tests/control: 03-getroot-ldap + + allow removal of 'sudo' in autopkgtest (SUDO_FORCE_REMOVE=yes) + - debian/tests/04-getroot-sssd: + + Check if the slapd daemon is ready before proceeding. + In some situations, the next command (ldapmodify) runs before + the service is ready. See LP#2026888 + + -- Danilo Egea Gondolfo Wed, 09 Aug 2023 21:53:59 +0100 + +sudo (1.9.14p2-1) unstable; urgency=medium + + * new upstream version + + -- Marc Haber Thu, 20 Jul 2023 00:31:52 +0200 + sudo (1.9.13p3-3ubuntu1) mantic; urgency=medium * Merge with Debian unstable (LP: #2025655). Remaining changes: diff -Nru sudo-1.9.13p3/debian/copyright sudo-1.9.14p2/debian/copyright --- sudo-1.9.13p3/debian/copyright 2023-07-03 14:23:30.000000000 +0000 +++ sudo-1.9.14p2/debian/copyright 2023-08-09 20:53:59.000000000 +0000 @@ -183,8 +183,12 @@ Copyright: 2008 Otto Moerbeek License: ISC -Files: lib/util/getcwd.c lib/util/glob.c include/compat/glob.h lib/util/snprintf.c include/sudo_queue.h -Copyright: 1989, 1990, 1991, 1993 The Regents of the University of California +Files: lib/util/glob.c + include/compat/glob.h + lib/util/realpath.c + lib/util/snprintf.c + include/sudo_queue.h +Copyright: 1989, 1990, 1991, 1993, 1995 The Regents of the University of California License: BSD-3-Clause Files: lib/util/fnmatch.c diff -Nru sudo-1.9.13p3/debian/etc/sudoers.d/README sudo-1.9.14p2/debian/etc/sudoers.d/README --- sudo-1.9.13p3/debian/etc/sudoers.d/README 2023-07-03 14:23:30.000000000 +0000 +++ sudo-1.9.14p2/debian/etc/sudoers.d/README 2023-08-09 20:53:59.000000000 +0000 @@ -5,18 +5,16 @@ # @includedir /etc/sudoers.d # # This will cause sudo to read and parse any files in the /etc/sudoers.d -# directory that do not end in '~' or contain a '.' character. -# -# Note that there must be at least one file in the sudoers.d directory (this -# one will do). +# directory that do not end in '~' or contain a '.' character, if it +# exists. It is not an error if the directory does not exist. # # Note also, that because sudoers contents can vary widely, no attempt is # made to add this directive to existing sudoers files on upgrade. Feel free # to add the above directive to the end of your /etc/sudoers file to enable -# this functionality for existing installations if you wish! Sudo -# versions older than the one in Debian 11 (bullseye) require the -# directive will only support the old syntax #includedir, and the current -# sudo will happily accept both @includedir and #includedir +# this functionality for existing installations if you wish! +# Sudo versions older than 1.9.1 will only support the old syntax +# #includedir. That means that the sudo versions in Debian bullseye (11) +# and later will happily accept both @includedir and #includedir. # # Finally, please note that using the visudo command is the recommended way # to update sudoers content, since it protects against many failure modes. diff -Nru sudo-1.9.13p3/debian/patches/debian-bug-1039557 sudo-1.9.14p2/debian/patches/debian-bug-1039557 --- sudo-1.9.13p3/debian/patches/debian-bug-1039557 2023-07-03 14:23:30.000000000 +0000 +++ sudo-1.9.14p2/debian/patches/debian-bug-1039557 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -Desciption: fix event log format with environment variables -Origin: https://github.com/sudo-project/sudo/commit/12648b4e0a8cf486480442efd52f0e0b6cab6e8b -Bug: https://github.com/sudo-project/sudo/issues/254 -Forwarded: not-needed ---- a/lib/eventlog/eventlog.c -+++ b/lib/eventlog/eventlog.c -@@ -189,6 +189,7 @@ new_logline(int event_type, int flags, s - sudo_lbuf_append_esc(lbuf, LBUF_ESC_CNTRL, " %s", - evlog->env_add[i]); - } -+ sudo_lbuf_append(lbuf, " ; "); - } - if (evlog->command != NULL && evlog->argv != NULL) { - /* Command plus argv. */ diff -Nru sudo-1.9.13p3/debian/patches/series sudo-1.9.14p2/debian/patches/series --- sudo-1.9.13p3/debian/patches/series 2023-07-03 14:23:30.000000000 +0000 +++ sudo-1.9.14p2/debian/patches/series 2023-08-09 20:53:59.000000000 +0000 @@ -2,7 +2,6 @@ # debian-bugs-1019428 # dont-create-ChangeLog spanish -debian-bug-1039557 paths-in-samples.diff Whitelist-DPKG_COLORS-environment-variable.diff sudo-ldap-docs diff -Nru sudo-1.9.13p3/docker/debian/latest/Dockerfile sudo-1.9.14p2/docker/debian/latest/Dockerfile --- sudo-1.9.13p3/docker/debian/latest/Dockerfile 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/docker/debian/latest/Dockerfile 2023-07-15 15:37:21.000000000 +0000 @@ -2,9 +2,8 @@ RUN DEBIAN_FRONTEND=noninteractive TZ=America/Denver apt-get update && \ DEBIAN_FRONTEND=noninteractive TZ=America/Denver apt-get install -y \ - build-essential curl dpkg-dev ed libldap2-dev libpam0g-dev \ - libsasl2-dev libselinux1-dev libsepol1-dev libssl-dev zlib1g-dev \ - libaudit-dev libssl-dev python3-dev libpython3-dev libwolfssl-dev \ - libapparmor-dev \ - file lsb-release fakeroot pkg-config procps git ssh openssh-client + build-essential curl dpkg-dev ed fakeroot file git libapparmor-dev \ + libaudit-dev libldap2-dev libpam0g-dev libpython3-dev libsasl2-dev \ + libselinux1-dev libsepol-dev libssl-dev libwolfssl-dev lsb-release \ + ncurses-term openssh-client pkg-config procps python3-dev ssh zlib1g-dev RUN useradd -ms /bin/bash build diff -Nru sudo-1.9.13p3/docker/debian/testing/Dockerfile sudo-1.9.14p2/docker/debian/testing/Dockerfile --- sudo-1.9.13p3/docker/debian/testing/Dockerfile 2023-02-14 16:52:36.000000000 +0000 +++ sudo-1.9.14p2/docker/debian/testing/Dockerfile 2023-07-15 15:37:21.000000000 +0000 @@ -2,9 +2,8 @@ RUN DEBIAN_FRONTEND=noninteractive TZ=America/Denver apt-get update && \ DEBIAN_FRONTEND=noninteractive TZ=America/Denver apt-get install -y \ - build-essential curl dpkg-dev ed libldap2-dev libpam0g-dev \ - libsasl2-dev libselinux1-dev libsepol-dev libssl-dev zlib1g-dev \ - libaudit-dev libssl-dev python3-dev libpython3-dev libwolfssl-dev \ - libapparmor-dev \ - file lsb-release fakeroot pkg-config procps git ssh openssh-client + build-essential curl dpkg-dev ed fakeroot file git libapparmor-dev \ + libaudit-dev libldap2-dev libpam0g-dev libpython3-dev libsasl2-dev \ + libselinux1-dev libsepol-dev libssl-dev libwolfssl-dev lsb-release \ + ncurses-term openssh-client pkg-config procps python3-dev ssh zlib1g-dev RUN useradd -ms /bin/bash build diff -Nru sudo-1.9.13p3/docker/fedora/latest/Dockerfile sudo-1.9.14p2/docker/fedora/latest/Dockerfile --- sudo-1.9.13p3/docker/fedora/latest/Dockerfile 2023-02-14 16:52:36.000000000 +0000 +++ sudo-1.9.14p2/docker/fedora/latest/Dockerfile 2023-07-15 15:37:21.000000000 +0000 @@ -2,7 +2,7 @@ ENV TZ=America/Denver RUN dnf -y install audit-libs-devel cyrus-sasl-devel glibc-devel \ - libasan libubsan libselinux-devel libsepol-devel openldap-devel \ + libasan libubsan libselinux-devel libsepol-devel make openldap-devel \ openssl-devel pam-devel python3-devel rpm-build zlib-devel binutils \ ed gcc gdb git openssh pkg-config procps which RUN useradd -ms /bin/bash build diff -Nru sudo-1.9.13p3/docker/fedora/rawhide/Dockerfile sudo-1.9.14p2/docker/fedora/rawhide/Dockerfile --- sudo-1.9.13p3/docker/fedora/rawhide/Dockerfile 2023-02-14 16:52:36.000000000 +0000 +++ sudo-1.9.14p2/docker/fedora/rawhide/Dockerfile 2023-07-15 15:37:21.000000000 +0000 @@ -2,7 +2,7 @@ ENV TZ=America/Denver RUN dnf -y install audit-libs-devel cyrus-sasl-devel glibc-devel \ - libasan libubsan libselinux-devel libsepol-devel openldap-devel \ + libasan libubsan libselinux-devel libsepol-devel make openldap-devel \ openssl-devel pam-devel python3-devel rpm-build zlib-devel binutils \ ed gcc gdb git openssh pkg-config procps which RUN useradd -ms /bin/bash build diff -Nru sudo-1.9.13p3/docker/ubuntu/devel/Dockerfile sudo-1.9.14p2/docker/ubuntu/devel/Dockerfile --- sudo-1.9.13p3/docker/ubuntu/devel/Dockerfile 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/docker/ubuntu/devel/Dockerfile 2023-07-15 15:37:21.000000000 +0000 @@ -2,9 +2,8 @@ RUN DEBIAN_FRONTEND=noninteractive TZ=America/Denver apt-get update && \ DEBIAN_FRONTEND=noninteractive TZ=America/Denver apt-get install -y \ - build-essential curl dpkg-dev ed libldap2-dev libpam0g-dev \ - libsasl2-dev libselinux1-dev libsepol-dev libssl-dev zlib1g-dev \ - libaudit-dev libssl-dev python3-dev libpython3-dev libwolfssl-dev \ - libapparmor-dev \ - file lsb-release fakeroot pkg-config procps git ssh openssh-client + build-essential curl dpkg-dev ed fakeroot file git libapparmor-dev \ + libaudit-dev libldap2-dev libpam0g-dev libpython3-dev libsasl2-dev \ + libselinux1-dev libsepol-dev libssl-dev libwolfssl-dev lsb-release \ + ncurses-term openssh-client pkg-config procps python3-dev ssh zlib1g-dev RUN useradd -ms /bin/bash build diff -Nru sudo-1.9.13p3/docker/ubuntu/latest/Dockerfile sudo-1.9.14p2/docker/ubuntu/latest/Dockerfile --- sudo-1.9.13p3/docker/ubuntu/latest/Dockerfile 2023-02-14 16:52:36.000000000 +0000 +++ sudo-1.9.14p2/docker/ubuntu/latest/Dockerfile 2023-07-15 15:37:21.000000000 +0000 @@ -2,9 +2,8 @@ RUN DEBIAN_FRONTEND=noninteractive TZ=America/Denver apt-get update && \ DEBIAN_FRONTEND=noninteractive TZ=America/Denver apt-get install -y \ - build-essential curl dpkg-dev ed libldap2-dev libpam0g-dev \ - libsasl2-dev libselinux1-dev libsepol-dev libssl-dev zlib1g-dev \ - libaudit-dev libssl-dev python3-dev libpython3-dev libwolfssl-dev \ - libapparmor-dev \ - file lsb-release fakeroot pkg-config procps git ssh openssh-client + build-essential curl dpkg-dev ed fakeroot file git libapparmor-dev \ + libaudit-dev libldap2-dev libpam0g-dev libpython3-dev libsasl2-dev \ + libselinux1-dev libsepol-dev libssl-dev libwolfssl-dev lsb-release \ + ncurses-term openssh-client pkg-config procps python3-dev ssh zlib1g-dev RUN useradd -ms /bin/bash build diff -Nru sudo-1.9.13p3/docker/ubuntu/rolling/Dockerfile sudo-1.9.14p2/docker/ubuntu/rolling/Dockerfile --- sudo-1.9.13p3/docker/ubuntu/rolling/Dockerfile 2023-02-14 16:52:36.000000000 +0000 +++ sudo-1.9.14p2/docker/ubuntu/rolling/Dockerfile 2023-07-15 15:37:21.000000000 +0000 @@ -2,9 +2,8 @@ RUN DEBIAN_FRONTEND=noninteractive TZ=America/Denver apt-get update && \ DEBIAN_FRONTEND=noninteractive TZ=America/Denver apt-get install -y \ - build-essential curl dpkg-dev ed libldap2-dev libpam0g-dev \ - libsasl2-dev libselinux1-dev libsepol-dev libssl-dev zlib1g-dev \ - libaudit-dev libssl-dev python3-dev libpython3-dev libwolfssl-dev \ - libapparmor-dev \ - file lsb-release fakeroot pkg-config procps git ssh openssh-client + build-essential curl dpkg-dev ed fakeroot file git libapparmor-dev \ + libaudit-dev libldap2-dev libpam0g-dev libpython3-dev libsasl2-dev \ + libselinux1-dev libsepol-dev libssl-dev libwolfssl-dev lsb-release \ + ncurses-term openssh-client pkg-config procps python3-dev ssh zlib1g-dev RUN useradd -ms /bin/bash build diff -Nru sudo-1.9.13p3/docs/Makefile.in sudo-1.9.14p2/docs/Makefile.in --- sudo-1.9.13p3/docs/Makefile.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/docs/Makefile.in 2023-07-15 15:37:21.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2010-2015, 2017-2022 Todd C. Miller +# Copyright (c) 2010-2015, 2017-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -47,6 +47,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localstatedir = @localstatedir@ diff -Nru sudo-1.9.13p3/docs/sudoers.ldap.man.in sudo-1.9.14p2/docs/sudoers.ldap.man.in --- sudo-1.9.13p3/docs/sudoers.ldap.man.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/docs/sudoers.ldap.man.in 2023-07-15 15:37:21.000000000 +0000 @@ -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 "SUDOERS.LDAP" "@mansectform@" "January 16, 2023" "Sudo @PACKAGE_VERSION@" "File Formats Manual" +.TH "SUDOERS.LDAP" "@mansectform@" "June 7, 2023" "Sudo @PACKAGE_VERSION@" "File Formats Manual" .nh .if n .ad l .SH "NAME" @@ -391,15 +391,17 @@ .PP If timed entries are enabled with the \fBSUDOERS_TIMED\fR -configuration directive, the LDAP queries include a sub-filter that -limits retrieval to entries that satisfy the time constraints, if any. +parameter, the LDAP queries include a sub-filter that limits retrieval +to entries that satisfy the time constraints, if any. .PP If the \fBNETGROUP_BASE\fR -configuration directive is present (see +parameter is present and +\fBNETGROUP_QUERY\fR +has not been disabled (see \fIConfiguring ldap.conf\fR -below), queries are performed to determine -the list of netgroups the user belongs to before the sudoers query. +below), queries are performed to determine the list of netgroups +the user belongs to before the sudoers query. This makes it possible to include netgroups in the sudoers query string in the same manner as Unix groups. The third query mentioned above is not performed unless a group provider @@ -437,7 +439,11 @@ \fBNETGROUP_BASE\fR can significantly speed up \fBsudo\fR's -execution time. +execution time as long as the LDAP server supports querying the +\fInisNetgroup\fR +object by its +\fInisNetgroupTriple\fR +attribute. .SS "Differences between LDAP and non-LDAP sudoers" One of the major differences between LDAP and file-based \fIsudoers\fR @@ -802,21 +808,33 @@ \fBNETGROUP_BASE\fR lines may be specified, in which case they are queried in the order specified. .sp -This option can be used to query a user's netgroups directly via LDAP -which is usually faster than fetching every +When this option is enabled, +\fBsudo\fR +will query the LDAP server directly when matching netgroups present in a +\fIsudoRole\fR +instead of relying on the C library's +\fBinnetgr\fR() +function. +.sp +Additionally, if the +\fBNETGROUP_QUERY\fR +parameter (which is enabled by default) has not been disabled, the +user's netgroups will be queried directly via LDAP for use in the +main sudoers query. +This is usually faster than fetching every \fIsudoRole\fR object containing a \fIsudoUser\fR that begins with a \(oq+\(cq -prefix. -The NIS schema used by some LDAP servers need a modification to +prefix and checking whether the user is a member of each one. +The NIS schema used by some LDAP servers needs a modification to support querying the \fInisNetgroup\fR object by its \fInisNetgroupTriple\fR -member. -OpenLDAP's +attribute. +For example, OpenLDAP's \fBslapd\fR requires the following change to the \fInisNetgroupTriple\fR @@ -831,6 +849,62 @@ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) .RE .fi +.RS 6n +.sp +Before enabling +\fBNETGROUP_BASE\fR, +you should verify that your LDAP server supports matching +\fInisNetgroupTriple\fR. +For example, using +\fBldapsearch\fR: +.nf +.sp +.RS 10n +$ ldapsearch -b $NETGROUP_BASE \e + '(&(objectClass=nisNetgroup)(nisNetgroupTriple=\e28*,USER,\e29))' +.RE +.fi +.sp +where your +\fInisNetgroup\fR +data includes an object with the following +\fInisNetgroupTriple\fR: +.sp +.RS 12n +nisNetgroupTriple: (,USER,) +.RE +.RE +.TP 6n +\fBNETGROUP_QUERY\fR \fIon/true/yes/off/false/no\fR +The +\fBNETGROUP_QUERY\fR +parameter indicates whether or not the LDAP server supports querying +\fInisNetgroup\fR +objects by matching on +\fInisNetgroupTriple\fR +attributes. +By default, +\fBsudoers\fR +expects to be able to perform queries that match on +\fInisNetgroupTriple\fR +attributes when +\fBNETGROUP_BASE\fR +is set, but not all LDAP servers support this. +.sp +If +\fBNETGROUP_QUERY\fR +is disabled, +\fBsudoers\fR +will not attempt to determine the list of netgroups the user belongs +to, but will still use +\fBNETGROUP_BASE\fR +directly when matching netgroups. +This can be used to support netgroups on systems that lack the +\fBinnetgr\fR() +C library function. +See the description of the +\fBNETGROUP_BASE\fR +parameter for more information. .TP 6n \fBNETGROUP_SEARCH_FILTER\fR \fIldap_filter\fR An LDAP filter which is used to restrict the set of records returned diff -Nru sudo-1.9.13p3/docs/sudoers.ldap.mdoc.in sudo-1.9.14p2/docs/sudoers.ldap.mdoc.in --- sudo-1.9.13p3/docs/sudoers.ldap.mdoc.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/docs/sudoers.ldap.mdoc.in 2023-07-15 15:37:21.000000000 +0000 @@ -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 January 16, 2023 +.Dd June 7, 2023 .Dt SUDOERS.LDAP @mansectform@ .Os Sudo @PACKAGE_VERSION@ .Sh NAME @@ -371,15 +371,17 @@ .Pp If timed entries are enabled with the .Sy SUDOERS_TIMED -configuration directive, the LDAP queries include a sub-filter that -limits retrieval to entries that satisfy the time constraints, if any. +parameter, the LDAP queries include a sub-filter that limits retrieval +to entries that satisfy the time constraints, if any. .Pp If the .Sy NETGROUP_BASE -configuration directive is present (see +parameter is present and +.Sy NETGROUP_QUERY +has not been disabled (see .Sx Configuring ldap.conf -below), queries are performed to determine -the list of netgroups the user belongs to before the sudoers query. +below), queries are performed to determine the list of netgroups +the user belongs to before the sudoers query. This makes it possible to include netgroups in the sudoers query string in the same manner as Unix groups. The third query mentioned above is not performed unless a group provider @@ -417,7 +419,11 @@ .Sy NETGROUP_BASE can significantly speed up .Nm sudo Ns 's -execution time. +execution time as long as the LDAP server supports querying the +.Em nisNetgroup +object by its +.Em nisNetgroupTriple +attribute. .Ss Differences between LDAP and non-LDAP sudoers One of the major differences between LDAP and file-based .Em sudoers @@ -753,21 +759,33 @@ .Sy NETGROUP_BASE lines may be specified, in which case they are queried in the order specified. .Pp -This option can be used to query a user's netgroups directly via LDAP -which is usually faster than fetching every +When this option is enabled, +.Nm sudo +will query the LDAP server directly when matching netgroups present in a +.Em sudoRole +instead of relying on the C library's +.Fn innetgr +function. +.Pp +Additionally, if the +.Sy NETGROUP_QUERY +parameter (which is enabled by default) has not been disabled, the +user's netgroups will be queried directly via LDAP for use in the +main sudoers query. +This is usually faster than fetching every .Em sudoRole object containing a .Em sudoUser that begins with a .Ql + -prefix. -The NIS schema used by some LDAP servers need a modification to +prefix and checking whether the user is a member of each one. +The NIS schema used by some LDAP servers needs a modification to support querying the .Em nisNetgroup object by its .Em nisNetgroupTriple -member. -OpenLDAP's +attribute. +For example, OpenLDAP's .Sy slapd requires the following change to the .Em nisNetgroupTriple @@ -779,6 +797,54 @@ SUBSTR caseIgnoreIA5SubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 ) .Ed +.Pp +Before enabling +.Sy NETGROUP_BASE , +you should verify that your LDAP server supports matching +.Em nisNetgroupTriple . +For example, using +.Sy ldapsearch : +.Bd -literal -offset 4n +$ ldapsearch -b $NETGROUP_BASE \e + '(&(objectClass=nisNetgroup)(nisNetgroupTriple=\e28*,USER,\e29))' +.Ed +.Pp +where your +.Em nisNetgroup +data includes an object with the following +.Em nisNetgroupTriple : +.Pp +.Dl nisNetgroupTriple: (,USER,) +.It Sy NETGROUP_QUERY Ar on/true/yes/off/false/no +The +.Sy NETGROUP_QUERY +parameter indicates whether or not the LDAP server supports querying +.Em nisNetgroup +objects by matching on +.Em nisNetgroupTriple +attributes. +By default, +.Nm sudoers +expects to be able to perform queries that match on +.Em nisNetgroupTriple +attributes when +.Sy NETGROUP_BASE +is set, but not all LDAP servers support this. +.Pp +If +.Sy NETGROUP_QUERY +is disabled, +.Nm sudoers +will not attempt to determine the list of netgroups the user belongs +to, but will still use +.Sy NETGROUP_BASE +directly when matching netgroups. +This can be used to support netgroups on systems that lack the +.Fn innetgr +C library function. +See the description of the +.Sy NETGROUP_BASE +parameter for more information. .It Sy NETGROUP_SEARCH_FILTER Ar ldap_filter An LDAP filter which is used to restrict the set of records returned when performing an LDAP netgroup query. diff -Nru sudo-1.9.13p3/docs/sudoers.man.in sudo-1.9.14p2/docs/sudoers.man.in --- sudo-1.9.13p3/docs/sudoers.man.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/docs/sudoers.man.in 2023-07-15 15:37:21.000000000 +0000 @@ -25,7 +25,7 @@ .nr BA @BAMAN@ .nr LC @LCMAN@ .nr PS @PSMAN@ -.TH "SUDOERS" "@mansectform@" "January 16, 2023" "Sudo @PACKAGE_VERSION@" "File Formats Manual" +.TH "SUDOERS" "@mansectform@" "June 20, 2023" "Sudo @PACKAGE_VERSION@" "File Formats Manual" .nh .if n .ad l .SH "NAME" @@ -475,14 +475,34 @@ \fBsudo\fR is running on. .PP -Other +Other settings may influence the command environment: +.TP 3n +\fB\(bu\fR \fBsudoers\fR -options may influence the command environment, such as +options such as \fIalways_set_home\fR, \fIsecure_path\fR, \fIset_logname\fR, +\fIset_home\fR, +and +\fIsetenv\fR. +.TP 3n +\fB\(bu\fR +Command tags, such as +\fRSETENV\fR +and +\fRNOSETENV\fR. +Note that +\fRSETENV\fR +is implied if the command matched is +\fBALL\fR. +.TP 3n +\fB\(bu\fR +\fBsudo\fR +options, such as +\fB\-E\fR and -\fIset_home\fR. +\fB\-i\fR. .PP On systems that support PAM where the \fBpam_env\fR @@ -1219,21 +1239,45 @@ values at run-time via one or more \fIDefault_Entry\fR lines. -These may affect all users on any host, all users on a specific host, a -specific user, a specific command, or commands being run as a specific user. +These may affect all users on any host +(\(oqDefaults\(cq), +all users on a specific host +(\(oqDefaults@host\(cq), +a specific user +(\(oqDefaults:user\(cq), +a specific command +(\(oqDefaults!cmnd\(cq), +or commands being run as a specific user +(\(oqDefaults>runasuser\(cq). +.PP +White space is not permitted between +\(oqDefaults\(cq +and the +\(oq@\(cq, +\(oq\&:\(cq, +\(oq\&!\(cq, +or +\(oq>\(cq +characters. +While a comma-separated list may be used in place of a single value after the +\(oq@\(cq, +\(oq\&:\(cq, +\(oq\&!\(cq, +or +\(oq>\(cq +character, using an alias instead of a list is often improve readability. Per-command entries may not include command line arguments. If you need to specify arguments, define a \fICmnd_Alias\fR -and reference -that instead. +and reference that instead. .nf .sp .RS 0n Default_Type ::= 'Defaults' | - 'Defaults' '@' Host_List | - 'Defaults' ':' User_List | - 'Defaults' '!' Cmnd_List | - 'Defaults' '>' Runas_List + 'Defaults@' Host_List | + 'Defaults:' User_List | + 'Defaults!' Cmnd_List | + 'Defaults>' Runas_List Default_Entry ::= Default_Type Parameter_List @@ -1379,7 +1423,7 @@ consists of two \fIRunas_List\fRs (as defined above) separated by a colon -(\(oq:\&\(cq) +(\(oq\&:\(cq) and enclosed in a set of parentheses. The first \fIRunas_List\fR @@ -4190,8 +4234,7 @@ use_pty If set, and \fBsudo\fR -is running in a terminal, the command will be run in a pseudo-terminal -(even if no I/O logging is being done). +is running in a terminal, the command will be run in a new pseudo-terminal. If the \fBsudo\fR process is not attached to a terminal, @@ -4207,8 +4250,10 @@ By running the command in a separate pseudo-terminal, this attack is no longer possible. This flag is -\fIoff\fR -by default. +\fIon\fR +by default for +\fBsudo\fR +1.9.14 and above. .TP 18n user_command_timeouts If set, the user may specify a timeout on the command line. diff -Nru sudo-1.9.13p3/docs/sudoers.mdoc.in sudo-1.9.14p2/docs/sudoers.mdoc.in --- sudo-1.9.13p3/docs/sudoers.mdoc.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/docs/sudoers.mdoc.in 2023-07-15 15:37:21.000000000 +0000 @@ -25,7 +25,7 @@ .nr BA @BAMAN@ .nr LC @LCMAN@ .nr PS @PSMAN@ -.Dd January 16, 2023 +.Dd June 20, 2023 .Dt SUDOERS @mansectform@ .Os Sudo @PACKAGE_VERSION@ .Sh NAME @@ -461,14 +461,33 @@ .Nm sudo is running on. .Pp -Other +Other settings may influence the command environment: +.Bl -bullet -width 1n +.It .Nm -options may influence the command environment, such as +options such as .Em always_set_home , .Em secure_path , .Em set_logname , +.Em set_home , +and +.Em setenv . +.It +Command tags, such as +.Dv SETENV +and +.Dv NOSETENV . +Note that +.Dv SETENV +is implied if the command matched is +.Sy ALL . +.It +.Nm sudo +options, such as +.Fl E and -.Em set_home . +.Fl i . +.El .Pp On systems that support PAM where the .Sy pam_env @@ -1169,19 +1188,43 @@ values at run-time via one or more .Em Default_Entry lines. -These may affect all users on any host, all users on a specific host, a -specific user, a specific command, or commands being run as a specific user. +These may affect all users on any host +.Pq Sq Defaults , +all users on a specific host +.Pq Sq Defaults@host , +a specific user +.Pq Sq Defaults:user , +a specific command +.Pq Sq Defaults!cmnd , +or commands being run as a specific user +.Pq Sq Defaults>runasuser . +.Pp +White space is not permitted between +.Sq Defaults +and the +.Ql @ , +.Ql \&: , +.Ql \&! , +or +.Ql > +characters. +While a comma-separated list may be used in place of a single value after the +.Ql @ , +.Ql \&: , +.Ql \&! , +or +.Ql > +character, using an alias instead of a list is often improve readability. Per-command entries may not include command line arguments. If you need to specify arguments, define a .Em Cmnd_Alias -and reference -that instead. +and reference that instead. .Bd -literal Default_Type ::= 'Defaults' | - 'Defaults' '@' Host_List | - 'Defaults' ':' User_List | - 'Defaults' '!' Cmnd_List | - 'Defaults' '>' Runas_List + 'Defaults@' Host_List | + 'Defaults:' User_List | + 'Defaults!' Cmnd_List | + 'Defaults>' Runas_List Default_Entry ::= Default_Type Parameter_List @@ -1332,7 +1375,7 @@ consists of two .Em Runas_List Ns s (as defined above) separated by a colon -.Pq Ql :\& +.Pq Ql \&: and enclosed in a set of parentheses. The first .Em Runas_List @@ -3964,8 +4007,7 @@ .It use_pty If set, and .Nm sudo -is running in a terminal, the command will be run in a pseudo-terminal -(even if no I/O logging is being done). +is running in a terminal, the command will be run in a new pseudo-terminal. If the .Nm sudo process is not attached to a terminal, @@ -3981,8 +4023,10 @@ By running the command in a separate pseudo-terminal, this attack is no longer possible. This flag is -.Em off -by default. +.Em on +by default for +.Nm sudo +1.9.14 and above. .It user_command_timeouts If set, the user may specify a timeout on the command line. If the timeout expires before the command has exited, the diff -Nru sudo-1.9.13p3/docs/sudo.man.in sudo-1.9.14p2/docs/sudo.man.in --- sudo-1.9.13p3/docs/sudo.man.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/docs/sudo.man.in 2023-07-15 15:37:21.000000000 +0000 @@ -25,7 +25,7 @@ .nr BA @BAMAN@ .nr LC @LCMAN@ .nr PS @PSMAN@ -.TH "SUDO" "@mansectsu@" "January 16, 2023" "Sudo @PACKAGE_VERSION@" "System Manager's Manual" +.TH "SUDO" "@mansectsu@" "June 18, 2023" "Sudo @PACKAGE_VERSION@" "System Manager's Manual" .nh .if n .ad l .SH "NAME" @@ -990,6 +990,8 @@ \fIcommand\fR's exit status to the security policy's close function, as well as the close function of any configured audit plugin, and exits. +This mode is the default for sudo versions 1.9.14 and above when using +the sudoers policy. .PP If no pty is used, \fBsudo\fR @@ -1031,6 +1033,8 @@ and \fIpam_setcred\fR are enabled by default on systems using PAM. +This mode is the default for sudo versions prior to 1.9.14 when using +the sudoers policy. .PP On systems that use PAM, the security policy's close function is responsible for closing the PAM session. diff -Nru sudo-1.9.13p3/docs/sudo.mdoc.in sudo-1.9.14p2/docs/sudo.mdoc.in --- sudo-1.9.13p3/docs/sudo.mdoc.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/docs/sudo.mdoc.in 2023-07-15 15:37:21.000000000 +0000 @@ -24,7 +24,7 @@ .nr BA @BAMAN@ .nr LC @LCMAN@ .nr PS @PSMAN@ -.Dd January 16, 2023 +.Dd June 18, 2023 .Dt SUDO @mansectsu@ .Os Sudo @PACKAGE_VERSION@ .Sh NAME @@ -934,6 +934,8 @@ .Ar command Ns 's exit status to the security policy's close function, as well as the close function of any configured audit plugin, and exits. +This mode is the default for sudo versions 1.9.14 and above when using +the sudoers policy. .Pp If no pty is used, .Nm @@ -975,6 +977,8 @@ and .Em pam_setcred are enabled by default on systems using PAM. +This mode is the default for sudo versions prior to 1.9.14 when using +the sudoers policy. .Pp On systems that use PAM, the security policy's close function is responsible for closing the PAM session. diff -Nru sudo-1.9.13p3/docs/sudo_plugin_python.man.in sudo-1.9.14p2/docs/sudo_plugin_python.man.in --- sudo-1.9.13p3/docs/sudo_plugin_python.man.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/docs/sudo_plugin_python.man.in 2023-07-15 15:37:21.000000000 +0000 @@ -94,7 +94,7 @@ When the plugin loads, \fBsudo\fR will create an instance of this class and call the methods. -The actual methods required depent on the type of the plugin, +The actual methods required depend on the type of the plugin, but most return an \fIint\fR result code, as documented in diff -Nru sudo-1.9.13p3/docs/sudo_plugin_python.mdoc.in sudo-1.9.14p2/docs/sudo_plugin_python.mdoc.in --- sudo-1.9.13p3/docs/sudo_plugin_python.mdoc.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/docs/sudo_plugin_python.mdoc.in 2023-07-15 15:37:21.000000000 +0000 @@ -83,7 +83,7 @@ When the plugin loads, .Nm sudo will create an instance of this class and call the methods. -The actual methods required depent on the type of the plugin, +The actual methods required depend on the type of the plugin, but most return an .Vt int result code, as documented in diff -Nru sudo-1.9.13p3/docs/UPGRADE.md sudo-1.9.14p2/docs/UPGRADE.md --- sudo-1.9.13p3/docs/UPGRADE.md 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/docs/UPGRADE.md 2023-07-15 15:37:21.000000000 +0000 @@ -1,6 +1,30 @@ Notes on upgrading from an older release ======================================== + * Upgrading from a version prior to 1.9.14: + + Sudo now runs commands in a new pseudo-terminal by default. This + can prevent a malicious program run via sudo from accessing the + user's terminal device after the command completes. + + When sudo runs a command in a new pseudo-terminal, an additional + process is created to monitor the command's status and pass + terminal control signals between the two terminals. See the + "Process model" subsection in the sudo manual and the description + of the "use_pty" option in the sudoers manual for more information. + + A side effect of running the command in a new pseudo-terminal + is that sudo must pass input from the user's terminal to the + pseudo-terminal, even if the command being run does not require + the input. The "exec_background" option in sudoers can be used + to prevent this, but some screen-oriented commands may not operate + properly when run as a background process. + + To restore the historic behavior where a command is run in the + user's terminal, add the following line to the sudoers file: + + Defaults !use_pty + * Upgrading from a version prior to 1.9.13: Sudo now builds AIX-style shared libraries and dynamic shared @@ -166,7 +190,6 @@ those names, sudo, and visudo will report a syntax error with a message like "syntax error: unexpected TIMEOUT, expecting ALIAS". - Starting with version 1.9.3, sudoers rules must end in either Prior to version 1.8.20, when log_input, log_output, or use_pty were enabled, if any of the standard input, output, or error were not connected to a terminal, sudo would use a pipe. The diff -Nru sudo-1.9.13p3/docs/visudo.man.in sudo-1.9.14p2/docs/visudo.man.in --- sudo-1.9.13p3/docs/visudo.man.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/docs/visudo.man.in 2023-07-15 15:37:21.000000000 +0000 @@ -21,7 +21,7 @@ .\" Agency (DARPA) and Air Force Research Laboratory, Air Force .\" Materiel Command, USAF, under agreement number F39502-99-1-0512. .\" -.TH "VISUDO" "@mansectsu@" "January 16, 2023" "Sudo @PACKAGE_VERSION@" "System Manager's Manual" +.TH "VISUDO" "@mansectsu@" "March 20, 2023" "Sudo @PACKAGE_VERSION@" "System Manager's Manual" .nh .if n .ad l .SH "NAME" @@ -464,6 +464,33 @@ \fIsudoers\fR file. .TP 6n +\fRignoring editor backup file\fR +While processing a +\fI@includedir\fR +or +\fI#includedir\fR, +a file was found with a name that ends in +\(oq~\(cq +or +\fI.bak\fR. +Such files are skipped by +\fBsudo\fR +and +\fBvisudo\fR. +.TP 6n +\fRignoring file name containing '.'\fR +While processing a +\fI@includedir\fR +or +\fI#includedir\fR, +a file was found with a name that contains a +\(oq.\&\(cq +character. +Such files are skipped by +\fBsudo\fR +and +\fBvisudo\fR. +.TP 6n \fRunknown defaults entry \&"name\&"\fR The \fIsudoers\fR diff -Nru sudo-1.9.13p3/docs/visudo.mdoc.in sudo-1.9.14p2/docs/visudo.mdoc.in --- sudo-1.9.13p3/docs/visudo.mdoc.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/docs/visudo.mdoc.in 2023-07-15 15:37:21.000000000 +0000 @@ -20,7 +20,7 @@ .\" Agency (DARPA) and Air Force Research Laboratory, Air Force .\" Materiel Command, USAF, under agreement number F39502-99-1-0512. .\" -.Dd January 16, 2023 +.Dd March 20, 2023 .Dt VISUDO @mansectsu@ .Os Sudo @PACKAGE_VERSION@ .Sh NAME @@ -443,6 +443,31 @@ the .Em sudoers file. +.It Li ignoring editor backup file +While processing a +.Em @includedir +or +.Em #includedir , +a file was found with a name that ends in +.Ql ~ +or +.Em .bak . +Such files are skipped by +.Nm sudo +and +.Nm . +.It Li ignoring file name containing '.' +While processing a +.Em @includedir +or +.Em #includedir , +a file was found with a name that contains a +.Ql .\& +character. +Such files are skipped by +.Nm sudo +and +.Nm . .It Li unknown defaults entry \&"name\&" The .Em sudoers diff -Nru sudo-1.9.13p3/etc/codespell.exclude sudo-1.9.14p2/etc/codespell.exclude --- sudo-1.9.13p3/etc/codespell.exclude 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/etc/codespell.exclude 2023-07-15 15:37:21.000000000 +0000 @@ -32,3 +32,4 @@ * If path doesn't end in /, return true iff cmnd & path name the same inode; * Tim Fraser echo ".Nd sudo" >> conftest + * as per FIPS 180-4: Secure Hash Standard (SHS) diff -Nru sudo-1.9.13p3/etc/codespell.ignore sudo-1.9.14p2/etc/codespell.ignore --- sudo-1.9.13p3/etc/codespell.ignore 2023-02-14 16:52:36.000000000 +0000 +++ sudo-1.9.14p2/etc/codespell.ignore 2023-07-15 15:37:21.000000000 +0000 @@ -1,16 +1,19 @@ SOM VAS alloced +anull +clen edn fIDN +fpt ist +nome numer pleas sav +siz statics thur toke vas wit -siz -clen diff -Nru sudo-1.9.13p3/examples/Makefile.in sudo-1.9.14p2/examples/Makefile.in --- sudo-1.9.13p3/examples/Makefile.in 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/examples/Makefile.in 2023-07-15 15:37:21.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2014, 2017-2022 Todd C. Miller +# Copyright (c) 2014, 2017-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -40,6 +40,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localstatedir = @localstatedir@ diff -Nru sudo-1.9.13p3/include/Makefile.in sudo-1.9.14p2/include/Makefile.in --- sudo-1.9.13p3/include/Makefile.in 2023-02-14 16:52:36.000000000 +0000 +++ sudo-1.9.14p2/include/Makefile.in 2023-07-15 15:37:21.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2011-2015, 2017-2018 Todd C. Miller +# Copyright (c) 2011-2015, 2017-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -40,6 +40,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localstatedir = @localstatedir@ diff -Nru sudo-1.9.13p3/include/sudo_compat.h sudo-1.9.14p2/include/sudo_compat.h --- sudo-1.9.13p3/include/sudo_compat.h 2023-03-04 15:50:09.000000000 +0000 +++ sudo-1.9.14p2/include/sudo_compat.h 2023-07-15 15:37:23.000000000 +0000 @@ -103,6 +103,14 @@ # endif #endif +#if defined(HAVE_DECL_SYMLOOP_MAX) && !HAVE_DECL_SYMLOOP_MAX +# if defined(HAVE_DECL__POSIX_SYMLOOP_MAX) && HAVE_DECL__POSIX_SYMLOOP_MAX +# define SYMLOOP_MAX _POSIX_SYMLOOP_MAX +# else +# define SYMLOOP_MAX 8 +# endif +#endif + /* ACCESSPERMS and ALLPERMS are handy BSDisms. */ #ifndef ACCESSPERMS # define ACCESSPERMS 00777 @@ -351,11 +359,6 @@ # undef freezero # define freezero(_a, _b) sudo_freezero((_a), (_b)) #endif /* HAVE_FREEZERO */ -#ifdef PREFER_PORTABLE_GETCWD -sudo_dso_public char *sudo_getcwd(char *, size_t size); -# undef getcwd -# define getcwd(_a, _b) sudo_getcwd((_a), (_b)) -#endif /* PREFER_PORTABLE_GETCWD */ #ifndef HAVE_GETGROUPLIST sudo_dso_public int sudo_getgrouplist(const char *name, GETGROUPS_T basegid, GETGROUPS_T *groups, int *ngroupsp); # undef getgrouplist @@ -552,6 +555,11 @@ # undef reallocarray # define reallocarray(_a, _b, _c) sudo_reallocarray((_a), (_b), (_c)) #endif /* HAVE_REALLOCARRAY */ +#ifndef HAVE_REALPATH +sudo_dso_public void *sudo_realpath(const char *path, char *resolved); +# undef realpath +# define realpath(_a, _b) sudo_realpath((_a), (_b)) +#endif /* HAVE_REALPATH */ #ifndef HAVE_DUP3 sudo_dso_public int sudo_dup3(int oldd, int newd, int flags); # undef dup3 diff -Nru sudo-1.9.13p3/include/sudo_event.h sudo-1.9.14p2/include/sudo_event.h --- sudo-1.9.13p3/include/sudo_event.h 2023-02-14 16:52:36.000000000 +0000 +++ sudo-1.9.14p2/include/sudo_event.h 2023-07-15 15:37:23.000000000 +0000 @@ -64,7 +64,7 @@ struct sudo_ev_siginfo_container { void *closure; siginfo_t *siginfo; - char si_buf[1]; + char si_buf[]; }; /* Member of struct sudo_event_base. */ diff -Nru sudo-1.9.13p3/include/sudo_eventlog.h sudo-1.9.14p2/include/sudo_eventlog.h --- sudo-1.9.13p3/include/sudo_eventlog.h 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/include/sudo_eventlog.h 2023-07-15 15:37:23.000000000 +0000 @@ -130,6 +130,7 @@ struct sudo_lbuf; typedef bool (*eventlog_json_callback_t)(struct json_container *, void *); +/* eventlog.c */ 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); bool eventlog_alert(const struct eventlog *evlog, int flags, struct timespec *alert_time, const char *reason, const char *errstr); @@ -137,8 +138,9 @@ 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 *jsonc, const struct eventlog *evlog); bool eventlog_store_sudo(int event_type, const struct eventlog *evlog, struct sudo_lbuf *lbuf); -size_t eventlog_writeln(FILE *fp, char *line, size_t len, size_t maxlen); void eventlog_free(struct eventlog *evlog); + +/* eventlog_conf.c */ void eventlog_set_type(int type); void eventlog_set_format(enum eventlog_format format); void eventlog_set_syslog_acceptpri(int pri); @@ -159,4 +161,13 @@ void eventlog_set_close_log(void (*fn)(int type, FILE *)); const struct eventlog_config *eventlog_getconf(void); +/* logwrap.c */ +size_t eventlog_writeln(FILE *fp, char *line, size_t len, size_t maxlen); + +/* parse_json.c */ +struct eventlog_json_object; +struct eventlog_json_object *eventlog_json_read(FILE *fp, const char *filename); +bool eventlog_json_parse(struct eventlog_json_object *object, struct eventlog *evlog); +void eventlog_json_free(struct eventlog_json_object *root); + #endif /* SUDO_EVENTLOG_H */ diff -Nru sudo-1.9.13p3/include/sudo_iolog.h sudo-1.9.14p2/include/sudo_iolog.h --- sudo-1.9.13p3/include/sudo_iolog.h 2023-02-14 16:52:36.000000000 +0000 +++ sudo-1.9.14p2/include/sudo_iolog.h 2023-07-15 15:37:23.000000000 +0000 @@ -119,7 +119,7 @@ bool iolog_nextid(const char *iolog_dir, char sessid[7]); bool iolog_open(struct iolog_file *iol, int dfd, int iofd, const char *mode); bool iolog_write_info_file(int dfd, struct eventlog *evlog); -char *iolog_gets(struct iolog_file *iol, char *buf, size_t nbytes, const char **errsttr); +char *iolog_gets(struct iolog_file *iol, char *buf, int bufsize, const char **errsttr); const char *iolog_fd_to_name(int iofd); int iolog_openat(int fdf, const char *path, int flags); off_t iolog_seek(struct iolog_file *iol, off_t offset, int whence); diff -Nru sudo-1.9.13p3/include/sudo_util.h sudo-1.9.14p2/include/sudo_util.h --- sudo-1.9.13p3/include/sudo_util.h 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/include/sudo_util.h 2023-07-15 15:39:28.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2013-2022 Todd C. Miller + * Copyright (c) 2013-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -49,46 +49,6 @@ #endif /* - * Macros for operating on struct timeval. - */ -#define sudo_timevalclear(tv) ((tv)->tv_sec = (tv)->tv_usec = 0) - -#define sudo_timevalisset(tv) ((tv)->tv_sec || (tv)->tv_usec) - -#define sudo_timevalcmp(tv1, tv2, op) \ - (((tv1)->tv_sec == (tv2)->tv_sec) ? \ - ((tv1)->tv_usec op (tv2)->tv_usec) : \ - ((tv1)->tv_sec op (tv2)->tv_sec)) - -#define sudo_timevaladd(tv1, tv2, tv3) \ - do { \ - (tv3)->tv_sec = (tv1)->tv_sec + (tv2)->tv_sec; \ - (tv3)->tv_usec = (tv1)->tv_usec + (tv2)->tv_usec; \ - if ((tv3)->tv_usec >= 1000000) { \ - (tv3)->tv_sec++; \ - (tv3)->tv_usec -= 1000000; \ - } \ - } while (0) - -#define sudo_timevalsub(tv1, tv2, tv3) \ - do { \ - (tv3)->tv_sec = (tv1)->tv_sec - (tv2)->tv_sec; \ - (tv3)->tv_usec = (tv1)->tv_usec - (tv2)->tv_usec; \ - if ((tv3)->tv_usec < 0) { \ - (tv3)->tv_sec--; \ - (tv3)->tv_usec += 1000000; \ - } \ - } while (0) - -#ifndef TIMEVAL_TO_TIMESPEC -# define TIMEVAL_TO_TIMESPEC(tv, ts) \ - do { \ - (ts)->tv_sec = (tv)->tv_sec; \ - (ts)->tv_nsec = (tv)->tv_usec * 1000; \ - } while (0) -#endif - -/* * Macros for operating on struct timespec. */ #define sudo_timespecclear(ts) ((ts)->tv_sec = (ts)->tv_nsec = 0) @@ -120,6 +80,14 @@ } \ } while (0) +#ifndef TIMEVAL_TO_TIMESPEC +# define TIMEVAL_TO_TIMESPEC(tv, ts) \ + do { \ + (ts)->tv_sec = (tv)->tv_sec; \ + (ts)->tv_nsec = (tv)->tv_usec * 1000; \ + } while (0) +#endif + #ifndef TIMESPEC_TO_TIMEVAL # define TIMESPEC_TO_TIMEVAL(tv, ts) \ do { \ @@ -305,12 +273,16 @@ #define SUDO_PATH_GROUP_WRITABLE -5 sudo_dso_public int sudo_secure_dir_v1(const char *path, uid_t uid, gid_t gid, struct stat *sb); #define sudo_secure_dir(_a, _b, _c, _d) sudo_secure_dir_v1((_a), (_b), (_c), (_d)) +sudo_dso_public int sudo_secure_fd_v1(int fd, unsigned int type, uid_t uid, gid_t gid, struct stat *sb); +#define sudo_secure_fd(_a, _b, _c, _d, _e) sudo_secure_fd_v1((_a), (_b), (_c), (_d), (_e)) sudo_dso_public int sudo_secure_file_v1(const char *path, uid_t uid, gid_t gid, struct stat *sb); #define sudo_secure_file(_a, _b, _c, _d) sudo_secure_file_v1((_a), (_b), (_c), (_d)) sudo_dso_public int sudo_secure_open_file_v1(const char *path, uid_t uid, gid_t gid, struct stat *sb, int *error); #define sudo_secure_open_file(_a, _b, _c, _d, _e) sudo_secure_open_file_v1((_a), (_b), (_c), (_d), (_e)) sudo_dso_public int sudo_secure_open_dir_v1(const char *path, uid_t uid, gid_t gid, struct stat *sb, int *error); #define sudo_secure_open_dir(_a, _b, _c, _d, _e) sudo_secure_open_dir_v1((_a), (_b), (_c), (_d), (_e)) +sudo_dso_public int sudo_open_conf_path_v1(const char *path, char *name, size_t namesize, int (*fn)(const char *, int)); +#define sudo_open_conf_path(_a, _b, _c, _d) sudo_open_conf_path_v1((_a), (_b), (_c), (_d)) /* setgroups.c */ sudo_dso_public int sudo_setgroups_v1(int ngids, const GETGROUPS_T *gids); @@ -345,13 +317,15 @@ extern int (*sudo_printf)(int msg_type, const char *fmt, ...); /* term.c */ +#define SUDO_TERM_ISIG 0x01U +#define SUDO_TERM_OFLAG 0x02U sudo_dso_public bool sudo_term_cbreak_v1(int fd); #define sudo_term_cbreak(_a) sudo_term_cbreak_v1((_a)) sudo_dso_public bool sudo_term_copy_v1(int src, int dst); #define sudo_term_copy(_a, _b) sudo_term_copy_v1((_a), (_b)) sudo_dso_public bool sudo_term_noecho_v1(int fd); #define sudo_term_noecho(_a) sudo_term_noecho_v1((_a)) -sudo_dso_public bool sudo_term_raw_v1(int fd, int isig); +sudo_dso_public bool sudo_term_raw_v1(int fd, unsigned int flags); #define sudo_term_raw(_a, _b) sudo_term_raw_v1((_a), (_b)) sudo_dso_public bool sudo_term_restore_v1(int fd, bool flush); #define sudo_term_restore(_a, _b) sudo_term_restore_v1((_a), (_b)) @@ -364,7 +338,8 @@ /* ttysize.c */ sudo_dso_public void sudo_get_ttysize_v1(int *rowp, int *colp); -#define sudo_get_ttysize(_a, _b) sudo_get_ttysize_v1((_a), (_b)) +sudo_dso_public void sudo_get_ttysize_v2(int fd, int *rowp, int *colp); +#define sudo_get_ttysize(_a, _b, _c) sudo_get_ttysize_v2((_a), (_b), (_c)) /* uuid.c */ sudo_dso_public void sudo_uuid_create_v1(unsigned char uuid_out[16]); diff -Nru sudo-1.9.13p3/INSTALL.md sudo-1.9.14p2/INSTALL.md --- sudo-1.9.13p3/INSTALL.md 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/INSTALL.md 2023-07-15 15:37:21.000000000 +0000 @@ -10,16 +10,16 @@ ## System requirements -To build sudo from the source distribution you need a POSIX-compliant -operating system (any modern version of BSD, Linux, or Unix should work), -an ANSI/ISO C compiler that supports the "long long" type, variadic -macros (a C99 feature) as well as the ar, make, and ranlib utilities. +To build sudo from the source distribution you will need a +POSIX-compliant operating system (any modern version of BSD, Linux, +or Unix should work), a C compiler that conforms to ISO C99 or +higher, and the ar, make, and ranlib utilities. If you wish to modify the parser then you will need flex version -2.5.2 or later and either bison or byacc (sudo comes with a -pre-generated parser). You'll also have to run configure with the ---with-devel option or pass DEVEL=1 to make. You can get flex from -https://github.com/westes/flex/. You can get GNU bison from +2.5.2 or later and either bison or byacc (sudo comes with a parser +generated with GNU bison). You'll also have to run configure with +the --with-devel option or pass DEVEL=1 to make. You can get flex +from https://github.com/westes/flex/. You can get GNU bison from https://ftp.gnu.org/pub/gnu/bison/ or any GNU mirror. Some systems will also require that development library packages be @@ -110,7 +110,8 @@ Install plugins and helper programs in DIR/sudo [PREFIX/libexec/sudo] --sysconfdir=DIR - Look for `sudo.conf` and `sudoers` files in DIR. [/etc] + Look for configuration files such as `sudo.conf` and `sudoers` + in DIR. [/etc] --includedir=DIR Install sudo_plugin.h include file in DIR [PREFIX/include] @@ -226,9 +227,11 @@ -fstack-clash-protection, -fcf-protection and linking with -zrelro, -znow, and -znoexecstack where supported. - --disable-ssp - Disable use of the -fstack-protector compiler option. - This does not affect the other hardening options. + --disable-largefile + Disable support for large (64-bit) files on 32-bit systems + where the maximum file size is normally 4GB. By default, + configure will enable support for 64-bit file sizes if + supported by the operating system. --disable-leaks Avoid leaking memory even when we are headed for exit, @@ -278,6 +281,10 @@ instead. This option may only be used in conjunction with the --enable-static-sudoers option. + --disable-ssp + Disable use of the -fstack-protector compiler option. + This does not affect the other hardening options. + --enable-static-sudoers By default, the sudoers plugin is built and installed as a dynamic shared object. When the --enable-static-sudoers @@ -294,6 +301,11 @@ use the /usr/lib/tmpfiles.d directory if the file /usr/lib/tmpfiles.d/systemd.conf exists. + --disable-year2038 + Disable support for dates after January 2038. By default, + configure will enable support for 64-bit time_t values if + supported by the operating system. + --enable-zlib[=location] Enable the use of the zlib compress library when storing I/O log files. If specified, location is the base directory @@ -347,6 +359,15 @@ ### Optional features: + --enable-adminconf=[DIR] + Search for configuration files in adminconfdir (PREFIX/etc + by default) in preference to configuration files in sysconfdir + (/etc by default). This can be used on systems where + sysconfdir is located on a read-only filesystem. When this + option is enabled, the visudo utility will store edited + sudoers files in adminconfdir if the original was located + in sysconfdir. + --disable-root-mailer By default sudo will run the mailer as root when tattling on a user so as to prevent that user from killing the mailer. diff -Nru sudo-1.9.13p3/lib/eventlog/eventlog.c sudo-1.9.14p2/lib/eventlog/eventlog.c --- sudo-1.9.13p3/lib/eventlog/eventlog.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/eventlog.c 2023-07-15 15:37:23.000000000 +0000 @@ -189,6 +189,7 @@ sudo_lbuf_append_esc(lbuf, LBUF_ESC_CNTRL, " %s", evlog->env_add[i]); } + sudo_lbuf_append(lbuf, " ; "); } if (evlog->command != NULL && evlog->argv != NULL) { /* Command plus argv. */ diff -Nru sudo-1.9.13p3/lib/eventlog/eventlog_free.c sudo-1.9.14p2/lib/eventlog/eventlog_free.c --- sudo-1.9.13p3/lib/eventlog/eventlog_free.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/eventlog_free.c 2023-07-15 15:37:23.000000000 +0000 @@ -52,6 +52,7 @@ free(evlog->runcwd); free(evlog->rungroup); free(evlog->runuser); + free(evlog->peeraddr); free(evlog->signal_name); free(evlog->submithost); free(evlog->submituser); @@ -67,6 +68,11 @@ free(evlog->envp[i]); free(evlog->envp); } + if (evlog->env_add != NULL) { + for (i = 0; evlog->env_add[i] != NULL; i++) + free(evlog->env_add[i]); + free(evlog->env_add); + } free(evlog); } diff -Nru sudo-1.9.13p3/lib/eventlog/Makefile.in sudo-1.9.14p2/lib/eventlog/Makefile.in --- sudo-1.9.13p3/lib/eventlog/Makefile.in 2023-02-16 18:43:30.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/Makefile.in 2023-07-15 15:37:21.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2020 Todd C. Miller +# Copyright (c) 2020-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -34,6 +34,7 @@ CC = @CC@ LIBTOOL = @LIBTOOL@ EGREP = @EGREP@ +SED = @SED@ # C preprocessor flags CPPFLAGS = -I$(incdir) -I$(top_builddir) -I$(srcdir) -I$(top_srcdir) @CPPFLAGS@ @@ -48,7 +49,8 @@ LTFLAGS = @LT_STATIC@ # Libraries -LT_LIBS = $(top_builddir)/lib/util/libsudo_util.la +LIBUTIL = $(top_builddir)/lib/util/libsudo_util.la +LT_LIBS = $(LIBUTIL) LIBS = $(LT_LIBS) # Address sanitizer flags @@ -81,10 +83,11 @@ SHELL = @SHELL@ -TEST_PROGS = check_wrap +TEST_PROGS = check_wrap check_parse_json store_json_test store_sudo_test TEST_VERBOSE = -LIBEVENTLOG_OBJS = eventlog.lo eventlog_conf.lo eventlog_free.lo logwrap.lo +LIBEVENTLOG_OBJS = eventlog.lo eventlog_conf.lo eventlog_free.lo logwrap.lo \ + parse_json.lo IOBJS = $(LIBEVENTLOG_OBJS:.lo=.i) @@ -92,6 +95,12 @@ CHECK_WRAP_OBJS = check_wrap.lo logwrap.lo +CHECK_PARSE_JSON_OBJS = check_parse_json.lo parse_json.lo + +STORE_JSON_TEST_OBJS = store_json_test.lo + +STORE_SUDO_TEST_OBJS = store_sudo_test.lo + all: libsudo_eventlog.la depend: @@ -116,9 +125,18 @@ libsudo_eventlog.la: $(LIBEVENTLOG_OBJS) $(LT_LIBS) $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LIBEVENTLOG_OBJS) $(LT_LIBS) -check_wrap: $(CHECK_WRAP_OBJS) $(LIBUTIL) +check_parse_json: $(CHECK_PARSE_JSON_OBJS) $(LIBUTIL) + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_PARSE_JSON_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(LIBS) + +check_wrap: $(CHECK_WRAP_OBJS) $(LIBUTIL) $(LIBUTIL) $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_WRAP_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(LIBS) +store_json_test: $(STORE_JSON_TEST_OBJS) $(LIBUTIL) libsudo_eventlog.la + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(STORE_JSON_TEST_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(LIBS) libsudo_eventlog.la + +store_sudo_test: $(STORE_SUDO_TEST_OBJS) $(LIBUTIL) libsudo_eventlog.la + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(STORE_SUDO_TEST_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(LIBS) libsudo_eventlog.la + pre-install: install: @@ -161,6 +179,9 @@ MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \ umask 022; \ rval=0; \ + ./check_parse_json $(srcdir)/regress/parse_json/*.in || rval=`expr $$rval + $$?`; \ + ./store_json_test $(srcdir)/regress/eventlog_store/*.json.in || rval=`expr $$rval + $$?`; \ + ./store_sudo_test $(srcdir)/regress/eventlog_store/*.json.in || rval=`expr $$rval + $$?`; \ mkdir -p regress/logwrap; \ ./check_wrap $(srcdir)/regress/logwrap/check_wrap.in > regress/logwrap/check_wrap.out; \ diff regress/logwrap/check_wrap.out $(srcdir)/regress/logwrap/check_wrap.out.ok || rval=`expr $$rval + $$?`; \ @@ -189,6 +210,22 @@ .PHONY: clean mostlyclean distclean cleandir clobber realclean # Autogenerated dependencies, do not modify +check_parse_json.lo: $(srcdir)/regress/parse_json/check_parse_json.c \ + $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_json.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(srcdir)/parse_json.h $(top_builddir)/config.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/regress/parse_json/check_parse_json.c +check_parse_json.i: $(srcdir)/regress/parse_json/check_parse_json.c \ + $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_json.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(srcdir)/parse_json.h $(top_builddir)/config.h + $(CC) -E -o $@ $(CPPFLAGS) $< +check_parse_json.plog: check_parse_json.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/parse_json/check_parse_json.c --i-file $< --output-file $@ check_wrap.lo: $(srcdir)/regress/logwrap/check_wrap.c \ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ @@ -207,17 +244,17 @@ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ $(incdir)/sudo_gettext.h $(incdir)/sudo_json.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ - $(incdir)/sudo_util.h $(top_builddir)/config.h \ - $(top_builddir)/pathnames.h + $(incdir)/sudo_lbuf.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/eventlog.c eventlog.i: $(srcdir)/eventlog.c $(incdir)/compat/stdbool.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ $(incdir)/sudo_gettext.h $(incdir)/sudo_json.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ - $(incdir)/sudo_util.h $(top_builddir)/config.h \ - $(top_builddir)/pathnames.h + $(incdir)/sudo_lbuf.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h $(CC) -E -o $@ $(CPPFLAGS) $< eventlog.plog: eventlog.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/eventlog.c --i-file $< --output-file $@ @@ -263,3 +300,51 @@ $(CC) -E -o $@ $(CPPFLAGS) $< logwrap.plog: logwrap.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/logwrap.c --i-file $< --output-file $@ +parse_json.lo: $(srcdir)/parse_json.c $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_json.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_util.h $(srcdir)/parse_json.h \ + $(top_builddir)/config.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/parse_json.c +parse_json.i: $(srcdir)/parse_json.c $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_json.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_util.h $(srcdir)/parse_json.h \ + $(top_builddir)/config.h + $(CC) -E -o $@ $(CPPFLAGS) $< +parse_json.plog: parse_json.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/parse_json.c --i-file $< --output-file $@ +store_json_test.lo: $(srcdir)/regress/eventlog_store/store_json_test.c \ + $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_json.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(srcdir)/parse_json.h $(top_builddir)/config.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/regress/eventlog_store/store_json_test.c +store_json_test.i: $(srcdir)/regress/eventlog_store/store_json_test.c \ + $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_json.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(srcdir)/parse_json.h $(top_builddir)/config.h + $(CC) -E -o $@ $(CPPFLAGS) $< +store_json_test.plog: store_json_test.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/eventlog_store/store_json_test.c --i-file $< --output-file $@ +store_sudo_test.lo: $(srcdir)/regress/eventlog_store/store_sudo_test.c \ + $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_lbuf.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) $(HARDENING_CFLAGS) $(srcdir)/regress/eventlog_store/store_sudo_test.c +store_sudo_test.i: $(srcdir)/regress/eventlog_store/store_sudo_test.c \ + $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_lbuf.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_util.h $(top_builddir)/config.h + $(CC) -E -o $@ $(CPPFLAGS) $< +store_sudo_test.plog: store_sudo_test.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/eventlog_store/store_sudo_test.c --i-file $< --output-file $@ diff -Nru sudo-1.9.13p3/lib/eventlog/parse_json.c sudo-1.9.14p2/lib/eventlog/parse_json.c --- sudo-1.9.13p3/lib/eventlog/parse_json.c 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/parse_json.c 2023-07-15 15:37:23.000000000 +0000 @@ -0,0 +1,1042 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2020-2023 Todd C. Miller + * + * 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 + +#include +#include +#ifdef HAVE_STDBOOL_H +# include +#else +# include "compat/stdbool.h" +#endif /* HAVE_STDBOOL_H */ +#include +#include +#include +#include +#include +#include + +#include "sudo_compat.h" +#include "sudo_debug.h" +#include "sudo_eventlog.h" +#include "sudo_fatal.h" +#include "sudo_gettext.h" +#include "sudo_util.h" + +#include "parse_json.h" + +struct json_stack { + unsigned int depth; + unsigned int maxdepth; + struct eventlog_json_object *frames[64]; +}; +#define JSON_STACK_INTIALIZER(s) { 0, nitems((s).frames) }; + +static char *iolog_file; + +static bool +json_store_columns(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_columns, SUDO_DEBUG_UTIL); + + if (item->u.number < 1 || item->u.number > INT_MAX) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "tty cols %lld: out of range", item->u.number); + evlog->columns = 0; + debug_return_bool(false); + } + + evlog->columns = item->u.number; + debug_return_bool(true); +} + +static bool +json_store_command(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_command, SUDO_DEBUG_UTIL); + + /* + * Note: struct eventlog must store command + args. + * We don't have argv yet so we append the args later. + */ + free(evlog->command); + evlog->command = item->u.string; + item->u.string = NULL; + debug_return_bool(true); +} + +static bool +json_store_dumped_core(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_dumped_core, SUDO_DEBUG_UTIL); + + evlog->dumped_core = item->u.boolean; + debug_return_bool(true); +} + +static bool +json_store_exit_value(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_exit_value, SUDO_DEBUG_UTIL); + + if (item->u.number < 0 || item->u.number > INT_MAX) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "exit value %lld: out of range", item->u.number); + evlog->exit_value = -1; + debug_return_bool(false); + } + + evlog->exit_value = item->u.number; + debug_return_bool(true); +} + +static bool +json_store_iolog_file(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_iolog_file, SUDO_DEBUG_UTIL); + + /* Do set evlog->iolog_file directly, it is a substring of iolog_path. */ + free(iolog_file); + iolog_file = item->u.string; + item->u.string = NULL; + debug_return_bool(true); +} + +static bool +json_store_iolog_path(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_iolog_path, SUDO_DEBUG_UTIL); + + free(evlog->iolog_path); + evlog->iolog_path = item->u.string; + item->u.string = NULL; + debug_return_bool(true); +} + +static bool +json_store_lines(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_lines, SUDO_DEBUG_UTIL); + + if (item->u.number < 1 || item->u.number > INT_MAX) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "tty lines %lld: out of range", item->u.number); + evlog->lines = 0; + debug_return_bool(false); + } + + evlog->lines = item->u.number; + debug_return_bool(true); +} + +static bool +json_store_peeraddr(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_peeraddr, SUDO_DEBUG_UTIL); + + free(evlog->peeraddr); + evlog->peeraddr = item->u.string; + item->u.string = NULL; + debug_return_bool(true); +} + +static char ** +json_array_to_strvec(struct eventlog_json_object *array) +{ + struct json_item *item; + size_t len = 0; + char **ret; + debug_decl(json_array_to_strvec, SUDO_DEBUG_UTIL); + + TAILQ_FOREACH(item, &array->items, entries) { + /* Can only convert arrays of string. */ + if (item->type != JSON_STRING) { + sudo_warnx(U_("expected JSON_STRING, got %d"), item->type); + debug_return_ptr(NULL); + } + /* Prevent integer overflow. */ + if (++len == INT_MAX) { + sudo_warnx("%s", U_("JSON_ARRAY too large")); + debug_return_ptr(NULL); + } + } + if ((ret = reallocarray(NULL, len + 1, sizeof(char *))) == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + debug_return_ptr(NULL); + } + len = 0; + TAILQ_FOREACH(item, &array->items, entries) { + ret[len++] = item->u.string; + item->u.string = NULL; + } + ret[len] = NULL; + + debug_return_ptr(ret); +} + +static bool +json_store_runargv(struct json_item *item, struct eventlog *evlog) +{ + int i; + debug_decl(json_store_runargv, SUDO_DEBUG_UTIL); + + if (evlog->argv != NULL) { + for (i = 0; evlog->argv[i] != NULL; i++) + free(evlog->argv[i]); + free(evlog->argv); + } + evlog->argv = json_array_to_strvec(&item->u.child); + + debug_return_bool(evlog->argv != NULL); +} + +static bool +json_store_runenv(struct json_item *item, struct eventlog *evlog) +{ + int i; + debug_decl(json_store_runenv, SUDO_DEBUG_UTIL); + + if (evlog->envp != NULL) { + for (i = 0; evlog->envp[i] != NULL; i++) + free(evlog->envp[i]); + free(evlog->envp); + } + evlog->envp = json_array_to_strvec(&item->u.child); + + debug_return_bool(evlog->envp != NULL); +} + +static bool +json_store_runenv_override(struct json_item *item, struct eventlog *evlog) +{ + int i; + debug_decl(json_store_runenv_override, SUDO_DEBUG_UTIL); + + if (evlog->env_add != NULL) { + for (i = 0; evlog->env_add[i] != NULL; i++) + free(evlog->env_add[i]); + free(evlog->env_add); + } + evlog->env_add = json_array_to_strvec(&item->u.child); + + debug_return_bool(evlog->env_add != NULL); +} + +static bool +json_store_rungid(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_rungid, SUDO_DEBUG_UTIL); + + evlog->rungid = (gid_t)item->u.number; + debug_return_bool(true); +} + +static bool +json_store_rungroup(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_rungroup, SUDO_DEBUG_UTIL); + + free(evlog->rungroup); + evlog->rungroup = item->u.string; + item->u.string = NULL; + debug_return_bool(true); +} + +static bool +json_store_runuid(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_runuid, SUDO_DEBUG_UTIL); + + evlog->runuid = (uid_t)item->u.number; + debug_return_bool(true); +} + +static bool +json_store_runuser(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_runuser, SUDO_DEBUG_UTIL); + + free(evlog->runuser); + evlog->runuser = item->u.string; + item->u.string = NULL; + debug_return_bool(true); +} + +static bool +json_store_runchroot(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_runchroot, SUDO_DEBUG_UTIL); + + free(evlog->runchroot); + evlog->runchroot = item->u.string; + item->u.string = NULL; + debug_return_bool(true); +} + +static bool +json_store_runcwd(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_runcwd, SUDO_DEBUG_UTIL); + + free(evlog->runcwd); + evlog->runcwd = item->u.string; + item->u.string = NULL; + debug_return_bool(true); +} + +static bool +json_store_signal(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_signal, SUDO_DEBUG_UTIL); + + free(evlog->signal_name); + evlog->signal_name = item->u.string; + item->u.string = NULL; + debug_return_bool(true); +} + +static bool +json_store_submitcwd(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_submitcwd, SUDO_DEBUG_UTIL); + + free(evlog->cwd); + evlog->cwd = item->u.string; + item->u.string = NULL; + debug_return_bool(true); +} + +static bool +json_store_submithost(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_submithost, SUDO_DEBUG_UTIL); + + free(evlog->submithost); + evlog->submithost = item->u.string; + item->u.string = NULL; + debug_return_bool(true); +} + +static bool +json_store_submituser(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_submituser, SUDO_DEBUG_UTIL); + + free(evlog->submituser); + evlog->submituser = item->u.string; + item->u.string = NULL; + debug_return_bool(true); +} + +static bool +json_store_submitgroup(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_submitgroup, SUDO_DEBUG_UTIL); + + free(evlog->submitgroup); + evlog->submitgroup = item->u.string; + item->u.string = NULL; + debug_return_bool(true); +} + +static bool +json_store_timespec(struct json_item *item, struct timespec *ts) +{ + struct eventlog_json_object *object; + debug_decl(json_store_timespec, SUDO_DEBUG_UTIL); + + object = &item->u.child; + TAILQ_FOREACH(item, &object->items, entries) { + if (item->type != JSON_NUMBER) + continue; + if (strcmp(item->name, "seconds") == 0) { + ts->tv_sec = item->u.number; + continue; + } + if (strcmp(item->name, "nanoseconds") == 0) { + ts->tv_nsec = item->u.number; + continue; + } + } + debug_return_bool(true); +} + +static bool +json_store_iolog_offset(struct json_item *item, struct eventlog *evlog) +{ + return json_store_timespec(item, &evlog->iolog_offset); +} + +static bool +json_store_run_time(struct json_item *item, struct eventlog *evlog) +{ + return json_store_timespec(item, &evlog->run_time); +} + +static bool +json_store_timestamp(struct json_item *item, struct eventlog *evlog) +{ + return json_store_timespec(item, &evlog->submit_time); +} + +static bool +json_store_ttyname(struct json_item *item, struct eventlog *evlog) +{ + debug_decl(json_store_ttyname, SUDO_DEBUG_UTIL); + + free(evlog->ttyname); + evlog->ttyname = item->u.string; + item->u.string = NULL; + debug_return_bool(true); +} + +static bool +json_store_uuid(struct json_item *item, struct eventlog *evlog) +{ + bool ret = false; + debug_decl(json_store_uuid, SUDO_DEBUG_UTIL); + + if (strlen(item->u.string) == sizeof(evlog->uuid_str) - 1) { + memcpy(evlog->uuid_str, item->u.string, sizeof(evlog->uuid_str)); + ret = true; + } + free(item->u.string); + item->u.string = NULL; + debug_return_bool(ret); +} + +static struct evlog_json_key { + const char *name; + enum json_value_type type; + bool (*setter)(struct json_item *, struct eventlog *); +} evlog_json_keys[] = { + { "columns", JSON_NUMBER, json_store_columns }, + { "command", JSON_STRING, json_store_command }, + { "dumped_core", JSON_BOOL, json_store_dumped_core }, + { "exit_value", JSON_NUMBER, json_store_exit_value }, + { "iolog_file", JSON_STRING, json_store_iolog_file }, + { "iolog_path", JSON_STRING, json_store_iolog_path }, + { "iolog_offset", JSON_OBJECT, json_store_iolog_offset }, + { "lines", JSON_NUMBER, json_store_lines }, + { "peeraddr", JSON_STRING, json_store_peeraddr }, + { "run_time", JSON_OBJECT, json_store_run_time }, + { "runargv", JSON_ARRAY, json_store_runargv }, + { "runenv", JSON_ARRAY, json_store_runenv }, + { "runenv_override", JSON_ARRAY, json_store_runenv_override }, + { "rungid", JSON_ID, json_store_rungid }, + { "rungroup", JSON_STRING, json_store_rungroup }, + { "runuid", JSON_ID, json_store_runuid }, + { "runuser", JSON_STRING, json_store_runuser }, + { "runchroot", JSON_STRING, json_store_runchroot }, + { "runcwd", JSON_STRING, json_store_runcwd }, + { "signal", JSON_STRING, json_store_signal }, + { "submitcwd", JSON_STRING, json_store_submitcwd }, + { "submithost", JSON_STRING, json_store_submithost }, + { "submitgroup", JSON_STRING, json_store_submitgroup }, + { "submituser", JSON_STRING, json_store_submituser }, + { "timestamp", JSON_OBJECT, json_store_timestamp }, + { "ttyname", JSON_STRING, json_store_ttyname }, + { "uuid", JSON_STRING, json_store_uuid }, + { NULL } +}; + +static struct json_item * +new_json_item(enum json_value_type type, char *name, unsigned int lineno) +{ + struct json_item *item; + debug_decl(new_json_item, SUDO_DEBUG_UTIL); + + if ((item = malloc(sizeof(*item))) == NULL) { + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); + debug_return_ptr(NULL); + } + item->name = name; + item->type = type; + item->lineno = lineno; + + debug_return_ptr(item); +} + +static char * +json_parse_string(char **strp) +{ + char *dst, *end, *ret, *src = *strp + 1; + size_t len; + debug_decl(json_parse_string, SUDO_DEBUG_UTIL); + + for (end = src; *end != '"' && *end != '\0'; end++) { + if (end[0] == '\\' && end[1] == '"') + end++; + } + if (*end != '"') { + sudo_warnx("%s", U_("missing double quote in name")); + debug_return_str(NULL); + } + len = (size_t)(end - src); + + /* Copy string, flattening escaped chars. */ + dst = ret = malloc(len + 1); + if (dst == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + debug_return_str(NULL); + } + while (src < end) { + char ch = *src++; + if (ch == '\\') { + switch (*src) { + case 'b': + ch = '\b'; + break; + case 'f': + ch = '\f'; + break; + case 'n': + ch = '\n'; + break; + case 'r': + ch = '\r'; + break; + case 't': + ch = '\t'; + break; + case 'u': + /* Only currently handles 8-bit ASCII. */ + if (src[1] == '0' && src[2] == '0') { + ch = sudo_hexchar(&src[3]); + if (ch != -1) { + src += 4; + break; + } + } + /* Not in \u00XX format. */ + FALLTHROUGH; + case '"': + case '\\': + default: + /* Note: a bare \ at the end of a string will be removed. */ + ch = *src; + break; + } + src++; + } + *dst++ = ch; + } + *dst = '\0'; + + /* Trim trailing whitespace. */ + do { + end++; + } while (isspace((unsigned char)*end)); + *strp = end; + + debug_return_str(ret); +} + +static void +free_json_items(struct json_item_list *items) +{ + struct json_item *item; + debug_decl(free_json_items, SUDO_DEBUG_UTIL); + + while ((item = TAILQ_FIRST(items)) != NULL) { + TAILQ_REMOVE(items, item, entries); + switch (item->type) { + case JSON_STRING: + free(item->u.string); + break; + case JSON_ARRAY: + case JSON_OBJECT: + free_json_items(&item->u.child.items); + break; + case JSON_ID: + case JSON_NUMBER: + case JSON_BOOL: + case JSON_NULL: + /* Nothing to free. */ + break; + default: + sudo_warnx("%s: internal error, invalid JSON type %d", + __func__, item->type); + break; + } + free(item->name); + free(item); + } + + debug_return; +} + +void +eventlog_json_free(struct eventlog_json_object *root) +{ + debug_decl(eventlog_json_free, SUDO_DEBUG_UTIL); + if (root != NULL) { + free_json_items(&root->items); + free(root); + } + debug_return; +} + +bool +eventlog_json_parse(struct eventlog_json_object *object, struct eventlog *evlog) +{ + struct json_item *item; + bool ret = false; + debug_decl(eventlog_json_parse, SUDO_DEBUG_UTIL); + + /* First object holds all the actual data. */ + item = TAILQ_FIRST(&object->items); + if (item == NULL) { + sudo_warnx("%s", U_("missing JSON_OBJECT")); + goto done; + } + if (item->type != JSON_OBJECT) { + sudo_warnx(U_("expected JSON_OBJECT, got %d"), item->type); + goto done; + } + object = &item->u.child; + + TAILQ_FOREACH(item, &object->items, entries) { + struct evlog_json_key *key; + + /* expecting key:value pairs */ + if (item->name == NULL) { + sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO, + "%s: missing object name", __func__); + goto done; + } + + /* lookup name */ + for (key = evlog_json_keys; key->name != NULL; key++) { + if (strcmp(item->name, key->name) == 0) + break; + } + if (key->name == NULL) { + sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO, + "%s: unknown key %s", __func__, item->name); + } else if (key->type != item->type && + (key->type != JSON_ID || item->type != JSON_NUMBER)) { + sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO, + "%s: key mismatch %s type %d, expected %d", __func__, + item->name, item->type, key->type); + goto done; + } else { + /* Matched name and type. */ + if (!key->setter(item, evlog)) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "unable to store %s", key->name); + goto done; + } + } + } + + /* + * iolog_file must be a substring of iolog_path. + */ + if (iolog_file != NULL && evlog->iolog_path != NULL) { + const size_t filelen = strlen(iolog_file); + const size_t pathlen = strlen(evlog->iolog_path); + if (filelen <= pathlen) { + const char *cp = &evlog->iolog_path[pathlen - filelen]; + if (strcmp(cp, iolog_file) == 0) { + evlog->iolog_file = cp; + } + } + } + + ret = true; + +done: + free(iolog_file); + iolog_file = NULL; + + debug_return_bool(ret); +} + +static bool +json_insert_bool(struct json_item_list *items, char *name, bool value, + unsigned int lineno) +{ + struct json_item *item; + debug_decl(json_insert_bool, SUDO_DEBUG_UTIL); + + if ((item = new_json_item(JSON_BOOL, name, lineno)) == NULL) + debug_return_bool(false); + item->u.boolean = value; + TAILQ_INSERT_TAIL(items, item, entries); + + debug_return_bool(true); +} + +static bool +json_insert_null(struct json_item_list *items, char *name, unsigned int lineno) +{ + struct json_item *item; + debug_decl(json_insert_null, SUDO_DEBUG_UTIL); + + if ((item = new_json_item(JSON_NULL, name, lineno)) == NULL) + debug_return_bool(false); + TAILQ_INSERT_TAIL(items, item, entries); + + debug_return_bool(true); +} + +static bool +json_insert_num(struct json_item_list *items, char *name, long long value, + unsigned int lineno) +{ + struct json_item *item; + debug_decl(json_insert_num, SUDO_DEBUG_UTIL); + + if ((item = new_json_item(JSON_NUMBER, name, lineno)) == NULL) + debug_return_bool(false); + item->u.number = value; + TAILQ_INSERT_TAIL(items, item, entries); + + debug_return_bool(true); +} + +static bool +json_insert_str(struct json_item_list *items, char *name, char **strp, + unsigned int lineno) +{ + struct json_item *item; + debug_decl(json_insert_str, SUDO_DEBUG_UTIL); + + if ((item = new_json_item(JSON_STRING, name, lineno)) == NULL) + debug_return_bool(false); + item->u.string = json_parse_string(strp); + if (item->u.string == NULL) { + free(item); + debug_return_bool(false); + } + TAILQ_INSERT_TAIL(items, item, entries); + + debug_return_bool(true); +} + +static struct eventlog_json_object * +json_stack_push(struct json_stack *stack, struct json_item_list *items, + struct eventlog_json_object *frame, enum json_value_type type, char *name, + unsigned int lineno) +{ + struct json_item *item; + debug_decl(json_stack_push, SUDO_DEBUG_UTIL); + + /* We limit the stack size rather than expanding it. */ + if (stack->depth >= stack->maxdepth) { + sudo_warnx(U_("json stack exhausted (max %u frames)"), stack->maxdepth); + debug_return_ptr(NULL); + } + + /* Allocate a new item and insert it into the list. */ + if ((item = new_json_item(type, name, lineno)) == NULL) + debug_return_ptr(NULL); + TAILQ_INIT(&item->u.child.items); + item->u.child.parent = item; + TAILQ_INSERT_TAIL(items, item, entries); + + /* Push the current frame onto the stack (depth check performed above). */ + stack->frames[stack->depth++] = frame; + + /* Return the new frame */ + debug_return_ptr(&item->u.child); +} + +/* Only expect a value if a name is defined or we are in an array. */ +#define expect_value (name != NULL || (frame->parent != NULL && frame->parent->type == JSON_ARRAY)) + +struct eventlog_json_object * +eventlog_json_read(FILE *fp, const char *filename) +{ + struct eventlog_json_object *frame, *root; + struct json_stack stack = JSON_STACK_INTIALIZER(stack); + unsigned int lineno = 0; + char *name = NULL; + char *cp, *buf = NULL; + size_t bufsize = 0; + ssize_t len; + bool saw_comma = false; + long long num; + char ch; + debug_decl(eventlog_json_read, SUDO_DEBUG_UTIL); + + root = malloc(sizeof(*root)); + if (root == NULL) + goto bad; + + root->parent = NULL; + TAILQ_INIT(&root->items); + + frame = root; + while ((len = getdelim(&buf, &bufsize, '\n', fp)) != -1) { + char *ep = buf + len - 1; + cp = buf; + + lineno++; + + /* Trim trailing whitespace. */ + while (ep > cp && isspace((unsigned char)*ep)) + ep--; + ep[1] = '\0'; + + for (;;) { + const char *errstr; + + /* Trim leading whitespace, skip blank lines. */ + while (isspace((unsigned char)*cp)) + cp++; + + /* Check for comma separator and strip it out. */ + if (*cp == ',') { + saw_comma = true; + cp++; + while (isspace((unsigned char)*cp)) + cp++; + } + + /* End of line? */ + if (*cp == '\0') + break; + + switch (*cp) { + case '{': + if (name == NULL && frame->parent != NULL) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("objects must consist of name:value pairs")); + goto bad; + } + if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("missing separator between values")); + goto bad; + } + cp++; + saw_comma = false; + frame = json_stack_push(&stack, &frame->items, frame, + JSON_OBJECT, name, lineno); + if (frame == NULL) + goto bad; + name = NULL; + break; + case '}': + if (stack.depth == 0 || frame->parent == NULL || + frame->parent->type != JSON_OBJECT) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("unmatched close brace")); + goto bad; + } + cp++; + frame = stack.frames[--stack.depth]; + saw_comma = false; + break; + case '[': + if (frame->parent == NULL) { + /* Must have an enclosing object. */ + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("unexpected array")); + goto bad; + } + if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("missing separator between values")); + goto bad; + } + cp++; + saw_comma = false; + frame = json_stack_push(&stack, &frame->items, frame, + JSON_ARRAY, name, lineno); + if (frame == NULL) + goto bad; + name = NULL; + break; + case ']': + if (stack.depth == 0 || frame->parent == NULL || + frame->parent->type != JSON_ARRAY) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("unmatched close bracket")); + goto bad; + } + cp++; + frame = stack.frames[--stack.depth]; + saw_comma = false; + break; + case '"': + if (frame->parent == NULL) { + /* Must have an enclosing object. */ + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("unexpected string")); + goto bad; + } + + if (!expect_value) { + /* Parse "name": */ + if ((name = json_parse_string(&cp)) == NULL) + goto bad; + /* TODO: allow colon on next line? */ + if (*cp != ':') { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("missing colon after name")); + goto bad; + } + cp++; + } else { + if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("missing separator between values")); + goto bad; + } + saw_comma = false; + if (!json_insert_str(&frame->items, name, &cp, lineno)) + goto bad; + name = NULL; + } + break; + case 't': + if (strncmp(cp, "true", sizeof("true") - 1) != 0) + goto parse_error; + if (!expect_value) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("unexpected boolean")); + goto bad; + } + cp += sizeof("true") - 1; + if (*cp != ',' && !isspace((unsigned char)*cp) && *cp != '\0') + goto parse_error; + if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("missing separator between values")); + goto bad; + } + saw_comma = false; + + if (!json_insert_bool(&frame->items, name, true, lineno)) + goto bad; + name = NULL; + break; + case 'f': + if (strncmp(cp, "false", sizeof("false") - 1) != 0) + goto parse_error; + if (!expect_value) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("unexpected boolean")); + goto bad; + } + cp += sizeof("false") - 1; + if (*cp != ',' && !isspace((unsigned char)*cp) && *cp != '\0') + goto parse_error; + if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("missing separator between values")); + goto bad; + } + saw_comma = false; + + if (!json_insert_bool(&frame->items, name, false, lineno)) + goto bad; + name = NULL; + break; + case 'n': + if (strncmp(cp, "null", sizeof("null") - 1) != 0) + goto parse_error; + if (!expect_value) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("unexpected null")); + goto bad; + } + cp += sizeof("null") - 1; + if (*cp != ',' && !isspace((unsigned char)*cp) && *cp != '\0') + goto parse_error; + if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("missing separator between values")); + goto bad; + } + saw_comma = false; + + if (!json_insert_null(&frame->items, name, lineno)) + goto bad; + name = NULL; + break; + case '+': case '-': case '0': case '1': case '2': case '3': + case '4': case '5': case '6': case '7': case '8': case '9': + if (!expect_value) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("unexpected number")); + goto bad; + } + /* XXX - strtonumx() would be simpler here. */ + len = strcspn(cp, " \f\n\r\t\v,"); + ch = cp[len]; + cp[len] = '\0'; + if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("missing separator between values")); + goto bad; + } + saw_comma = false; + num = sudo_strtonum(cp, LLONG_MIN, LLONG_MAX, &errstr); + if (errstr != NULL) { + sudo_warnx("%s:%u:%td: %s: %s", filename, lineno, cp - buf, + cp, U_(errstr)); + goto bad; + } + cp += len; + *cp = ch; + + if (!json_insert_num(&frame->items, name, num, lineno)) + goto bad; + name = NULL; + break; + default: + goto parse_error; + } + } + } + if (stack.depth != 0) { + frame = stack.frames[stack.depth - 1]; + if (frame->parent == NULL || frame->parent->type == JSON_OBJECT) { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("unmatched close brace")); + } else { + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + U_("unmatched close bracket")); + } + goto bad; + } + + goto done; + +parse_error: + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, U_("parse error")); +bad: + eventlog_json_free(root); + root = NULL; +done: + free(buf); + free(name); + + debug_return_ptr(root); +} diff -Nru sudo-1.9.13p3/lib/eventlog/parse_json.h sudo-1.9.14p2/lib/eventlog/parse_json.h --- sudo-1.9.13p3/lib/eventlog/parse_json.h 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/parse_json.h 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,46 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2020, 2023 Todd C. Miller + * + * 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. + */ + +#ifndef PARSE_JSON_H +#define PARSE_JSON_H + +#include "sudo_json.h" +#include "sudo_queue.h" + +TAILQ_HEAD(json_item_list, json_item); + +struct eventlog_json_object { + struct json_item *parent; + struct json_item_list items; +}; + +struct json_item { + TAILQ_ENTRY(json_item) entries; + char *name; /* may be NULL for first brace */ + unsigned int lineno; + enum json_value_type type; + union { + struct eventlog_json_object child; + char *string; + long long number; + id_t id; + bool boolean; + } u; +}; + +#endif /* PARSE_JSON_H */ diff -Nru sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/store_json_test.c sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/store_json_test.c --- sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/store_json_test.c 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/store_json_test.c 2023-07-15 15:37:23.000000000 +0000 @@ -0,0 +1,198 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2020, 2023 Todd C. Miller + * + * 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 + +#include +#include +#include +#include +#include + +#define SUDO_ERROR_WRAP 0 + +#include "sudo_compat.h" +#include "sudo_eventlog.h" +#include "sudo_fatal.h" +#include "sudo_util.h" + +#include "parse_json.h" + +sudo_dso_public int main(int argc, char *argv[]); + +static void +usage(void) +{ + fprintf(stderr, "usage: %s [-cv] input_file ...\n", + getprogname()); + exit(EXIT_FAILURE); +} + +static bool +compare(FILE *fp, const char *infile, struct json_container *jsonc) +{ + const char *cp; + unsigned int lineno = 0; + size_t linesize = 0; + char *line = NULL; + ssize_t len; + + cp = sudo_json_get_buf(jsonc); + + while ((len = getdelim(&line, &linesize, '\n', fp)) != -1) { + lineno++; + + /* skip open/close brace, not present in formatted output */ + if (lineno == 1 && strcmp(line, "{\n") == 0) + continue; + if (*cp == '\0' && strcmp(line, "}\n") == 0) + continue; + + /* Ignore newlines in output to make comparison easier. */ + if (*cp == '\n') + cp++; + if (line[len - 1] == '\n') + len--; + + if (strncmp(line, cp, len) != 0) { + fprintf(stderr, "%s: mismatch on line %u\n", infile, lineno); + fprintf(stderr, "expected: %s", line); + fprintf(stderr, "got : %.*s\n", (int)len, cp); + return false; + } + cp += len; + } + free(line); + + return true; +} + +int +main(int argc, char *argv[]) +{ + int ch, i, ntests = 0, errors = 0; + bool cat = false; + + initprogname(argc > 0 ? argv[0] : "store_json_test"); + + while ((ch = getopt(argc, argv, "cv")) != -1) { + switch (ch) { + case 'c': + cat = true; + break; + case 'v': + /* ignored */ + break; + default: + usage(); + } + } + argc -= optind; + argv += optind; + + if (argc < 1) + usage(); + + for (i = 0; i < argc; i++) { + struct eventlog_json_object *root; + struct eventlog *evlog = NULL; + struct json_container jsonc; + const char *infile = argv[i]; + const char *outfile = argv[i]; + const char *cp; + char pathbuf[PATH_MAX]; + FILE *infp = NULL; + FILE *outfp = NULL; + + ntests++; + + if (!sudo_json_init(&jsonc, 4, false, true, true)) { + errors++; + continue; + } + + /* Parse input file. */ + if ((infp = fopen(infile, "r")) == NULL) { + sudo_warn("%s", argv[i]); + errors++; + continue; + } + root = eventlog_json_read(infp, infile); + if (root == NULL) { + errors++; + goto next; + } + + /* Convert JSON to event log. */ + evlog = calloc(1, sizeof(*evlog)); + if (evlog == NULL) { + sudo_warnx("%s: %s", __func__, "unable to allocate memory"); + errors++; + goto next; + } + if (!eventlog_json_parse(root, evlog)) { + errors++; + goto next; + } + + /* Format event log as JSON. */ + if (!eventlog_store_json(&jsonc, evlog)) { + errors++; + goto next; + } + + /* Check for a .out.ok file in the same location as the .in file. */ + cp = strrchr(infile, '.'); + if (cp != NULL && strcmp(cp, ".in") == 0) { + snprintf(pathbuf, sizeof(pathbuf), "%.*s.out.ok", + (int)(cp - infile), infile); + if ((outfp = fopen(pathbuf, "r")) != NULL) + outfile = pathbuf; + } + if (outfp == NULL) + outfp = infp; + + /* Compare output to expected output. */ + rewind(outfp); + if (!compare(outfp, outfile, &jsonc)) + errors++; + + /* Write the formatted output to stdout for -c (cat) */ + if (cat) { + fprintf(stdout, "{%s\n}\n", sudo_json_get_buf(&jsonc)); + fflush(stdout); + } + +next: + eventlog_free(evlog); + eventlog_json_free(root); + sudo_json_free(&jsonc); + if (infp != NULL) + fclose(infp); + if (outfp != NULL && outfp != infp) + fclose(outfp); + } + + if (ntests != 0) { + printf("%s: %d test%s run, %d errors, %d%% success rate\n", + getprogname(), ntests, ntests == 1 ? "" : "s", errors, + (ntests - errors) * 100 / ntests); + } + + return errors; +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/store_sudo_test.c sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/store_sudo_test.c --- sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/store_sudo_test.c 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/store_sudo_test.c 2023-07-15 15:37:23.000000000 +0000 @@ -0,0 +1,208 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2020, 2023 Todd C. Miller + * + * 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 + +#include +#include +#include +#include +#include + +#define SUDO_ERROR_WRAP 0 + +#include "sudo_compat.h" +#include "sudo_eventlog.h" +#include "sudo_fatal.h" +#include "sudo_lbuf.h" +#include "sudo_util.h" + +sudo_dso_public int main(int argc, char *argv[]); + +static void +usage(void) +{ + fprintf(stderr, "usage: %s [-cv] input_file ...\n", + getprogname()); + exit(EXIT_FAILURE); +} + +static bool +compare(FILE *fp, const char *infile, const char *output) +{ + static size_t linesize = 0; + static char *line = NULL; + int i; + + /* Expect two log lines, one for accept, one for exit. */ + for (i = 0; i < 2; i++) { + ssize_t output_len = strcspn(output, "\n"); + ssize_t len = getdelim(&line, &linesize, '\n', fp); + if (len == -1) { + sudo_warn("getdelim"); + return false; + } + if (line[len - 1] == '\n') + len--; + + if (len != output_len || strncmp(line, output, len) != 0) { + fprintf(stderr, "%s: %s mismatch\n", infile, i ? "exit" : "accept"); + fprintf(stderr, "expected: %.*s\n", (int)len, line); + fprintf(stderr, "got : %.*s\n", (int)output_len, output); + return false; + } + if (i == 0) { + /* Skip past newline in accept record output. */ + output += output_len; + if (output[0] != '\n' || output[1] == '\0') { + sudo_warnx("missing exit record"); + return false; + } + output++; + } + } + + return true; +} + +int +main(int argc, char *argv[]) +{ + int ch, i, ntests = 0, errors = 0; + struct sudo_lbuf lbuf; + bool cat = false; + + initprogname(argc > 0 ? argv[0] : "store_sudo_test"); + + while ((ch = getopt(argc, argv, "v")) != -1) { + switch (ch) { + case 'c': + cat = true; + break; + case 'v': + /* ignored */ + break; + default: + usage(); + } + } + argc -= optind; + argv += optind; + + if (argc < 1) + usage(); + + sudo_lbuf_init(&lbuf, NULL, 0, NULL, 0); + for (i = 0; i < argc; i++) { + struct eventlog_json_object *root; + struct eventlog *evlog = NULL; + const char *infile = argv[i]; + const char *outfile = argv[i]; + char pathbuf[PATH_MAX]; + FILE *infp = NULL; + FILE *outfp = NULL; + size_t len; + + ntests++; + + /* Parse input file. */ + if ((infp = fopen(infile, "r")) == NULL) { + sudo_warn("%s", argv[i]); + errors++; + continue; + } + root = eventlog_json_read(infp, infile); + if (root == NULL) { + errors++; + goto next; + } + + /* Convert JSON to event log. */ + evlog = calloc(1, sizeof(*evlog)); + if (evlog == NULL) { + sudo_warnx("%s: %s", __func__, "unable to allocate memory"); + errors++; + goto next; + } + if (!eventlog_json_parse(root, evlog)) { + errors++; + goto next; + } + + /* Format event log in sudo log format. */ + if (!eventlog_store_sudo(EVLOG_ACCEPT, evlog, &lbuf)) { + errors++; + goto next; + } + sudo_lbuf_append(&lbuf, "\n"); + if (!eventlog_store_sudo(EVLOG_EXIT, evlog, &lbuf)) { + errors++; + goto next; + } + sudo_lbuf_append(&lbuf, "\n"); + + /* Write the formatted output to stdout for -c (cat) */ + if (cat) { + puts(lbuf.buf); + fflush(stdout); + } + + /* Check for a .out.ok file in the same location as the .in file. */ + len = strlen(infile); + if (len < sizeof(".json.in")) { + sudo_warnx("%s must end in .json.in", infile); + errors++; + goto next; + } + len -= sizeof(".json.in") - 1; + if (strcmp(&infile[len], ".json.in") != 0) { + sudo_warnx("%s must end in .json.in", infile); + errors++; + goto next; + } + snprintf(pathbuf, sizeof(pathbuf), "%.*s.sudo.out.ok", + (int)len, infile); + if ((outfp = fopen(pathbuf, "r")) == NULL) { + sudo_warn("%s", pathbuf); + errors++; + goto next; + } + + /* Compare output to expected output. */ + if (!compare(outfp, outfile, lbuf.buf)) + errors++; + +next: + lbuf.len = 0; + eventlog_json_free(root); + eventlog_free(evlog); + if (infp != NULL) + fclose(infp); + if (outfp != NULL && outfp != infp) + fclose(outfp); + } + sudo_lbuf_destroy(&lbuf); + + if (ntests != 0) { + printf("%s: %d test%s run, %d errors, %d%% success rate\n", + getprogname(), ntests, ntests == 1 ? "" : "s", errors, + (ntests - errors) * 100 / ntests); + } + + return errors; +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test1.json.in sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test1.json.in --- sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test1.json.in 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test1.json.in 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,51 @@ +{ + "uuid": "94109a6eb8-9bed-41ba-0ff1-79926f3947", + "server_time": { + "seconds": 1677638673, + "nanoseconds": 98769807, + "iso8601": "20230301024433Z", + "localtime": "Tue Feb 28 19:44:33 MST 2023" + }, + "submit_time": { + "seconds": 1677638673, + "nanoseconds": 93789768, + "iso8601": "20230301024433Z", + "localtime": "Tue Feb 28 19:44:33 MST 2023" + }, + "peeraddr": "172.30.200.2", + "iolog_path": "/var/log/sudo-logsrvd/millert/00/03/FI", + "iolog_file": "00/03/FI", + "columns": 80, + "command": "/usr/bin/ci", + "lines": 24, + "runargv": [ + "ci", + "-u", + "aliases\n" + ], + "runenv": [ + "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "TERM=tmux", + "LANG=en_US.UTF-8", + "MAIL=/var/mail/root", + "LOGNAME=root", + "USER=root", + "HOME=/root", + "SHELL=/bin/bash", + "SUDO_COMMAND=/usr/bin/ci -u aliases", + "SUDO_USER=millert", + "SUDO_UID=8036", + "SUDO_GID=20" + ], + "runenv_override": [ + "KRB5CCNAME=bogus", + "LD_LIBRARY_PATH=/opt/sudo/libexec" + ], + "runuid": 0, + "runuser": "root", + "submitcwd": "/etc/mail", + "submithost": "xerxes.sudo.ws", + "submituser": "millert", + "ttyname": "/dev/ttypb", + "exit_value": 1 +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test1.json.out.ok sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test1.json.out.ok --- sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test1.json.out.ok 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test1.json.out.ok 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,30 @@ +{ + "submituser": "millert", + "command": "/usr/bin/ci", + "runuser": "root", + "ttyname": "/dev/ttypb", + "submithost": "xerxes.sudo.ws", + "submitcwd": "/etc/mail", + "runuid": 0, + "columns": 80, + "lines": 24, + "runargv": [ + "ci", + "-u", + "aliases\n" + ], + "runenv": [ + "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "TERM=tmux", + "LANG=en_US.UTF-8", + "MAIL=/var/mail/root", + "LOGNAME=root", + "USER=root", + "HOME=/root", + "SHELL=/bin/bash", + "SUDO_COMMAND=/usr/bin/ci -u aliases", + "SUDO_USER=millert", + "SUDO_UID=8036", + "SUDO_GID=20" + ] +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test1.sudo.out.ok sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test1.sudo.out.ok --- sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test1.sudo.out.ok 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test1.sudo.out.ok 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,2 @@ +HOST=xerxes.sudo.ws ; TTY=ttypb ; CWD=/etc/mail ; USER=root ; TSID=0003FI ; ENV=KRB5CCNAME=bogus LD_LIBRARY_PATH=/opt/sudo/libexec ; COMMAND=/usr/bin/ci -u aliases#012 +HOST=xerxes.sudo.ws ; TTY=ttypb ; CWD=/etc/mail ; USER=root ; TSID=0003FI ; ENV=KRB5CCNAME=bogus LD_LIBRARY_PATH=/opt/sudo/libexec ; COMMAND=/usr/bin/ci -u aliases#012 ; EXIT=1 diff -Nru sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test2.json.in sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test2.json.in --- sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test2.json.in 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test2.json.in 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,47 @@ +{ + "uuid": "a17521dd52-1b7f-4ca1-5086-6957336362", + "server_time": { + "seconds": 1671070212, + "nanoseconds": 246006550, + "iso8601": "20221215021012Z", + "localtime": "Wed Dec 14 19:10:12 MST 2022" + }, + "submit_time": { + "seconds": 1671070212, + "nanoseconds": 243017337, + "iso8601": "20221215021012Z", + "localtime": "Wed Dec 14 19:10:12 MST 2022" + }, + "peeraddr": "172.30.200.2", + "iolog_path": "/var/log/sudo-logsrvd/millert/00/03/5Q", + "iolog_file": "00/03/5Q", + "columns": 80, + "command": "/usr/bin/id", + "lines": 24, + "runargv": [ + "id" + ], + "runenv": [ + "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "TERM=tmux", + "LANG=en_US.UTF-8", + "MAIL=/var/mail/root", + "LOGNAME=root", + "USER=root", + "HOME=/root", + "SHELL=/bin/bash", + "SUDO_COMMAND=/usr/bin/id", + "SUDO_USER=millert", + "SUDO_UID=8036", + "SUDO_GID=20" + ], + "runenv_override": [ + "KRB5CCNAME=bogus" + ], + "runuid": 0, + "runuser": "root", + "submitcwd": "/usr/src/local/millert/sudo/trunk", + "submithost": "xerxes.sudo.ws", + "submituser": "millert", + "ttyname": "/dev/ttyp0" +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test2.json.out.ok sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test2.json.out.ok --- sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test2.json.out.ok 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test2.json.out.ok 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,28 @@ +{ + "submituser": "millert", + "command": "/usr/bin/id", + "runuser": "root", + "ttyname": "/dev/ttyp0", + "submithost": "xerxes.sudo.ws", + "submitcwd": "/usr/src/local/millert/sudo/trunk", + "runuid": 0, + "columns": 80, + "lines": 24, + "runargv": [ + "id" + ], + "runenv": [ + "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "TERM=tmux", + "LANG=en_US.UTF-8", + "MAIL=/var/mail/root", + "LOGNAME=root", + "USER=root", + "HOME=/root", + "SHELL=/bin/bash", + "SUDO_COMMAND=/usr/bin/id", + "SUDO_USER=millert", + "SUDO_UID=8036", + "SUDO_GID=20" + ] +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test2.sudo.out.ok sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test2.sudo.out.ok --- sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test2.sudo.out.ok 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test2.sudo.out.ok 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,2 @@ +HOST=xerxes.sudo.ws ; TTY=ttyp0 ; CWD=/usr/src/local/millert/sudo/trunk ; USER=root ; TSID=00035Q ; ENV=KRB5CCNAME=bogus ; COMMAND=/usr/bin/id +HOST=xerxes.sudo.ws ; TTY=ttyp0 ; CWD=/usr/src/local/millert/sudo/trunk ; USER=root ; TSID=00035Q ; ENV=KRB5CCNAME=bogus ; COMMAND=/usr/bin/id ; EXIT=0 diff -Nru sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test3.json.in sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test3.json.in --- sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test3.json.in 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test3.json.in 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,48 @@ +{ + "uuid": "54e6806305-0f50-44bf-fe6a-c8fa7a65ac", + "server_time": { + "seconds": 1678475729, + "nanoseconds": 286796437, + "iso8601": "20230310191529Z", + "localtime": "Fri Mar 10 12:15:29 MST 2023" + }, + "submit_time": { + "seconds": 1633116433, + "nanoseconds": 682537651, + "iso8601": "20211001192713Z", + "localtime": "Fri Oct 1 13:27:13 MDT 2021" + }, + "peeraddr": "172.30.200.50", + "iolog_path": "/var/log/sudo-logsrvd/millert/00/00/5H", + "iolog_file": "00/00/5H", + "columns": 80, + "command": "/usr/bin/find", + "lines": 24, + "runargv": [ + "find", + "build/out/sudoers/" + ], + "runenv": [ + "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "TERM=tmux", + "LANG=en_US.UTF-8", + "MAIL=/var/mail/root", + "LOGNAME=root", + "USER=root", + "HOME=/root", + "SHELL=/bin/bash", + "SUDO_COMMAND=/usr/bin/find build/out/sudoers/", + "SUDO_USER=millert", + "SUDO_UID=8036", + "SUDO_GID=20" + ], + "runuid": 0, + "runuser": "root", + "submitcwd": "/home/millert/sudo/oss-fuzz", + "submithost": "linux-build", + "submituser": "millert", + "ttyname": "/dev/pts/1", + "exit_value": 131, + "signal": "QUIT", + "dumped_core": true +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test3.json.out.ok sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test3.json.out.ok --- sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test3.json.out.ok 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test3.json.out.ok 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,29 @@ +{ + "submituser": "millert", + "command": "/usr/bin/find", + "runuser": "root", + "ttyname": "/dev/pts/1", + "submithost": "linux-build", + "submitcwd": "/home/millert/sudo/oss-fuzz", + "runuid": 0, + "columns": 80, + "lines": 24, + "runargv": [ + "find", + "build/out/sudoers/" + ], + "runenv": [ + "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "TERM=tmux", + "LANG=en_US.UTF-8", + "MAIL=/var/mail/root", + "LOGNAME=root", + "USER=root", + "HOME=/root", + "SHELL=/bin/bash", + "SUDO_COMMAND=/usr/bin/find build/out/sudoers/", + "SUDO_USER=millert", + "SUDO_UID=8036", + "SUDO_GID=20" + ] +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test3.sudo.out.ok sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test3.sudo.out.ok --- sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test3.sudo.out.ok 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test3.sudo.out.ok 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,2 @@ +HOST=linux-build ; TTY=pts/1 ; CWD=/home/millert/sudo/oss-fuzz ; USER=root ; TSID=00005H ; COMMAND=/usr/bin/find build/out/sudoers/ +HOST=linux-build ; TTY=pts/1 ; CWD=/home/millert/sudo/oss-fuzz ; USER=root ; TSID=00005H ; COMMAND=/usr/bin/find build/out/sudoers/ ; SIGNAL=QUIT ; EXIT=131 diff -Nru sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test4.json.in sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test4.json.in --- sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test4.json.in 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test4.json.in 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,46 @@ +{ + "uuid": "0bf9f26a7c-5e8b-4f82-f6c1-24a49a254c", + "server_time": { + "seconds": 1677638637, + "nanoseconds": 369091862, + "iso8601": "20230301024357Z", + "localtime": "Tue Feb 28 19:43:57 MST 2023" + }, + "submit_time": { + "seconds": 1677638637, + "nanoseconds": 364571747, + "iso8601": "20230301024357Z", + "localtime": "Tue Feb 28 19:43:57 MST 2023" + }, + "peeraddr": "172.30.200.2", + "iolog_path": "/var/log/sudo-logsrvd/millert/00/03/FG", + "iolog_file": "00/03/FG", + "columns": 80, + "command": "/usr/bin/vi", + "lines": 24, + "runargv": [ + "vi", + "aliases" + ], + "runenv": [ + "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "TERM=tmux", + "LANG=en_US.UTF-8", + "MAIL=/var/mail/root", + "LOGNAME=root", + "USER=root", + "HOME=/root", + "SHELL=/bin/bash", + "SUDO_COMMAND=/usr/bin/vi aliases", + "SUDO_USER=millert", + "SUDO_UID=8036", + "SUDO_GID=20", + "KRB5CCNAME=bogus" + ], + "runuid": 0, + "runuser": "root", + "submitcwd": "/etc/mail", + "submithost": "xerxes.sudo.ws", + "submituser": "millert", + "ttyname": "/dev/ttypb" +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test4.json.out.ok sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test4.json.out.ok --- sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test4.json.out.ok 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test4.json.out.ok 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,30 @@ +{ + "submituser": "millert", + "command": "/usr/bin/vi", + "runuser": "root", + "ttyname": "/dev/ttypb", + "submithost": "xerxes.sudo.ws", + "submitcwd": "/etc/mail", + "runuid": 0, + "columns": 80, + "lines": 24, + "runargv": [ + "vi", + "aliases" + ], + "runenv": [ + "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "TERM=tmux", + "LANG=en_US.UTF-8", + "MAIL=/var/mail/root", + "LOGNAME=root", + "USER=root", + "HOME=/root", + "SHELL=/bin/bash", + "SUDO_COMMAND=/usr/bin/vi aliases", + "SUDO_USER=millert", + "SUDO_UID=8036", + "SUDO_GID=20", + "KRB5CCNAME=bogus" + ] +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test4.sudo.out.ok sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test4.sudo.out.ok --- sudo-1.9.13p3/lib/eventlog/regress/eventlog_store/test4.sudo.out.ok 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/eventlog_store/test4.sudo.out.ok 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,2 @@ +HOST=xerxes.sudo.ws ; TTY=ttypb ; CWD=/etc/mail ; USER=root ; TSID=0003FG ; COMMAND=/usr/bin/vi aliases +HOST=xerxes.sudo.ws ; TTY=ttypb ; CWD=/etc/mail ; USER=root ; TSID=0003FG ; COMMAND=/usr/bin/vi aliases ; EXIT=0 diff -Nru sudo-1.9.13p3/lib/eventlog/regress/parse_json/check_parse_json.c sudo-1.9.14p2/lib/eventlog/regress/parse_json/check_parse_json.c --- sudo-1.9.13p3/lib/eventlog/regress/parse_json/check_parse_json.c 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/parse_json/check_parse_json.c 2023-07-15 15:37:23.000000000 +0000 @@ -0,0 +1,270 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2020 Todd C. Miller + * + * 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 + +#include +#include +#include +#include +#include + +#define SUDO_ERROR_WRAP 0 + +#include "sudo_compat.h" +#include "sudo_eventlog.h" +#include "sudo_fatal.h" +#include "sudo_util.h" + +#include "parse_json.h" + +sudo_dso_public int main(int argc, char *argv[]); + +static bool +json_print_object(struct json_container *jsonc, struct eventlog_json_object *object) +{ + struct json_item *item; + struct json_value json_value; + bool ret = false; + + TAILQ_FOREACH(item, &object->items, entries) { + switch (item->type) { + case JSON_STRING: + json_value.type = JSON_STRING; + json_value.u.string = item->u.string; + if (!sudo_json_add_value(jsonc, item->name, &json_value)) + goto oom; + break; + case JSON_NUMBER: + json_value.type = JSON_NUMBER; + json_value.u.number = item->u.number; + if (!sudo_json_add_value(jsonc, item->name, &json_value)) + goto oom; + break; + case JSON_OBJECT: + if (!sudo_json_open_object(jsonc, item->name)) + goto oom; + if (!json_print_object(jsonc, &item->u.child)) + goto done; + if (!sudo_json_close_object(jsonc)) + goto oom; + break; + case JSON_ARRAY: + if (!sudo_json_open_array(jsonc, item->name)) + goto oom; + if (!json_print_object(jsonc, &item->u.child)) + goto done; + if (!sudo_json_close_array(jsonc)) + goto oom; + break; + case JSON_BOOL: + json_value.type = JSON_BOOL; + json_value.u.boolean = item->u.boolean; + if (!sudo_json_add_value(jsonc, item->name, &json_value)) + goto oom; + break; + case JSON_NULL: + json_value.type = JSON_NULL; + if (!sudo_json_add_value(jsonc, item->name, &json_value)) + goto oom; + break; + default: + sudo_warnx("unsupported JSON type %d", item->type); + goto done; + } + } + + ret = true; + goto done; + +oom: + sudo_warnx("%s: %s", __func__, "unable to allocate memory"); +done: + return ret; +} + +static bool +json_format(struct json_container *jsonc, struct eventlog_json_object *object) +{ + struct json_item *item; + bool ret = false; + + /* First object holds all the actual data. */ + item = TAILQ_FIRST(&object->items); + if (item->type != JSON_OBJECT) { + sudo_warnx("expected JSON_OBJECT, got %d", item->type); + goto done; + } + object = &item->u.child; + + if (!json_print_object(jsonc, object)) + goto done; + + ret = true; + +done: + return ret; +} + +static void +usage(void) +{ + fprintf(stderr, "usage: %s [-cv] input_file ...\n", + getprogname()); + exit(EXIT_FAILURE); +} + +static bool +compare(FILE *fp, const char *infile, struct json_container *jsonc) +{ + const char *cp; + unsigned int lineno = 0; + size_t linesize = 0; + char *line = NULL; + ssize_t len; + + cp = sudo_json_get_buf(jsonc); + + while ((len = getdelim(&line, &linesize, '\n', fp)) != -1) { + lineno++; + + /* skip open/close brace, not present in formatted output */ + if (lineno == 1 && strcmp(line, "{\n") == 0) + continue; + if (*cp == '\0' && strcmp(line, "}\n") == 0) + continue; + + /* Ignore newlines in output to make comparison easier. */ + if (*cp == '\n') + cp++; + if (line[len - 1] == '\n') + len--; + + if (strncmp(line, cp, len) != 0) { + fprintf(stderr, "%s: mismatch on line %u\n", infile, lineno); + fprintf(stderr, "expected: %s", line); + fprintf(stderr, "got : %.*s\n", (int)len, cp); + return false; + } + cp += len; + } + free(line); + + return true; +} + +int +main(int argc, char *argv[]) +{ + int ch, i, ntests = 0, errors = 0; + bool cat = false; + + initprogname(argc > 0 ? argv[0] : "check_parse_json"); + + while ((ch = getopt(argc, argv, "cv")) != -1) { + switch (ch) { + case 'c': + cat = true; + break; + case 'v': + /* ignored */ + break; + default: + usage(); + } + } + argc -= optind; + argv += optind; + + if (argc < 1) + usage(); + + for (i = 0; i < argc; i++) { + struct eventlog_json_object *root; + struct json_container jsonc; + const char *infile = argv[i]; + const char *outfile = argv[i]; + const char *cp; + char pathbuf[PATH_MAX]; + FILE *infp = NULL; + FILE *outfp = NULL; + + ntests++; + + if (!sudo_json_init(&jsonc, 4, false, true, true)) { + errors++; + continue; + } + + /* Parse input file. */ + if ((infp = fopen(infile, "r")) == NULL) { + sudo_warn("%s", argv[i]); + errors++; + continue; + } + root = eventlog_json_read(infp, infile); + if (root == NULL) { + errors++; + goto next; + } + + /* Format as pretty-printed JSON */ + if (!json_format(&jsonc, root)) { + errors++; + goto next; + } + + /* Check for a .out.ok file in the same location as the .in file. */ + cp = strrchr(infile, '.'); + if (cp != NULL && strcmp(cp, ".in") == 0) { + snprintf(pathbuf, sizeof(pathbuf), "%.*s.out.ok", + (int)(cp - infile), infile); + if ((outfp = fopen(pathbuf, "r")) != NULL) + outfile = pathbuf; + } + if (outfp == NULL) + outfp = infp; + + /* Compare output to expected output. */ + rewind(outfp); + if (!compare(outfp, outfile, &jsonc)) + errors++; + + /* Write the formatted output to stdout for -c (cat) */ + if (cat) { + fprintf(stdout, "{%s\n}\n", sudo_json_get_buf(&jsonc)); + fflush(stdout); + } + +next: + eventlog_json_free(root); + sudo_json_free(&jsonc); + if (infp != NULL) + fclose(infp); + if (outfp != NULL && outfp != infp) + fclose(outfp); + } + + if (ntests != 0) { + printf("%s: %d test%s run, %d errors, %d%% success rate\n", + getprogname(), ntests, ntests == 1 ? "" : "s", errors, + (ntests - errors) * 100 / ntests); + } + + return errors; +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/parse_json/test1.in sudo-1.9.14p2/lib/eventlog/regress/parse_json/test1.in --- sudo-1.9.13p3/lib/eventlog/regress/parse_json/test1.in 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/parse_json/test1.in 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,34 @@ +{ + "timestamp": { + "seconds": 1584993067, + "nanoseconds": 880288287 + }, + "columns": 80, + "command": "/usr/bin/make", + "lines": 24, + "runargv": [ + "make", + "test" + ], + "runenv": [ + "LANG=en_US.UTF-8", + "PATH=/bin:/sbin:/usr/games:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin", + "TERM=vt100", + "MAIL=/var/mail/root", + "LOGNAME=root", + "USER=root", + "HOME=/root", + "SHELL=/bin/ksh", + "SUDO_COMMAND=/usr/bin/make test", + "SUDO_USER=millert", + "SUDO_UID=8036", + "SUDO_GID=20", + "A__z=\"*SHLVL" + ], + "runuid": 0, + "runuser": "root", + "submitcwd": "/home/test", + "submithost": "sudo.ws", + "submituser": "millert", + "ttyname": "/dev/console" +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/parse_json/test2.in sudo-1.9.14p2/lib/eventlog/regress/parse_json/test2.in --- sudo-1.9.13p3/lib/eventlog/regress/parse_json/test2.in 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/parse_json/test2.in 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,28 @@ +{ + "timestamp": { "seconds": 1584993067, "nanoseconds": 880288287 }, + "columns": 80, + "command": "/usr/bin/make", + "lines": 24, + "runargv": [ "make", "test" ], + "runenv": [ + "LANG=en_US.UTF-8", + "PATH=/bin:/sbin:/usr/games:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin", + "TERM=vt100", + "MAIL=/var/mail/root", + "LOGNAME=root", + "USER=root", + "HOME=/root", + "SHELL=/bin/ksh", + "SUDO_COMMAND=/usr/bin/make test", + "SUDO_USER=millert", + "SUDO_UID=8036", + "SUDO_GID=20", + "A__z=\"*SHLVL" + ], + "runuid": 0, + "runuser": "root", + "submitcwd": "/home/test", + "submithost": "sudo.ws", + "submituser": "millert", + "ttyname": "/dev/console" +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/parse_json/test2.out.ok sudo-1.9.14p2/lib/eventlog/regress/parse_json/test2.out.ok --- sudo-1.9.13p3/lib/eventlog/regress/parse_json/test2.out.ok 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/parse_json/test2.out.ok 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,34 @@ +{ + "timestamp": { + "seconds": 1584993067, + "nanoseconds": 880288287 + }, + "columns": 80, + "command": "/usr/bin/make", + "lines": 24, + "runargv": [ + "make", + "test" + ], + "runenv": [ + "LANG=en_US.UTF-8", + "PATH=/bin:/sbin:/usr/games:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin", + "TERM=vt100", + "MAIL=/var/mail/root", + "LOGNAME=root", + "USER=root", + "HOME=/root", + "SHELL=/bin/ksh", + "SUDO_COMMAND=/usr/bin/make test", + "SUDO_USER=millert", + "SUDO_UID=8036", + "SUDO_GID=20", + "A__z=\"*SHLVL" + ], + "runuid": 0, + "runuser": "root", + "submitcwd": "/home/test", + "submithost": "sudo.ws", + "submituser": "millert", + "ttyname": "/dev/console" +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/parse_json/test3.in sudo-1.9.14p2/lib/eventlog/regress/parse_json/test3.in --- sudo-1.9.13p3/lib/eventlog/regress/parse_json/test3.in 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/parse_json/test3.in 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,22 @@ +{ + "true": false, + "false": true, + "number": 1234567890, + "null": null, + "string": "non\u0073ense", + "scope": { + "a": "b", + "bah": null + }, + "array1": [ + "foo", + "bar", + [ + 123, + null, + false, + "fizz", + "buzz" + ] + ] +} diff -Nru sudo-1.9.13p3/lib/eventlog/regress/parse_json/test3.out.ok sudo-1.9.14p2/lib/eventlog/regress/parse_json/test3.out.ok --- sudo-1.9.13p3/lib/eventlog/regress/parse_json/test3.out.ok 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/eventlog/regress/parse_json/test3.out.ok 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,22 @@ +{ + "true": false, + "false": true, + "number": 1234567890, + "null": null, + "string": "nonsense", + "scope": { + "a": "b", + "bah": null + }, + "array1": [ + "foo", + "bar", + [ + 123, + null, + false, + "fizz", + "buzz" + ] + ] +} diff -Nru sudo-1.9.13p3/lib/iolog/iolog_gets.c sudo-1.9.14p2/lib/iolog/iolog_gets.c --- sudo-1.9.13p3/lib/iolog/iolog_gets.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/lib/iolog/iolog_gets.c 2023-07-15 15:37:21.000000000 +0000 @@ -40,16 +40,16 @@ #include "sudo_iolog.h" /* - * Like gets() but for struct iolog_file. + * Like fgets() but for struct iolog_file. */ char * -iolog_gets(struct iolog_file *iol, char *buf, size_t nbytes, +iolog_gets(struct iolog_file *iol, char *buf, int bufsize, const char **errstr) { char *str; debug_decl(iolog_gets, SUDO_DEBUG_UTIL); - if (nbytes > UINT_MAX) { + if (bufsize < 0) { errno = EINVAL; if (errstr != NULL) *errstr = strerror(errno); @@ -58,7 +58,7 @@ #ifdef HAVE_ZLIB_H if (iol->compressed) { - if ((str = gzgets(iol->fd.g, buf, nbytes)) == NULL) { + if ((str = gzgets(iol->fd.g, buf, bufsize)) == NULL) { if (errstr != NULL) { int errnum; *errstr = gzerror(iol->fd.g, &errnum); @@ -69,7 +69,7 @@ } else #endif { - if ((str = fgets(buf, nbytes, iol->fd.f)) == NULL) { + if ((str = fgets(buf, bufsize, iol->fd.f)) == NULL) { if (errstr != NULL) *errstr = strerror(errno); } diff -Nru sudo-1.9.13p3/lib/iolog/iolog_json.c sudo-1.9.14p2/lib/iolog/iolog_json.c --- sudo-1.9.13p3/lib/iolog/iolog_json.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/lib/iolog/iolog_json.c 2023-07-15 15:37:21.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2020-2021 Todd C. Miller + * Copyright (c) 2020-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -30,908 +30,26 @@ #else # include "compat/stdbool.h" #endif /* HAVE_STDBOOL_H */ -#include -#include -#include -#include -#include -#include #include "sudo_compat.h" #include "sudo_debug.h" #include "sudo_eventlog.h" -#include "sudo_fatal.h" -#include "sudo_gettext.h" #include "sudo_iolog.h" -#include "sudo_util.h" - -#include "iolog_json.h" - -struct json_stack { - unsigned int depth; - unsigned int maxdepth; - struct json_object *frames[64]; -}; -#define JSON_STACK_INTIALIZER(s) { 0, nitems((s).frames) }; - -static bool -json_store_columns(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_columns, SUDO_DEBUG_UTIL); - - if (item->u.number < 1 || item->u.number > INT_MAX) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "tty cols %lld: out of range", item->u.number); - evlog->columns = 0; - debug_return_bool(false); - } - - evlog->columns = item->u.number; - debug_return_bool(true); -} - -static bool -json_store_command(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_command, SUDO_DEBUG_UTIL); - - /* - * Note: struct eventlog must store command + args. - * We don't have argv yet so we append the args later. - */ - free(evlog->command); - evlog->command = item->u.string; - item->u.string = NULL; - debug_return_bool(true); -} - -static bool -json_store_dumped_core(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_dumped_core, SUDO_DEBUG_UTIL); - - evlog->dumped_core = item->u.boolean; - debug_return_bool(true); -} - -static bool -json_store_exit_value(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_exit_value, SUDO_DEBUG_UTIL); - - if (item->u.number < 0 || item->u.number > INT_MAX) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "exit value %lld: out of range", item->u.number); - evlog->exit_value = -1; - debug_return_bool(false); - } - - evlog->exit_value = item->u.number; - debug_return_bool(true); -} - -static bool -json_store_lines(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_lines, SUDO_DEBUG_UTIL); - - if (item->u.number < 1 || item->u.number > INT_MAX) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "tty lines %lld: out of range", item->u.number); - evlog->lines = 0; - debug_return_bool(false); - } - - evlog->lines = item->u.number; - debug_return_bool(true); -} - -char ** -json_array_to_strvec(struct json_object *array) -{ - struct json_item *item; - int len = 0; - char **ret; - debug_decl(json_array_to_strvec, SUDO_DEBUG_UTIL); - - TAILQ_FOREACH(item, &array->items, entries) { - /* Can only convert arrays of string. */ - if (item->type != JSON_STRING) { - sudo_warnx(U_("expected JSON_STRING, got %d"), item->type); - debug_return_ptr(NULL); - } - /* Prevent integer overflow. */ - if (++len == INT_MAX) { - sudo_warnx("%s", U_("JSON_ARRAY too large")); - debug_return_ptr(NULL); - } - } - if ((ret = reallocarray(NULL, len + 1, sizeof(char *))) == NULL) { - sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - debug_return_ptr(NULL); - } - len = 0; - TAILQ_FOREACH(item, &array->items, entries) { - ret[len++] = item->u.string; - item->u.string = NULL; - } - ret[len] = NULL; - - debug_return_ptr(ret); -} - -static bool -json_store_runargv(struct json_item *item, struct eventlog *evlog) -{ - int i; - debug_decl(json_store_runargv, SUDO_DEBUG_UTIL); - - if (evlog->argv != NULL) { - for (i = 0; evlog->argv[i] != NULL; i++) - free(evlog->argv[i]); - free(evlog->argv); - } - evlog->argv = json_array_to_strvec(&item->u.child); - - debug_return_bool(evlog->argv != NULL); -} - -static bool -json_store_runenv(struct json_item *item, struct eventlog *evlog) -{ - int i; - debug_decl(json_store_runenv, SUDO_DEBUG_UTIL); - - if (evlog->envp != NULL) { - for (i = 0; evlog->envp[i] != NULL; i++) - free(evlog->envp[i]); - free(evlog->envp); - } - evlog->envp = json_array_to_strvec(&item->u.child); - - debug_return_bool(evlog->envp != NULL); -} - -static bool -json_store_rungid(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_rungid, SUDO_DEBUG_UTIL); - - evlog->rungid = (gid_t)item->u.number; - debug_return_bool(true); -} - -static bool -json_store_rungroup(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_rungroup, SUDO_DEBUG_UTIL); - - free(evlog->rungroup); - evlog->rungroup = item->u.string; - item->u.string = NULL; - debug_return_bool(true); -} - -static bool -json_store_runuid(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_runuid, SUDO_DEBUG_UTIL); - - evlog->runuid = (uid_t)item->u.number; - debug_return_bool(true); -} - -static bool -json_store_runuser(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_runuser, SUDO_DEBUG_UTIL); - - free(evlog->runuser); - evlog->runuser = item->u.string; - item->u.string = NULL; - debug_return_bool(true); -} - -static bool -json_store_runchroot(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_runchroot, SUDO_DEBUG_UTIL); - - free(evlog->runchroot); - evlog->runchroot = item->u.string; - item->u.string = NULL; - debug_return_bool(true); -} - -static bool -json_store_runcwd(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_runcwd, SUDO_DEBUG_UTIL); - - free(evlog->runcwd); - evlog->runcwd = item->u.string; - item->u.string = NULL; - debug_return_bool(true); -} - -static bool -json_store_signal(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_signal, SUDO_DEBUG_UTIL); - - free(evlog->signal_name); - evlog->signal_name = item->u.string; - item->u.string = NULL; - debug_return_bool(true); -} - -static bool -json_store_submitcwd(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_submitcwd, SUDO_DEBUG_UTIL); - - free(evlog->cwd); - evlog->cwd = item->u.string; - item->u.string = NULL; - debug_return_bool(true); -} - -static bool -json_store_submithost(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_submithost, SUDO_DEBUG_UTIL); - - free(evlog->submithost); - evlog->submithost = item->u.string; - item->u.string = NULL; - debug_return_bool(true); -} - -static bool -json_store_submituser(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_submituser, SUDO_DEBUG_UTIL); - - free(evlog->submituser); - evlog->submituser = item->u.string; - item->u.string = NULL; - debug_return_bool(true); -} - -static bool -json_store_timespec(struct json_item *item, struct timespec *ts) -{ - struct json_object *object; - debug_decl(json_store_timespec, SUDO_DEBUG_UTIL); - - object = &item->u.child; - TAILQ_FOREACH(item, &object->items, entries) { - if (item->type != JSON_NUMBER) - continue; - if (strcmp(item->name, "seconds") == 0) { - ts->tv_sec = item->u.number; - continue; - } - if (strcmp(item->name, "nanoseconds") == 0) { - ts->tv_nsec = item->u.number; - continue; - } - } - debug_return_bool(true); -} - -static bool -json_store_run_time(struct json_item *item, struct eventlog *evlog) -{ - return json_store_timespec(item, &evlog->run_time); -} - -static bool -json_store_timestamp(struct json_item *item, struct eventlog *evlog) -{ - return json_store_timespec(item, &evlog->submit_time); -} - -static bool -json_store_ttyname(struct json_item *item, struct eventlog *evlog) -{ - debug_decl(json_store_ttyname, SUDO_DEBUG_UTIL); - - free(evlog->ttyname); - evlog->ttyname = item->u.string; - item->u.string = NULL; - debug_return_bool(true); -} - -static struct iolog_json_key { - const char *name; - enum json_value_type type; - bool (*setter)(struct json_item *, struct eventlog *); -} iolog_json_keys[] = { - { "columns", JSON_NUMBER, json_store_columns }, - { "command", JSON_STRING, json_store_command }, - { "dumped_core", JSON_BOOL, json_store_dumped_core }, - { "exit_value", JSON_NUMBER, json_store_exit_value }, - { "lines", JSON_NUMBER, json_store_lines }, - { "run_time", JSON_OBJECT, json_store_run_time }, - { "runargv", JSON_ARRAY, json_store_runargv }, - { "runenv", JSON_ARRAY, json_store_runenv }, - { "rungid", JSON_ID, json_store_rungid }, - { "rungroup", JSON_STRING, json_store_rungroup }, - { "runuid", JSON_ID, json_store_runuid }, - { "runuser", JSON_STRING, json_store_runuser }, - { "runchroot", JSON_STRING, json_store_runchroot }, - { "runcwd", JSON_STRING, json_store_runcwd }, - { "signal", JSON_STRING, json_store_signal }, - { "submitcwd", JSON_STRING, json_store_submitcwd }, - { "submithost", JSON_STRING, json_store_submithost }, - { "submituser", JSON_STRING, json_store_submituser }, - { "timestamp", JSON_OBJECT, json_store_timestamp }, - { "ttyname", JSON_STRING, json_store_ttyname }, - { NULL } -}; - -static struct json_item * -new_json_item(enum json_value_type type, char *name, unsigned int lineno) -{ - struct json_item *item; - debug_decl(new_json_item, SUDO_DEBUG_UTIL); - - if ((item = malloc(sizeof(*item))) == NULL) { - sudo_warnx(U_("%s: %s"), __func__, - U_("unable to allocate memory")); - debug_return_ptr(NULL); - } - item->name = name; - item->type = type; - item->lineno = lineno; - - debug_return_ptr(item); -} - -static char * -json_parse_string(char **strp) -{ - char *dst, *end, *ret, *src = *strp + 1; - size_t len; - debug_decl(json_parse_string, SUDO_DEBUG_UTIL); - - for (end = src; *end != '"' && *end != '\0'; end++) { - if (end[0] == '\\' && end[1] == '"') - end++; - } - if (*end != '"') { - sudo_warnx("%s", U_("missing double quote in name")); - debug_return_str(NULL); - } - len = (size_t)(end - src); - - /* Copy string, flattening escaped chars. */ - dst = ret = malloc(len + 1); - if (dst == NULL) { - sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - debug_return_str(NULL); - } - while (src < end) { - char ch = *src++; - if (ch == '\\') { - switch (*src) { - case 'b': - ch = '\b'; - break; - case 'f': - ch = '\f'; - break; - case 'n': - ch = '\n'; - break; - case 'r': - ch = '\r'; - break; - case 't': - ch = '\t'; - break; - case 'u': - /* Only currently handles 8-bit ASCII. */ - if (src[1] == '0' && src[2] == '0') { - ch = sudo_hexchar(&src[3]); - if (ch != -1) { - src += 4; - break; - } - } - /* Not in \u00XX format. */ - FALLTHROUGH; - case '"': - case '\\': - default: - /* Note: a bare \ at the end of a string will be removed. */ - ch = *src; - break; - } - src++; - } - *dst++ = ch; - } - *dst = '\0'; - - /* Trim trailing whitespace. */ - do { - end++; - } while (isspace((unsigned char)*end)); - *strp = end; - - debug_return_str(ret); -} - -void -free_json_items(struct json_item_list *items) -{ - struct json_item *item; - debug_decl(free_json_items, SUDO_DEBUG_UTIL); - - while ((item = TAILQ_FIRST(items)) != NULL) { - TAILQ_REMOVE(items, item, entries); - switch (item->type) { - case JSON_STRING: - free(item->u.string); - break; - case JSON_ARRAY: - case JSON_OBJECT: - free_json_items(&item->u.child.items); - break; - case JSON_ID: - case JSON_NUMBER: - case JSON_BOOL: - case JSON_NULL: - /* Nothing to free. */ - break; - default: - sudo_warnx("%s: internal error, invalid JSON type %d", - __func__, item->type); - break; - } - free(item->name); - free(item); - } - - debug_return; -} - -static bool -iolog_parse_json_object(struct json_object *object, struct eventlog *evlog) -{ - struct json_item *item; - bool ret = false; - debug_decl(iolog_parse_json_object, SUDO_DEBUG_UTIL); - - /* First object holds all the actual data. */ - item = TAILQ_FIRST(&object->items); - if (item == NULL) { - sudo_warnx("%s", U_("missing JSON_OBJECT")); - goto done; - } - if (item->type != JSON_OBJECT) { - sudo_warnx(U_("expected JSON_OBJECT, got %d"), item->type); - goto done; - } - object = &item->u.child; - - TAILQ_FOREACH(item, &object->items, entries) { - struct iolog_json_key *key; - - /* expecting key:value pairs */ - if (item->name == NULL) { - sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO, - "%s: missing object name", __func__); - goto done; - } - - /* lookup name */ - for (key = iolog_json_keys; key->name != NULL; key++) { - if (strcmp(item->name, key->name) == 0) - break; - } - if (key->name == NULL) { - sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO, - "%s: unknown key %s", __func__, item->name); - } else if (key->type != item->type && - (key->type != JSON_ID || item->type != JSON_NUMBER)) { - sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO, - "%s: key mismatch %s type %d, expected %d", __func__, - item->name, item->type, key->type); - goto done; - } else { - /* Matched name and type. */ - if (!key->setter(item, evlog)) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to store %s", key->name); - goto done; - } - } - } - - ret = true; - -done: - debug_return_bool(ret); -} - -static bool -json_insert_bool(struct json_item_list *items, char *name, bool value, - unsigned int lineno) -{ - struct json_item *item; - debug_decl(json_insert_bool, SUDO_DEBUG_UTIL); - - if ((item = new_json_item(JSON_BOOL, name, lineno)) == NULL) - debug_return_bool(false); - item->u.boolean = value; - TAILQ_INSERT_TAIL(items, item, entries); - - debug_return_bool(true); -} - -static bool -json_insert_null(struct json_item_list *items, char *name, unsigned int lineno) -{ - struct json_item *item; - debug_decl(json_insert_null, SUDO_DEBUG_UTIL); - - if ((item = new_json_item(JSON_NULL, name, lineno)) == NULL) - debug_return_bool(false); - TAILQ_INSERT_TAIL(items, item, entries); - - debug_return_bool(true); -} - -static bool -json_insert_num(struct json_item_list *items, char *name, long long value, - unsigned int lineno) -{ - struct json_item *item; - debug_decl(json_insert_num, SUDO_DEBUG_UTIL); - - if ((item = new_json_item(JSON_NUMBER, name, lineno)) == NULL) - debug_return_bool(false); - item->u.number = value; - TAILQ_INSERT_TAIL(items, item, entries); - - debug_return_bool(true); -} - -static bool -json_insert_str(struct json_item_list *items, char *name, char **strp, - unsigned int lineno) -{ - struct json_item *item; - debug_decl(json_insert_str, SUDO_DEBUG_UTIL); - - if ((item = new_json_item(JSON_STRING, name, lineno)) == NULL) - debug_return_bool(false); - item->u.string = json_parse_string(strp); - if (item->u.string == NULL) { - free(item); - debug_return_bool(false); - } - TAILQ_INSERT_TAIL(items, item, entries); - - debug_return_bool(true); -} - -static struct json_object * -json_stack_push(struct json_stack *stack, struct json_item_list *items, - struct json_object *frame, enum json_value_type type, char *name, - unsigned int lineno) -{ - struct json_item *item; - debug_decl(json_stack_push, SUDO_DEBUG_UTIL); - - /* We limit the stack size rather than expanding it. */ - if (stack->depth >= stack->maxdepth) { - sudo_warnx(U_("json stack exhausted (max %u frames)"), stack->maxdepth); - debug_return_ptr(NULL); - } - - /* Allocate a new item and insert it into the list. */ - if ((item = new_json_item(type, name, lineno)) == NULL) - debug_return_ptr(NULL); - TAILQ_INIT(&item->u.child.items); - item->u.child.parent = item; - TAILQ_INSERT_TAIL(items, item, entries); - - /* Push the current frame onto the stack (depth check performed above). */ - stack->frames[stack->depth++] = frame; - - /* Return the new frame */ - debug_return_ptr(&item->u.child); -} - -/* Only expect a value if a name is defined or we are in an array. */ -#define expect_value (name != NULL || (frame->parent != NULL && frame->parent->type == JSON_ARRAY)) - -bool -iolog_parse_json(FILE *fp, const char *filename, struct json_object *root) -{ - struct json_object *frame = root; - struct json_stack stack = JSON_STACK_INTIALIZER(stack); - unsigned int lineno = 0; - char *name = NULL; - char *cp, *buf = NULL; - size_t bufsize = 0; - ssize_t len; - bool ret = false; - bool saw_comma = false; - long long num; - char ch; - debug_decl(iolog_parse_json, SUDO_DEBUG_UTIL); - - root->parent = NULL; - TAILQ_INIT(&root->items); - - while ((len = getdelim(&buf, &bufsize, '\n', fp)) != -1) { - char *ep = buf + len - 1; - cp = buf; - - lineno++; - - /* Trim trailing whitespace. */ - while (ep > cp && isspace((unsigned char)*ep)) - ep--; - ep[1] = '\0'; - - for (;;) { - const char *errstr; - - /* Trim leading whitespace, skip blank lines. */ - while (isspace((unsigned char)*cp)) - cp++; - - /* Check for comma separator and strip it out. */ - if (*cp == ',') { - saw_comma = true; - cp++; - while (isspace((unsigned char)*cp)) - cp++; - } - - /* End of line? */ - if (*cp == '\0') - break; - - switch (*cp) { - case '{': - if (name == NULL && frame->parent != NULL) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("objects must consist of name:value pairs")); - goto done; - } - if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("missing separator between values")); - goto done; - } - cp++; - saw_comma = false; - frame = json_stack_push(&stack, &frame->items, frame, - JSON_OBJECT, name, lineno); - if (frame == NULL) - goto done; - name = NULL; - break; - case '}': - if (stack.depth == 0 || frame->parent == NULL || - frame->parent->type != JSON_OBJECT) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("unmatched close brace")); - goto done; - } - cp++; - frame = stack.frames[--stack.depth]; - saw_comma = false; - break; - case '[': - if (frame->parent == NULL) { - /* Must have an enclosing object. */ - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("unexpected array")); - goto done; - } - if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("missing separator between values")); - goto done; - } - cp++; - saw_comma = false; - frame = json_stack_push(&stack, &frame->items, frame, - JSON_ARRAY, name, lineno); - if (frame == NULL) - goto done; - name = NULL; - break; - case ']': - if (stack.depth == 0 || frame->parent == NULL || - frame->parent->type != JSON_ARRAY) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("unmatched close bracket")); - goto done; - } - cp++; - frame = stack.frames[--stack.depth]; - saw_comma = false; - break; - case '"': - if (frame->parent == NULL) { - /* Must have an enclosing object. */ - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("unexpected string")); - goto done; - } - - if (!expect_value) { - /* Parse "name": */ - if ((name = json_parse_string(&cp)) == NULL) - goto done; - /* TODO: allow colon on next line? */ - if (*cp != ':') { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("missing colon after name")); - goto done; - } - cp++; - } else { - if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("missing separator between values")); - goto done; - } - saw_comma = false; - if (!json_insert_str(&frame->items, name, &cp, lineno)) - goto done; - name = NULL; - } - break; - case 't': - if (strncmp(cp, "true", sizeof("true") - 1) != 0) - goto parse_error; - if (!expect_value) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("unexpected boolean")); - goto done; - } - cp += sizeof("true") - 1; - if (*cp != ',' && !isspace((unsigned char)*cp) && *cp != '\0') - goto parse_error; - if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("missing separator between values")); - goto done; - } - saw_comma = false; - - if (!json_insert_bool(&frame->items, name, true, lineno)) - goto done; - name = NULL; - break; - case 'f': - if (strncmp(cp, "false", sizeof("false") - 1) != 0) - goto parse_error; - if (!expect_value) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("unexpected boolean")); - goto done; - } - cp += sizeof("false") - 1; - if (*cp != ',' && !isspace((unsigned char)*cp) && *cp != '\0') - goto parse_error; - if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("missing separator between values")); - goto done; - } - saw_comma = false; - - if (!json_insert_bool(&frame->items, name, false, lineno)) - goto done; - name = NULL; - break; - case 'n': - if (strncmp(cp, "null", sizeof("null") - 1) != 0) - goto parse_error; - if (!expect_value) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("unexpected null")); - goto done; - } - cp += sizeof("null") - 1; - if (*cp != ',' && !isspace((unsigned char)*cp) && *cp != '\0') - goto parse_error; - if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("missing separator between values")); - goto done; - } - saw_comma = false; - - if (!json_insert_null(&frame->items, name, lineno)) - goto done; - name = NULL; - break; - case '+': case '-': case '0': case '1': case '2': case '3': - case '4': case '5': case '6': case '7': case '8': case '9': - if (!expect_value) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("unexpected number")); - goto done; - } - /* XXX - strtonumx() would be simpler here. */ - len = strcspn(cp, " \f\n\r\t\v,"); - ch = cp[len]; - cp[len] = '\0'; - if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("missing separator between values")); - goto done; - } - saw_comma = false; - num = sudo_strtonum(cp, LLONG_MIN, LLONG_MAX, &errstr); - if (errstr != NULL) { - sudo_warnx("%s:%u:%td: %s: %s", filename, lineno, cp - buf, - cp, U_(errstr)); - goto done; - } - cp += len; - *cp = ch; - - if (!json_insert_num(&frame->items, name, num, lineno)) - goto done; - name = NULL; - break; - default: - goto parse_error; - } - } - } - if (stack.depth != 0) { - frame = stack.frames[stack.depth - 1]; - if (frame->parent == NULL || frame->parent->type == JSON_OBJECT) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("unmatched close brace")); - } else { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, - U_("unmatched close bracket")); - } - goto done; - } - - ret = true; - goto done; - -parse_error: - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, U_("parse error")); -done: - free(buf); - free(name); - if (!ret) - free_json_items(&root->items); - - debug_return_bool(ret); -} bool iolog_parse_loginfo_json(FILE *fp, const char *iolog_dir, struct eventlog *evlog) { - struct json_object root; + struct eventlog_json_object *root; bool ret = false; debug_decl(iolog_parse_loginfo_json, SUDO_DEBUG_UTIL); - if (iolog_parse_json(fp, iolog_dir, &root)) { - /* Walk the stack and parse entries. */ - ret = iolog_parse_json_object(&root, evlog); + root = eventlog_json_read(fp, iolog_dir); + if (root != NULL) { + /* Parse the JSON into an eventlog. */ + ret = eventlog_json_parse(root, evlog); /* Cleanup. */ - free_json_items(&root.items); + eventlog_json_free(root); } debug_return_bool(ret); diff -Nru sudo-1.9.13p3/lib/iolog/iolog_json.h sudo-1.9.14p2/lib/iolog/iolog_json.h --- sudo-1.9.13p3/lib/iolog/iolog_json.h 2023-02-14 16:52:36.000000000 +0000 +++ sudo-1.9.14p2/lib/iolog/iolog_json.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -/* - * SPDX-License-Identifier: ISC - * - * Copyright (c) 2020 Todd C. Miller - * - * 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. - */ - -#ifndef IOLOG_JSON_H -#define IOLOG_JSON_H - -#include "sudo_json.h" -#include "sudo_queue.h" - -TAILQ_HEAD(json_item_list, json_item); - -struct json_object { - struct json_item *parent; - struct json_item_list items; -}; - -struct json_item { - TAILQ_ENTRY(json_item) entries; - char *name; /* may be NULL for first brace */ - unsigned int lineno; - enum json_value_type type; - union { - struct json_object child; - char *string; - long long number; - id_t id; - bool boolean; - } u; -}; - -void free_json_items(struct json_item_list *items); -bool iolog_parse_json(FILE *fp, const char *filename, struct json_object *root); -char **json_array_to_strvec(struct json_object *array); - -#endif /* IOLOG_JSON_H */ diff -Nru sudo-1.9.13p3/lib/iolog/Makefile.in sudo-1.9.14p2/lib/iolog/Makefile.in --- sudo-1.9.13p3/lib/iolog/Makefile.in 2023-02-16 18:43:30.000000000 +0000 +++ sudo-1.9.14p2/lib/iolog/Makefile.in 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2011-2022 Todd C. Miller +# Copyright (c) 2011-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -39,7 +39,10 @@ SED = @SED@ # Libraries -LT_LIBS = $(top_builddir)/lib/util/libsudo_util.la +LIBEVENTLOG = $(top_builddir)/lib/eventlog/libsudo_eventlog.la +LIBFUZZSTUB = $(top_builddir)/lib/fuzzstub/libsudo_fuzzstub.la +LIBUTIL = $(top_builddir)/lib/util/libsudo_util.la +LT_LIBS = $(LIBUTIL) LIBS = @LIBS@ @ZLIB@ $(LT_LIBS) # C preprocessor flags @@ -78,19 +81,17 @@ PVS_LOG_OPTS = -a 'GA:1,2' -e -t errorfile -d $(PVS_IGNORE) # Regression tests -TEST_PROGS = check_iolog_filter check_iolog_json check_iolog_mkpath \ - check_iolog_path check_iolog_timing host_port_test +TEST_PROGS = check_iolog_filter check_iolog_mkpath check_iolog_path \ + check_iolog_timing host_port_test TEST_LIBS = @LIBS@ TEST_LDFLAGS = @LDFLAGS@ TEST_VERBOSE = # Fuzzers -LIBFUZZSTUB = $(top_builddir)/lib/fuzzstub/libsudo_fuzzstub.la LIB_FUZZING_ENGINE = @FUZZ_ENGINE@ FUZZ_PROGS = fuzz_iolog_json fuzz_iolog_legacy fuzz_iolog_timing FUZZ_SEED_CORPUS = ${FUZZ_PROGS:=_seed_corpus.zip} -FUZZ_LIBS = $(LIB_FUZZING_ENGINE) @LIBS@ \ - $(top_builddir)/lib/eventlog/libsudo_eventlog.la +FUZZ_LIBS = libsudo_iolog.la $(LIBEVENTLOG) $(LIB_FUZZING_ENGINE) $(LIBS) FUZZ_LDFLAGS = @LDFLAGS@ FUZZ_MAX_LEN = 4096 FUZZ_RUNS = 8192 @@ -123,8 +124,6 @@ CHECK_IOLOG_FILTER_OBJS = check_iolog_filter.lo -CHECK_IOLOG_JSON_OBJS = check_iolog_json.lo - HOST_PORT_TEST_OBJS = host_port_test.lo FUZZ_IOLOG_JSON_OBJS = fuzz_iolog_json.lo @@ -163,32 +162,29 @@ libsudo_iolog.la: $(LIBIOLOG_OBJS) $(LT_LIBS) $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LIBIOLOG_OBJS) $(LT_LIBS) @ZLIB@ @NET_LIBS@ -check_iolog_path: $(CHECK_IOLOG_PATH_OBJS) libsudo_iolog.la +check_iolog_path: $(CHECK_IOLOG_PATH_OBJS) $(LIBUTIL) libsudo_iolog.la $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_IOLOG_PATH_OBJS) libsudo_iolog.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS) -check_iolog_mkpath: $(CHECK_IOLOG_MKPATH_OBJS) libsudo_iolog.la +check_iolog_mkpath: $(CHECK_IOLOG_MKPATH_OBJS) $(LIBUTIL) libsudo_iolog.la $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_IOLOG_MKPATH_OBJS) libsudo_iolog.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS) -check_iolog_timing: $(CHECK_IOLOG_TIMING_OBJS) libsudo_iolog.la +check_iolog_timing: $(CHECK_IOLOG_TIMING_OBJS) $(LIBUTIL) libsudo_iolog.la $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_IOLOG_TIMING_OBJS) libsudo_iolog.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS) -check_iolog_filter: $(CHECK_IOLOG_FILTER_OBJS) libsudo_iolog.la +check_iolog_filter: $(CHECK_IOLOG_FILTER_OBJS) $(LIBUTIL) libsudo_iolog.la $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_IOLOG_FILTER_OBJS) libsudo_iolog.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS) -check_iolog_json: $(CHECK_IOLOG_JSON_OBJS) libsudo_iolog.la - $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_IOLOG_JSON_OBJS) libsudo_iolog.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS) - -host_port_test: $(HOST_PORT_TEST_OBJS) libsudo_iolog.la +host_port_test: $(HOST_PORT_TEST_OBJS) $(LIBUTIL) libsudo_iolog.la $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(HOST_PORT_TEST_OBJS) libsudo_iolog.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS) -fuzz_iolog_json: $(FUZZ_IOLOG_JSON_OBJS) $(LIBFUZZSTUB) libsudo_iolog.la - $(LIBTOOL) $(LTFLAGS) --mode=link @FUZZ_LD@ -o $@ $(FUZZ_IOLOG_JSON_OBJS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS) libsudo_iolog.la +fuzz_iolog_json: $(FUZZ_IOLOG_JSON_OBJS) $(LIBFUZZSTUB) $(LIBEVENTLOG) $(LIBUTIL) libsudo_iolog.la + $(LIBTOOL) $(LTFLAGS) --mode=link @FUZZ_LD@ -o $@ $(FUZZ_IOLOG_JSON_OBJS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS) -fuzz_iolog_legacy: $(FUZZ_IOLOG_LEGACY_OBJS) $(LIBFUZZSTUB) libsudo_iolog.la - $(LIBTOOL) $(LTFLAGS) --mode=link @FUZZ_LD@ -o $@ $(FUZZ_IOLOG_LEGACY_OBJS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS) libsudo_iolog.la +fuzz_iolog_legacy: $(FUZZ_IOLOG_LEGACY_OBJS) $(LIBFUZZSTUB) $(LIBEVENTLOG) $(LIBUTIL) libsudo_iolog.la + $(LIBTOOL) $(LTFLAGS) --mode=link @FUZZ_LD@ -o $@ $(FUZZ_IOLOG_LEGACY_OBJS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS) -fuzz_iolog_timing: $(FUZZ_IOLOG_TIMING_OBJS) $(LIBFUZZSTUB) libsudo_iolog.la - $(LIBTOOL) $(LTFLAGS) --mode=link @FUZZ_LD@ -o $@ $(FUZZ_IOLOG_TIMING_OBJS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS) libsudo_iolog.la +fuzz_iolog_timing: $(FUZZ_IOLOG_TIMING_OBJS) $(LIBFUZZSTUB) $(LIBEVENTLOG) $(LIBUTIL) libsudo_iolog.la + $(LIBTOOL) $(LTFLAGS) --mode=link @FUZZ_LD@ -o $@ $(FUZZ_IOLOG_TIMING_OBJS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS) fuzz_iolog_json_seed_corpus.zip: tdir=fuzz_iolog_json.$$$$; \ @@ -328,7 +324,6 @@ MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \ rval=0; \ ./check_iolog_filter $(srcdir)/regress/iolog_filter/test[1-9]* || rval=`expr $$rval + $$?`; \ - ./check_iolog_json $(srcdir)/regress/iolog_json/*.in || rval=`expr $$rval + $$?`; \ ./check_iolog_path $(srcdir)/regress/iolog_path/data || rval=`expr $$rval + $$?`; \ ./check_iolog_mkpath || rval=`expr $$rval + $$?`; \ ./check_iolog_timing || rval=`expr $$rval + $$?`; \ @@ -377,22 +372,6 @@ $(CC) -E -o $@ $(CPPFLAGS) $< check_iolog_filter.plog: check_iolog_filter.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/iolog_filter/check_iolog_filter.c --i-file $< --output-file $@ -check_iolog_json.lo: $(srcdir)/regress/iolog_json/check_iolog_json.c \ - $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ - $(incdir)/sudo_fatal.h $(incdir)/sudo_json.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ - $(incdir)/sudo_util.h $(srcdir)/iolog_json.h \ - $(top_builddir)/config.h - $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/regress/iolog_json/check_iolog_json.c -check_iolog_json.i: $(srcdir)/regress/iolog_json/check_iolog_json.c \ - $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ - $(incdir)/sudo_fatal.h $(incdir)/sudo_json.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ - $(incdir)/sudo_util.h $(srcdir)/iolog_json.h \ - $(top_builddir)/config.h - $(CC) -E -o $@ $(CPPFLAGS) $< -check_iolog_json.plog: check_iolog_json.i - rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/iolog_json/check_iolog_json.c --i-file $< --output-file $@ check_iolog_mkpath.lo: $(srcdir)/regress/iolog_mkpath/check_iolog_mkpath.c \ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ $(incdir)/sudo_fatal.h $(incdir)/sudo_iolog.h \ @@ -439,17 +418,15 @@ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \ $(incdir)/sudo_fatal.h $(incdir)/sudo_iolog.h \ - $(incdir)/sudo_json.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ - $(srcdir)/iolog_json.h $(top_builddir)/config.h + $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_util.h $(top_builddir)/config.h $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/regress/fuzz/fuzz_iolog_json.c fuzz_iolog_json.i: $(srcdir)/regress/fuzz/fuzz_iolog_json.c \ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \ $(incdir)/sudo_fatal.h $(incdir)/sudo_iolog.h \ - $(incdir)/sudo_json.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ - $(srcdir)/iolog_json.h $(top_builddir)/config.h + $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_util.h $(top_builddir)/config.h $(CC) -E -o $@ $(CPPFLAGS) $< fuzz_iolog_json.plog: fuzz_iolog_json.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/fuzz/fuzz_iolog_json.c --i-file $< --output-file $@ @@ -617,19 +594,13 @@ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_gets.c --i-file $< --output-file $@ iolog_json.lo: $(srcdir)/iolog_json.c $(incdir)/compat/stdbool.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.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_util.h \ - $(srcdir)/iolog_json.h $(top_builddir)/config.h + $(incdir)/sudo_eventlog.h $(incdir)/sudo_iolog.h \ + $(incdir)/sudo_queue.h $(top_builddir)/config.h $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/iolog_json.c iolog_json.i: $(srcdir)/iolog_json.c $(incdir)/compat/stdbool.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.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_util.h \ - $(srcdir)/iolog_json.h $(top_builddir)/config.h + $(incdir)/sudo_eventlog.h $(incdir)/sudo_iolog.h \ + $(incdir)/sudo_queue.h $(top_builddir)/config.h $(CC) -E -o $@ $(CPPFLAGS) $< iolog_json.plog: iolog_json.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_json.c --i-file $< --output-file $@ diff -Nru sudo-1.9.13p3/lib/iolog/regress/fuzz/fuzz_iolog_json.c sudo-1.9.14p2/lib/iolog/regress/fuzz/fuzz_iolog_json.c --- sudo-1.9.13p3/lib/iolog/regress/fuzz/fuzz_iolog_json.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/lib/iolog/regress/fuzz/fuzz_iolog_json.c 2023-07-15 15:37:21.000000000 +0000 @@ -34,8 +34,6 @@ #include "sudo_plugin.h" #include "sudo_util.h" -#include "iolog_json.h" - int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); static FILE * diff -Nru sudo-1.9.13p3/lib/iolog/regress/iolog_json/check_iolog_json.c sudo-1.9.14p2/lib/iolog/regress/iolog_json/check_iolog_json.c --- sudo-1.9.13p3/lib/iolog/regress/iolog_json/check_iolog_json.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/lib/iolog/regress/iolog_json/check_iolog_json.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,265 +0,0 @@ -/* - * SPDX-License-Identifier: ISC - * - * Copyright (c) 2020 Todd C. Miller - * - * 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 - -#include -#include -#include -#include -#include - -#define SUDO_ERROR_WRAP 0 - -#include "sudo_compat.h" -#include "sudo_util.h" -#include "sudo_fatal.h" - -#include "iolog_json.h" - -sudo_dso_public int main(int argc, char *argv[]); - -static bool -json_print_object(struct json_container *jsonc, struct json_object *object) -{ - struct json_item *item; - struct json_value json_value; - bool ret = false; - - TAILQ_FOREACH(item, &object->items, entries) { - switch (item->type) { - case JSON_STRING: - json_value.type = JSON_STRING; - json_value.u.string = item->u.string; - if (!sudo_json_add_value(jsonc, item->name, &json_value)) - goto oom; - break; - case JSON_NUMBER: - json_value.type = JSON_NUMBER; - json_value.u.number = item->u.number; - if (!sudo_json_add_value(jsonc, item->name, &json_value)) - goto oom; - break; - case JSON_OBJECT: - if (!sudo_json_open_object(jsonc, item->name)) - goto oom; - if (!json_print_object(jsonc, &item->u.child)) - goto done; - if (!sudo_json_close_object(jsonc)) - goto oom; - break; - case JSON_ARRAY: - if (!sudo_json_open_array(jsonc, item->name)) - goto oom; - if (!json_print_object(jsonc, &item->u.child)) - goto done; - if (!sudo_json_close_array(jsonc)) - goto oom; - break; - case JSON_BOOL: - json_value.type = JSON_BOOL; - json_value.u.boolean = item->u.boolean; - if (!sudo_json_add_value(jsonc, item->name, &json_value)) - goto oom; - break; - case JSON_NULL: - json_value.type = JSON_NULL; - if (!sudo_json_add_value(jsonc, item->name, &json_value)) - goto oom; - break; - default: - sudo_warnx("unsupported JSON type %d", item->type); - goto done; - } - } - - ret = true; - goto done; - -oom: - sudo_warnx("%s: %s", __func__, "unable to allocate memory"); -done: - return ret; -} - -static bool -json_format(struct json_container *jsonc, struct json_object *object) -{ - struct json_item *item; - bool ret = false; - - /* First object holds all the actual data. */ - item = TAILQ_FIRST(&object->items); - if (item->type != JSON_OBJECT) { - sudo_warnx("expected JSON_OBJECT, got %d", item->type); - goto done; - } - object = &item->u.child; - - if (!json_print_object(jsonc, object)) - goto done; - - ret = true; - -done: - return ret; -} - -static void -usage(void) -{ - fprintf(stderr, "usage: %s [-c] input_file ...\n", - getprogname()); - exit(EXIT_FAILURE); -} - -static bool -compare(FILE *fp, const char *infile, struct json_container *jsonc) -{ - const char *cp; - unsigned int lineno = 0; - size_t linesize = 0; - char *line = NULL; - ssize_t len; - - cp = sudo_json_get_buf(jsonc); - - while ((len = getdelim(&line, &linesize, '\n', fp)) != -1) { - lineno++; - - /* skip open/close brace, not present in formatted output */ - if (lineno == 1 && strcmp(line, "{\n") == 0) - continue; - if (*cp == '\0' && strcmp(line, "}\n") == 0) - continue; - - /* Ignore newlines in output to make comparison easier. */ - if (*cp == '\n') - cp++; - if (line[len - 1] == '\n') - len--; - - if (strncmp(line, cp, len) != 0) { - fprintf(stderr, "%s: mismatch on line %u\n", infile, lineno); - fprintf(stderr, "expected: %s", line); - fprintf(stderr, "got : %.*s\n", (int)len, cp); - return false; - } - cp += len; - } - free(line); - - return true; -} - -int -main(int argc, char *argv[]) -{ - struct json_object root; - int ch, i, ntests = 0, errors = 0; - bool cat = false; - - initprogname(argc > 0 ? argv[0] : "check_iolog_json"); - - while ((ch = getopt(argc, argv, "c")) != -1) { - switch (ch) { - case 'c': - cat = true; - break; - default: - usage(); - } - } - argc -= optind; - argv += optind; - - if (argc < 1) - usage(); - - for (i = 0; i < argc; i++) { - struct json_container jsonc; - const char *infile = argv[i]; - const char *outfile = argv[i]; - const char *cp; - char pathbuf[PATH_MAX]; - FILE *infp = NULL; - FILE *outfp = NULL; - - ntests++; - - if (!sudo_json_init(&jsonc, 4, false, true, true)) { - errors++; - continue; - } - - /* Parse input file. */ - if ((infp = fopen(infile, "r")) == NULL) { - sudo_warn("%s", argv[i]); - errors++; - continue; - } - if (!iolog_parse_json(infp, infile, &root)) { - errors++; - goto next; - } - - /* Format as pretty-printed JSON */ - if (!json_format(&jsonc, &root)) { - errors++; - goto next; - } - - /* Check for a .out.ok file in the same location as the .in file. */ - cp = strrchr(infile, '.'); - if (cp != NULL && strcmp(cp, ".in") == 0) { - snprintf(pathbuf, sizeof(pathbuf), "%.*s.out.ok", - (int)(cp - infile), infile); - if ((outfp = fopen(pathbuf, "r")) != NULL) - outfile = pathbuf; - } - if (outfp == NULL) - outfp = infp; - - /* Compare output to expected output. */ - rewind(outfp); - if (!compare(outfp, outfile, &jsonc)) - errors++; - - /* Write the formatted output to stdout for -c (cat) */ - if (cat) { - fprintf(stdout, "{%s\n}\n", sudo_json_get_buf(&jsonc)); - fflush(stdout); - } - -next: - free_json_items(&root.items); - sudo_json_free(&jsonc); - if (infp != NULL) - fclose(infp); - if (outfp != NULL && outfp != infp) - fclose(outfp); - } - - if (ntests != 0) { - printf("iolog_json: %d test%s run, %d errors, %d%% success rate\n", - ntests, ntests == 1 ? "" : "s", errors, - (ntests - errors) * 100 / ntests); - } - - return errors; -} diff -Nru sudo-1.9.13p3/lib/iolog/regress/iolog_json/test1.in sudo-1.9.14p2/lib/iolog/regress/iolog_json/test1.in --- sudo-1.9.13p3/lib/iolog/regress/iolog_json/test1.in 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/lib/iolog/regress/iolog_json/test1.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -{ - "timestamp": { - "seconds": 1584993067, - "nanoseconds": 880288287 - }, - "columns": 80, - "command": "/usr/bin/make", - "lines": 24, - "runargv": [ - "make", - "test" - ], - "runenv": [ - "LANG=en_US.UTF-8", - "PATH=/bin:/sbin:/usr/games:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin", - "TERM=vt100", - "MAIL=/var/mail/root", - "LOGNAME=root", - "USER=root", - "HOME=/root", - "SHELL=/bin/ksh", - "SUDO_COMMAND=/usr/bin/make test", - "SUDO_USER=millert", - "SUDO_UID=8036", - "SUDO_GID=20", - "A__z=\"*SHLVL" - ], - "runuid": 0, - "runuser": "root", - "submitcwd": "/home/test", - "submithost": "sudo.ws", - "submituser": "millert", - "ttyname": "/dev/console" -} diff -Nru sudo-1.9.13p3/lib/iolog/regress/iolog_json/test2.in sudo-1.9.14p2/lib/iolog/regress/iolog_json/test2.in --- sudo-1.9.13p3/lib/iolog/regress/iolog_json/test2.in 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/lib/iolog/regress/iolog_json/test2.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -{ - "timestamp": { "seconds": 1584993067, "nanoseconds": 880288287 }, - "columns": 80, - "command": "/usr/bin/make", - "lines": 24, - "runargv": [ "make", "test" ], - "runenv": [ - "LANG=en_US.UTF-8", - "PATH=/bin:/sbin:/usr/games:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin", - "TERM=vt100", - "MAIL=/var/mail/root", - "LOGNAME=root", - "USER=root", - "HOME=/root", - "SHELL=/bin/ksh", - "SUDO_COMMAND=/usr/bin/make test", - "SUDO_USER=millert", - "SUDO_UID=8036", - "SUDO_GID=20", - "A__z=\"*SHLVL" - ], - "runuid": 0, - "runuser": "root", - "submitcwd": "/home/test", - "submithost": "sudo.ws", - "submituser": "millert", - "ttyname": "/dev/console" -} diff -Nru sudo-1.9.13p3/lib/iolog/regress/iolog_json/test2.out.ok sudo-1.9.14p2/lib/iolog/regress/iolog_json/test2.out.ok --- sudo-1.9.13p3/lib/iolog/regress/iolog_json/test2.out.ok 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/lib/iolog/regress/iolog_json/test2.out.ok 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -{ - "timestamp": { - "seconds": 1584993067, - "nanoseconds": 880288287 - }, - "columns": 80, - "command": "/usr/bin/make", - "lines": 24, - "runargv": [ - "make", - "test" - ], - "runenv": [ - "LANG=en_US.UTF-8", - "PATH=/bin:/sbin:/usr/games:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin", - "TERM=vt100", - "MAIL=/var/mail/root", - "LOGNAME=root", - "USER=root", - "HOME=/root", - "SHELL=/bin/ksh", - "SUDO_COMMAND=/usr/bin/make test", - "SUDO_USER=millert", - "SUDO_UID=8036", - "SUDO_GID=20", - "A__z=\"*SHLVL" - ], - "runuid": 0, - "runuser": "root", - "submitcwd": "/home/test", - "submithost": "sudo.ws", - "submituser": "millert", - "ttyname": "/dev/console" -} diff -Nru sudo-1.9.13p3/lib/iolog/regress/iolog_json/test3.in sudo-1.9.14p2/lib/iolog/regress/iolog_json/test3.in --- sudo-1.9.13p3/lib/iolog/regress/iolog_json/test3.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/lib/iolog/regress/iolog_json/test3.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -{ - "true": false, - "false": true, - "number": 1234567890, - "null": null, - "string": "non\u0073ense", - "scope": { - "a": "b", - "bah": null - }, - "array1": [ - "foo", - "bar", - [ - 123, - null, - false, - "fizz", - "buzz" - ] - ] -} diff -Nru sudo-1.9.13p3/lib/iolog/regress/iolog_json/test3.out.ok sudo-1.9.14p2/lib/iolog/regress/iolog_json/test3.out.ok --- sudo-1.9.13p3/lib/iolog/regress/iolog_json/test3.out.ok 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/lib/iolog/regress/iolog_json/test3.out.ok 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -{ - "true": false, - "false": true, - "number": 1234567890, - "null": null, - "string": "nonsense", - "scope": { - "a": "b", - "bah": null - }, - "array1": [ - "foo", - "bar", - [ - 123, - null, - false, - "fizz", - "buzz" - ] - ] -} diff -Nru sudo-1.9.13p3/lib/util/event.c sudo-1.9.14p2/lib/util/event.c --- sudo-1.9.13p3/lib/util/event.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/lib/util/event.c 2023-07-15 15:37:23.000000000 +0000 @@ -291,7 +291,7 @@ /* For SUDO_EV_SIGINFO we use a container to store closure + siginfo_t */ if (ISSET(events, SUDO_EV_SIGINFO)) { struct sudo_ev_siginfo_container *container = - malloc(sizeof(*container) + sizeof(siginfo_t) - 1); + malloc(sizeof(*container) + sizeof(siginfo_t)); if (container == NULL) { sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, "%s: unable to allocate siginfo container", __func__); diff -Nru sudo-1.9.13p3/lib/util/getcwd.c sudo-1.9.14p2/lib/util/getcwd.c --- sudo-1.9.13p3/lib/util/getcwd.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/lib/util/getcwd.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,244 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright (c) 1989, 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University 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 REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include - -#ifndef HAVE_GETCWD - -#include -#include - -#include -#include -#include -#include -#include - -#include "sudo_compat.h" - -#define ISDOT(dp) \ - (dp->d_name[0] == '.' && (dp->d_name[1] == '\0' || \ - (dp->d_name[1] == '.' && dp->d_name[2] == '\0'))) - -#if defined(HAVE_STRUCT_DIRENT_D_NAMLEN) && HAVE_STRUCT_DIRENT_D_NAMLEN -# define NAMLEN(dirent) (dirent)->d_namlen -#else -# define NAMLEN(dirent) strlen((dirent)->d_name) -#endif - -char * -sudo_getcwd(char *pt, size_t size) -{ - struct dirent *dp; - DIR *dir = NULL; - dev_t dev; - ino_t ino; - int first; - char *bpt, *bup; - struct stat s; - dev_t root_dev; - ino_t root_ino; - size_t ptsize, upsize; - int save_errno; - char *ept, *eup, *up; - - /* - * If no buffer specified by the user, allocate one as necessary. - * If a buffer is specified, the size has to be non-zero. The path - * is built from the end of the buffer backwards. - */ - if (pt) { - ptsize = 0; - if (!size) { - errno = EINVAL; - return NULL; - } - ept = pt + size; - } else { - if ((pt = malloc(ptsize = 1024 - 4)) == NULL) - return NULL; - ept = pt + ptsize; - } - bpt = ept - 1; - *bpt = '\0'; - - /* - * Allocate bytes (1024 - malloc space) for the string of "../"'s. - * Should always be enough (it's 340 levels). If it's not, allocate - * as necessary. Special * case the first stat, it's ".", not "..". - */ - if ((up = malloc(upsize = 1024 - 4)) == NULL) - goto err; - eup = up + PATH_MAX; - bup = up; - up[0] = '.'; - up[1] = '\0'; - - /* Save root values, so know when to stop. */ - if (stat("/", &s)) - goto err; - root_dev = s.st_dev; - root_ino = s.st_ino; - - errno = 0; /* XXX readdir has no error return. */ - - for (first = 1;; first = 0) { - /* Stat the current level. */ - if (lstat(up, &s)) - goto err; - - /* Save current node values. */ - ino = s.st_ino; - dev = s.st_dev; - - /* Check for reaching root. */ - if (root_dev == dev && root_ino == ino) { - *--bpt = '/'; - /* - * It's unclear that it's a requirement to copy the - * path to the beginning of the buffer, but it's always - * been that way and stuff would probably break. - */ - memcpy(pt, bpt, ept - bpt); - free(up); - return pt; - } - - /* - * Build pointer to the parent directory, allocating memory - * as necessary. Max length is 3 for "../", the largest - * possible component name, plus a trailing NULL. - */ - if (bup + 3 + NAME_MAX + 1 >= eup) { - char *nup; - - if ((nup = reallocarray(up, upsize, 2)) == NULL) - goto err; - upsize *= 2; - up = nup; - bup = up; - eup = up + upsize; - } - *bup++ = '.'; - *bup++ = '.'; - *bup = '\0'; - - /* Open and stat parent directory. */ - if (!(dir = opendir(up)) || fstat(dirfd(dir), &s)) - goto err; - - /* Add trailing slash for next directory. */ - *bup++ = '/'; - - /* - * If it's a mount point, have to stat each element because - * the inode number in the directory is for the entry in the - * parent directory, not the inode number of the mounted file. - */ - save_errno = 0; - if (s.st_dev == dev) { - for (;;) { - if (!(dp = readdir(dir))) - goto notfound; - if (dp->d_fileno == ino) - break; - } - } else - for (;;) { - if (!(dp = readdir(dir))) - goto notfound; - if (ISDOT(dp)) - continue; - memcpy(bup, dp->d_name, NAMLEN(dp) + 1); - - /* Save the first error for later. */ - if (lstat(up, &s)) { - if (!save_errno) - save_errno = errno; - errno = 0; - continue; - } - if (s.st_dev == dev && s.st_ino == ino) - break; - } - - /* - * Check for length of the current name, preceding slash, - * leading slash. - */ - if (bpt - pt <= NAMLEN(dp) + (first ? 1 : 2)) { - size_t len, off; - char *npt; - - if (!ptsize) { - errno = ERANGE; - goto err; - } - off = bpt - pt; - len = ept - bpt; - if ((npt = reallocarray(pt, ptsize, 2)) == NULL) - goto err; - ptsize *= 2; - pt = npt; - bpt = pt + off; - ept = pt + ptsize; - memcpy(ept - len, bpt, len); - bpt = ept - len; - } - if (!first) - *--bpt = '/'; - bpt -= NAMLEN(dp); - memcpy(bpt, dp->d_name, NAMLEN(dp)); - (void)closedir(dir); - - /* Truncate any file name. */ - *bup = '\0'; - } - -notfound: - /* - * If readdir set errno, use it, not any saved error; otherwise, - * didn't find the current directory in its parent directory, set - * errno to ENOENT. - */ - if (!errno) - errno = save_errno ? save_errno : ENOENT; - /* FALLTHROUGH */ -err: - if (ptsize) - free(pt); - if (up) - free(up); - if (dir) - (void)closedir(dir); - return NULL; -} -#endif /* HAVE_GETCWD */ diff -Nru sudo-1.9.13p3/lib/util/lbuf.c sudo-1.9.14p2/lib/util/lbuf.c --- sudo-1.9.13p3/lib/util/lbuf.c 2023-02-23 16:14:45.000000000 +0000 +++ sudo-1.9.14p2/lib/util/lbuf.c 2023-07-15 15:37:23.000000000 +0000 @@ -270,7 +270,7 @@ } /* - * Parse the format and append strings, only %s and %% escapes are supported. + * Parse the format and append strings, only %s, %n$s and %% escapes are supported. */ bool sudo_lbuf_append_v1(struct sudo_lbuf *lbuf, const char *fmt, ...) @@ -279,7 +279,7 @@ bool ret = false; va_list ap; const char *s; - int len; + size_t len; debug_decl(sudo_lbuf_append, SUDO_DEBUG_UTIL); if (sudo_lbuf_error(lbuf)) @@ -287,6 +287,48 @@ va_start(ap, fmt); while (*fmt != '\0') { + if (fmt[0] == '%' && isdigit((unsigned char)fmt[1])) { + const char *num_start = fmt + 1; + const char *num_end = num_start; + int arg_num; + /* Find the end of the numeric part */ + while (isdigit((unsigned char)*num_end)) + num_end++; + if (num_end[0] == '$' && num_end[1] == 's' && num_end > num_start) { + /* Convert the numeric part to an integer */ + char numbuf[(((sizeof(int) * 8) + 2) / 3) + 2]; + len = num_end - num_start; + if (len >= sizeof(numbuf)) { + errno = EINVAL; + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "integer overflow parsing $n"); + lbuf->error = 1; + goto done; + } + memcpy(numbuf, num_start, len); + numbuf[len] = '\0'; + arg_num = atoi(numbuf); + if (arg_num > 0) { + va_list arg_copy; + va_copy(arg_copy, ap); + for (int i = 1; i < arg_num; i++) { + (void)va_arg(arg_copy, char *); + } + if ((s = va_arg(arg_copy, char *)) == NULL) + s = "(NULL)"; + len = strlen(s); + if (!sudo_lbuf_expand(lbuf, len)) { + va_end(arg_copy); + goto done; + } + memcpy(lbuf->buf + lbuf->len, s, len); + lbuf->len += len; + fmt = num_end + 2; + va_end(arg_copy); + continue; + } + } + } if (fmt[0] == '%' && fmt[1] == 's') { if ((s = va_arg(ap, char *)) == NULL) s = "(NULL)"; diff -Nru sudo-1.9.13p3/lib/util/Makefile.in sudo-1.9.14p2/lib/util/Makefile.in --- sudo-1.9.13p3/lib/util/Makefile.in 2023-02-16 18:43:30.000000000 +0000 +++ sudo-1.9.14p2/lib/util/Makefile.in 2023-07-15 15:37:21.000000000 +0000 @@ -37,6 +37,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localstatedir = @localstatedir@ @@ -65,7 +66,7 @@ INSTALL_BACKUP = @INSTALL_BACKUP@ # C preprocessor defines -CPPDEFS = -D_PATH_SUDO_CONF=\"$(sysconfdir)/sudo.conf\" +CPPDEFS = -D_PATH_SUDO_CONF=\"@sudo_conf@\" # C preprocessor flags CPPFLAGS = -I$(incdir) -I$(top_builddir) -I. -I$(srcdir) $(CPPDEFS) \ @@ -111,11 +112,11 @@ PVS_LOG_OPTS = -a 'GA:1,2' -e -t errorfile -d $(PVS_IGNORE) # Regression tests -TEST_PROGS = conf_test getgids getgrouplist_test hexchar_test hltq_test \ - json_test multiarch_test open_parent_dir_test parse_gids_test \ - parseln_test progname_test regex_test strsplit_test \ - strtobool_test strtoid_test strtomode_test strtonum_test \ - uuid_test @COMPAT_TEST_PROGS@ +TEST_PROGS = conf_test digest_test getgids getgrouplist_test hexchar_test \ + hltq_test json_test multiarch_test open_parent_dir_test \ + parse_gids_test parseln_test progname_test regex_test \ + strsplit_test strtobool_test strtoid_test strtomode_test \ + strtonum_test uuid_test @COMPAT_TEST_PROGS@ TEST_LIBS = @LIBS@ TEST_LDFLAGS = @LDFLAGS@ @@ -167,6 +168,8 @@ CONF_TEST_OBJS = conf_test.lo sudo_conf.lo +DIGEST_TEST_OBJS = digest_test.lo @DIGEST@ + FNM_TEST_OBJS = fnm_test.lo fnmatch.lo GLOBTEST_OBJS = globtest.lo glob.lo @@ -242,9 +245,9 @@ libsudo_util.la: $(LTOBJS) @LT_LDDEP@ case "$(LT_LDFLAGS)" in \ *-no-install*) \ - $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LDFLAGS) $(LT_LDFLAGS) $(LTOBJS) @LT_DEP_LIBS@ @LIBINTL@ @LIBMD@ @LIBCRYPTO@ @LIBPTHREAD@ @LIBDL@ @LIBRT@ @NET_LIBS@;; \ + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LDFLAGS) $(LT_LDFLAGS) $(LTOBJS) @LT_DEP_LIBS@ @LIBINTL@ @LIBCRYPTO@ @LIBPTHREAD@ @LIBDL@ @LIBRT@ @NET_LIBS@;; \ *) \ - $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LDFLAGS) $(ASAN_LDFLAGS) $(HARDENING_LDFLAGS) $(LT_LDFLAGS) $(LTOBJS) -version-info $(SHLIB_VERSION) -rpath $(libexecdir)/sudo @LT_DEP_LIBS@ @LIBINTL@ @LIBMD@ @LIBCRYPTO@ @LIBPTHREAD@ @LIBDL@ @LIBRT@ @NET_LIBS@;; \ + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LDFLAGS) $(ASAN_LDFLAGS) $(HARDENING_LDFLAGS) $(LT_LDFLAGS) $(LTOBJS) -version-info $(SHLIB_VERSION) -rpath $(libexecdir)/sudo @LT_DEP_LIBS@ @LIBINTL@ @LIBCRYPTO@ @LIBPTHREAD@ @LIBDL@ @LIBRT@ @NET_LIBS@;; \ esac siglist.c: mksiglist @@ -281,6 +284,9 @@ conf_test: $(CONF_TEST_OBJS) libsudo_util.la $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CONF_TEST_OBJS) libsudo_util.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS) +digest_test: $(DIGEST_TEST_OBJS) libsudo_util.la + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(DIGEST_TEST_OBJS) libsudo_util.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS) @LIBCRYPTO@ + fnm_test: $(FNM_TEST_OBJS) libsudo_util.la $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(FNM_TEST_OBJS) libsudo_util.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS) @@ -407,7 +413,7 @@ uninstall: $(LIBTOOL) $(LTFLAGS) --mode=uninstall rm -f $(DESTDIR)$(libexecdir)/sudo/libsudo_util.la -test -z "$(INSTALL_BACKUP)" || \ - rf -f $(DESTDIR)$(libexecdir)/sudo/libsudo_util.*~ + rm -f $(DESTDIR)$(libexecdir)/sudo/libsudo_util.*~ splint: splint $(SPLINT_OPTS) -I$(incdir) -I$(top_builddir) $(srcdir)/*.c @@ -449,6 +455,7 @@ if test -f closefrom_test; then \ ./closefrom_test || rval=`expr $$rval + $$?`; \ fi; \ + ./digest_test || rval=`expr $$rval + $$?`; \ if test -f fnm_test; then \ ./fnm_test $(srcdir)/regress/fnmatch/fnm_test.in || rval=`expr $$rval + $$?`; \ fi; \ @@ -471,9 +478,16 @@ ./strsig_test || rval=`expr $$rval + $$?`; \ fi; \ ./getgrouplist_test || rval=`expr $$rval + $$?`; \ + ./hexchar_test || rval=`expr $$rval + $$?`; \ + ./hltq_test || rval=`expr $$rval + $$?`; \ + ./json_test || rval=`expr $$rval + $$?`; \ ./multiarch_test || rval=`expr $$rval + $$?`; \ ./open_parent_dir_test || rval=`expr $$rval + $$?`; \ ./parse_gids_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; \ ./regex_test || rval=`expr $$rval + $$?`; \ ./strsplit_test || rval=`expr $$rval + $$?`; \ ./strtobool_test || rval=`expr $$rval + $$?`; \ @@ -481,13 +495,6 @@ ./strtomode_test || rval=`expr $$rval + $$?`; \ ./strtonum_test || rval=`expr $$rval + $$?`; \ ./uuid_test || rval=`expr $$rval + $$?`; \ - ./hltq_test || rval=`expr $$rval + $$?`; \ - ./hexchar_test || rval=`expr $$rval + $$?`; \ - ./json_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; \ AWK=$(AWK) $(HARNESS) sudo_conf || rval=`expr $$rval + $$?`; \ AWK=$(AWK) $(HARNESS) sudo_parseln || rval=`expr $$rval + $$?`; \ exit $$rval; \ @@ -651,6 +658,20 @@ $(CC) -E -o $@ $(CPPFLAGS) $< digest_openssl.plog: digest_openssl.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/digest_openssl.c --i-file $< --output-file $@ +digest_test.lo: $(srcdir)/regress/digest/digest_test.c \ + $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ + $(incdir)/sudo_digest.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) $(HARDENING_CFLAGS) $(srcdir)/regress/digest/digest_test.c +digest_test.i: $(srcdir)/regress/digest/digest_test.c \ + $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ + $(incdir)/sudo_digest.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_util.h \ + $(top_builddir)/config.h + $(CC) -E -o $@ $(CPPFLAGS) $< +digest_test.plog: digest_test.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/digest/digest_test.c --i-file $< --output-file $@ dup3.lo: $(srcdir)/dup3.c $(incdir)/sudo_compat.h $(top_builddir)/config.h $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/dup3.c dup3.i: $(srcdir)/dup3.c $(incdir)/sudo_compat.h $(top_builddir)/config.h @@ -793,12 +814,6 @@ $(CC) -E -o $@ $(CPPFLAGS) $< getaddrinfo.plog: getaddrinfo.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/getaddrinfo.c --i-file $< --output-file $@ -getcwd.lo: $(srcdir)/getcwd.c $(incdir)/sudo_compat.h $(top_builddir)/config.h - $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/getcwd.c -getcwd.i: $(srcdir)/getcwd.c $(incdir)/sudo_compat.h $(top_builddir)/config.h - $(CC) -E -o $@ $(CPPFLAGS) $< -getcwd.plog: getcwd.i - rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/getcwd.c --i-file $< --output-file $@ getdelim.lo: $(srcdir)/getdelim.c $(incdir)/sudo_compat.h \ $(top_builddir)/config.h $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/getdelim.c @@ -1041,11 +1056,11 @@ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/key_val.c --i-file $< --output-file $@ lbuf.lo: $(srcdir)/lbuf.c $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_lbuf.h $(incdir)/sudo_queue.h \ - $(top_builddir)/config.h + $(incdir)/sudo_util.h $(top_builddir)/config.h $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/lbuf.c lbuf.i: $(srcdir)/lbuf.c $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_lbuf.h $(incdir)/sudo_queue.h \ - $(top_builddir)/config.h + $(incdir)/sudo_util.h $(top_builddir)/config.h $(CC) -E -o $@ $(CPPFLAGS) $< lbuf.plog: lbuf.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/lbuf.c --i-file $< --output-file $@ @@ -1311,6 +1326,12 @@ $(CC) -E -o $@ $(CPPFLAGS) $< reallocarray.plog: reallocarray.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/reallocarray.c --i-file $< --output-file $@ +realpath.lo: $(srcdir)/realpath.c $(top_builddir)/config.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/realpath.c +realpath.i: $(srcdir)/realpath.c $(top_builddir)/config.h + $(CC) -E -o $@ $(CPPFLAGS) $< +realpath.plog: realpath.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/realpath.c --i-file $< --output-file $@ regex.lo: $(srcdir)/regex.c $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_gettext.h \ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h $(top_builddir)/config.h diff -Nru sudo-1.9.13p3/lib/util/nanosleep.c sudo-1.9.14p2/lib/util/nanosleep.c --- sudo-1.9.13p3/lib/util/nanosleep.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/lib/util/nanosleep.c 2023-07-15 15:37:21.000000000 +0000 @@ -1,7 +1,8 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2009-2011, 2013, 2017-2018 Todd C. Miller + * Copyright (c) 2009-2011, 2013, 2017-2018, 2023 + * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -37,28 +38,36 @@ #include "sudo_util.h" int -sudo_nanosleep(const struct timespec *ts, struct timespec *rts) +sudo_nanosleep(const struct timespec *timeout, struct timespec *remainder) { - struct timeval timeout, endtime, now; + struct timespec endtime, now; + struct timeval tv; int rval; - if (ts->tv_sec == 0 && ts->tv_nsec < 1000) { - timeout.tv_sec = 0; - timeout.tv_usec = 1; + if (timeout->tv_sec == 0 && timeout->tv_nsec < 1000) { + tv.tv_sec = 0; + tv.tv_usec = 1; } else { - TIMESPEC_TO_TIMEVAL(&timeout, ts); + TIMESPEC_TO_TIMEVAL(&tv, timeout); } - if (rts != NULL) { - if (gettimeofday(&endtime, NULL) == -1) + if (remainder != NULL) { + if (sudo_gettime_real(&endtime) == -1) return -1; - sudo_timevaladd(&endtime, &timeout, &endtime); + sudo_timespecadd(&endtime, timeout, &endtime); } - rval = select(0, NULL, NULL, NULL, &timeout); - if (rts != NULL && rval == -1 && errno == EINTR) { - if (gettimeofday(&now, NULL) == -1) - return -1; - sudo_timevalsub(&endtime, &now, &endtime); - TIMEVAL_TO_TIMESPEC(&endtime, rts); + rval = select(0, NULL, NULL, NULL, &tv); + if (remainder != NULL) { + if (rval == 0) { + /* Timeout expired, no remaining time. */ + sudo_timespecclear(remainder); + } else if (errno == EINTR) { + /* Interrupted, compute remaining time. */ + if (sudo_gettime_real(&now) == -1) + return -1; + sudo_timespecsub(&endtime, &now, remainder); + if (remainder->tv_sec < 0 || remainder->tv_nsec < 0) + sudo_timespecclear(remainder); + } } return rval; } diff -Nru sudo-1.9.13p3/lib/util/rcstr.c sudo-1.9.14p2/lib/util/rcstr.c --- sudo-1.9.13p3/lib/util/rcstr.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/lib/util/rcstr.c 2023-07-15 15:37:21.000000000 +0000 @@ -34,7 +34,7 @@ /* Trivial reference-counted strings. */ struct rcstr { int refcnt; - char str[1]; /* actually bigger */ + char str[]; }; /* @@ -62,8 +62,7 @@ struct rcstr *rcs; debug_decl(sudo_rcstr_dup, SUDO_DEBUG_UTIL); - /* Note: sizeof(struct rcstr) includes space for the NUL */ - rcs = malloc(sizeof(struct rcstr) + len); + rcs = malloc(sizeof(struct rcstr) + len + 1); if (rcs == NULL) return NULL; diff -Nru sudo-1.9.13p3/lib/util/realpath.c sudo-1.9.14p2/lib/util/realpath.c --- sudo-1.9.13p3/lib/util/realpath.c 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/util/realpath.c 2023-07-15 15:37:23.000000000 +0000 @@ -0,0 +1,198 @@ +/* + * Copyright (c) 1989, 1991, 1993, 1995 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Jan-Simon Pendry. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University 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 REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)getcwd.c 8.5 (Berkeley) 2/7/95 + */ + +#include + +#ifndef HAVE_REALPATH + +#include +#include + +#include +#include +#include +#include + +/* + * char *realpath(const char *path, char *resolved); + * + * Find the real name of path, by removing all ".", ".." and symlink + * components. Returns (resolved) on success, or (NULL) on failure, + * in which case the path which caused trouble is left in (resolved). + */ +char * +sudo_realpath(const char *path, char *resolved) +{ + struct stat sb; + int idx = 0, nlnk = 0; + const char *q; + char *p, wbuf[2][PATH_MAX], *fres = NULL; + size_t len; + ssize_t n; + + if (path == NULL) { + errno = EINVAL; + return NULL; + } + + if (resolved == NULL) { + fres = resolved = malloc(PATH_MAX); + if (resolved == NULL) + return NULL; + } + + + /* + * Build real path one by one with paying an attention to ., + * .. and symbolic link. + */ + + /* + * `p' is where we'll put a new component with prepending + * a delimiter. + */ + p = resolved; + + if (*path == '\0') { + *p = '\0'; + errno = ENOENT; + goto out; + } + + /* If relative path, start from current working directory. */ + if (*path != '/') { + if (getcwd(resolved, PATH_MAX) == NULL) { + p[0] = '.'; + p[1] = '\0'; + goto out; + } + len = strlen(resolved); + if (len > 1) + p += len; + } + +loop: + /* Skip any slash. */ + while (*path == '/') + path++; + + if (*path == '\0') { + if (p == resolved) + *p++ = '/'; + *p = '\0'; + return resolved; + } + + /* Find the end of this component. */ + q = path; + do { + q++; + } while (*q != '/' && *q != '\0'); + + /* Test . or .. */ + if (path[0] == '.') { + if (q - path == 1) { + path = q; + goto loop; + } + if (path[1] == '.' && q - path == 2) { + /* Trim the last component. */ + if (p != resolved) + while (*--p != '/') + continue; + path = q; + goto loop; + } + } + + /* Append this component. */ + if (p - resolved + 1 + q - path + 1 > PATH_MAX) { + errno = ENAMETOOLONG; + if (p == resolved) + *p++ = '/'; + *p = '\0'; + goto out; + } + p[0] = '/'; + memcpy(&p[1], path, q - path); + p[1 + q - path] = '\0'; + + /* + * If this component is a symlink, toss it and prepend link + * target to unresolved path. + */ + if (lstat(resolved, &sb) == -1) + goto out; + + if (S_ISLNK(sb.st_mode)) { + if (nlnk++ >= SYMLOOP_MAX) { + errno = ELOOP; + goto out; + } + n = readlink(resolved, wbuf[idx], sizeof(wbuf[0]) - 1); + if (n < 0) + goto out; + if (n == 0) { + errno = ENOENT; + goto out; + } + + /* Append unresolved path to link target and switch to it. */ + if (n + (len = strlen(q)) + 1 > sizeof(wbuf[0])) { + errno = ENAMETOOLONG; + goto out; + } + memcpy(&wbuf[idx][n], q, len + 1); + path = wbuf[idx]; + idx ^= 1; + + /* If absolute symlink, start from root. */ + if (*path == '/') + p = resolved; + goto loop; + } + if (*q == '/' && !S_ISDIR(sb.st_mode)) { + errno = ENOTDIR; + goto out; + } + + /* Advance both resolved and unresolved path. */ + p += 1 + q - path; + path = q; + goto loop; +out: + free(fres); + return NULL; +} +#endif /* HAVE_REALPATH */ diff -Nru sudo-1.9.13p3/lib/util/regress/digest/digest_test.c sudo-1.9.14p2/lib/util/regress/digest/digest_test.c --- sudo-1.9.13p3/lib/util/regress/digest/digest_test.c 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/lib/util/regress/digest/digest_test.c 2023-07-15 15:37:23.000000000 +0000 @@ -0,0 +1,1179 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2023 Todd C. Miller + * + * 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 + +#include +#include +#include + +#define SUDO_ERROR_WRAP 0 + +#include "sudo_compat.h" +#include "sudo_digest.h" +#include "sudo_util.h" +#include "sudo_fatal.h" + +sudo_dso_public int main(int argc, char *argv[]); + +static int errors, ntests; +static const char hex[] = "0123456789abcdef"; + +struct test_vector { + size_t len; /* length in bytes */ + const char *str; /* input string (hex bytes) */ + const char *md; /* message digest */ +}; + +/* SHA224 short messages test vectors. */ +static struct test_vector sha224_vectors[] = { + { + 0, + "", + "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f" + }, { + 1, + "\x84", + "3cd36921df5d6963e73739cf4d20211e2d8877c19cff087ade9d0e3a" + }, { + 2, + "\x5c\x7b", + "daff9bce685eb831f97fc1225b03c275a6c112e2d6e76f5faf7a36e6" + }, { + 3, + "\x51\xca\x3d", + "2c8959023515476e38388abb43599a29876b4b33d56adc06032de3a2" + }, { + 4, + "\x60\x84\x34\x7e", + "ae57c0a6d49739ba338adfa53bdae063e5c09122b77604780a8eeaa3" + }, { + 5, + "\x49\x3e\x14\x62\x3c", + "7f631f295e024e74552083245ca8f988a3fb65680ae97c3040d2e65c" + }, { + 6, + "\xd7\x29\xd8\xcd\x16\x31", + "342e8e6b23c1c6a54910631f098e08e836259c57e49c1b1d023d166d" + }, { + 7, + "\xcb\xf2\x06\x1e\x10\xfa\xa5", + "3aa702b1b66dc57d7aec3ccdbdfbd88592d7520f843ba5d0fa481168" + }, { + 8, + "\x5f\x77\xb3\x66\x48\x23\xc3\x3e", + "bdf21ff325f754157ccf417f4855360a72e8fd117d28c8fe7da3ea38" + }, { + 9, + "\x10\x71\x3b\x89\x4d\xe4\xa7\x34\xc0", + "03842600c86f5cd60c3a2147a067cb962a05303c3488b05cb45327bd" + }, { + 10, + "\x00\x64\x70\xd5\x7d\xad\x98\x93\xdc\x03", + "c90026cda5ad24115059c62ae9add57793ade445d4742273288bbce7" + }, { + 11, + "\x6f\x29\xca\x27\x41\x90\x40\x07\x20\xbb\xa2", + "ac53157947aa4b2a19089182382a4363d182dd8e4ca79cd8571390be" + }, { + 12, + "\x17\xe8\x55\x61\x76\xfc\xca\x2a\xdd\xbd\xde\x29", + "cc6ad0488db0222066f740557b5758a19b30372b302332295d8c3aff" + }, { + 13, + "\xdb\xf1\x63\x60\x1d\xb9\xa1\x22\xa4\x02\x68\x24\xde", + "9849845f4e47e1ece9a1c1e01a0d896ffea61c6c8894a75a11ce5f49" + }, { + 14, + "\x5e\x1e\xf2\xad\x86\xce\xaf\x54\x39\xfe\x87\xd2\xec\x9b", + "223c5d5d4a0116b32cea044f9af0fe44babea1c5ab201502591bcd5f" + }, { + 15, + "\x65\xf3\xb9\x86\x6f\xb8\x00\x2b\x53\xcf\xaf\x80\x6f\x70\x2f", + "b1e0806a218d593821fde8e9eacc44ab5287c32209a94f011ab66b75" + }, { + 16, + "\xb7\x76\x70\x8f\xfb\x91\xb3\x51\x5a\xc4\x65\x98\xab\x9f\xa7\x96", + "427311b1d7ab2488791c4deeb4251d783fe5f9806bfdfb5188c5443d" + }, { + 17, + "\xa4\xbc\x10\xb1\xa6\x2c\x96\xd4\x59\xfb\xaf\x3a\x5a\xa3\xfa\xce\x73", + "d7e6634723ac25cb1879bdb1508da05313530419013fe255967a39e1" + }, { + 18, + "\x9e\x8f\x3c\x66\x45\xc1\x74\x9b\x55\xc5\x0d\x20\x18\xce\x40\xdc\x24\x27", + "2f5a583bf588c8988a572d128a95bea5ef1b66780a7d4be9c29efc31" + }, { + 19, + "\x2d\xb6\xd2\x07\xc0\xb7\xd9\x11\x7f\x24\xd7\x8e\xe5\x9a\xbf\x2f\x31\x69\x78", + "35681fce28307cae19522c23cbd4a77969347f7d8ee4a3088ba90ada" + }, { + 20, + "\x3d\xf5\xe7\xf3\x99\xf6\xdd\x61\xa1\x2a\x9d\x4e\x94\x64\xfc\x49\x97\xc1\xf3\x7b", + "a3e68076e30751085a843a6cbfbf0f3dee63d9c4219c914372e50b28" + }, { + 21, + "\x65\x78\x1d\x01\x8f\x27\xca\x0c\x72\xa9\xfa\x9a\xb4\x64\x8e\xd3\x69\x64\x6d\xd3\xce", + "d15ef0d872d02da6427b8d0349dea2f204e67133b7365b4b150efc3c" + }, { + 22, + "\xaf\x48\xee\xdd\xd9\x3f\xee\x69\xd1\xbd\x7d\xe4\x28\xa6\x39\x86\x01\x1d\x10\x94\x5e\xaf", + "b89d428ee42e397cf11029ecbb27baddd036c8938f51c8ab56b875ac" + }, { + 23, + "\xdf\x2b\xf0\xd5\xf9\xc9\x94\xac\x69\xd7\x8b\xaa\x0d\x51\x2e\xce\xb7\x4d\x8a\x04\x75\x31\xc1", + "db8e1ce68c8c6b84d6db755c2b8bf54f3c4b081a881efcddaf303294" + }, { + 24, + "\x48\xd2\xf2\x09\x55\xea\x2d\x13\x43\x3c\x20\xbc\x04\x04\xeb\x2e\x6a\xd7\x9e\xd2\x8f\x7c\xb4\xc0", + "3617cc3179f8b59adce181eebeed5e2763f62650949224a67e53694b" + }, { + 25, + "\x21\x8f\x74\xa4\x2d\x3a\x47\xef\x3b\x80\x66\x01\xfb\xa0\x24\xb0\x78\xcb\xff\x4e\x4b\x85\x77\x2e\x0e", + "b5f40b95dcc363b97e9d00b67c5d7c37f17ab563297d2d67a4df20c9" + }, { + 26, + "\xef\x55\xb1\xe7\x97\x00\x0b\x04\xfc\xdb\x9b\x30\x21\xb0\x93\x27\xe3\xb4\xe2\x69\xd2\x0c\xab\xdf\x41\x8f", + "827b223d51240c2e3271c534c19c5637b6fe10083e85bcf06761ef21" + }, { + 27, + "\x96\xdf\x43\x87\xdc\x2c\x40\x29\x70\x43\xbe\xa3\x64\x83\xf6\x5e\x4e\xb1\xe0\x7e\x93\x35\x9c\xb7\xe6\x86\x10", + "98e430a63fcdedafc9419010f7f59a4d816a45b4f973beb62530ff8c" + }, { + 28, + "\x3e\xc0\xaa\x8d\x30\xd5\xed\x82\x5b\x77\xdc\x70\x95\xf4\x21\xb1\xe6\x08\x15\x87\x97\xa3\x77\xff\x8b\xed\x64\x1b", + "3108321eb7ff857f6aae69101b937f32a51ea279a6c14ba5232ac8c1" + }, { + 29, + "\x8b\x02\x39\x71\x20\x39\xf0\x77\xce\x32\x3b\x35\xf4\xe3\x06\x78\x7b\x9b\x35\x27\x00\x96\xe5\x77\x35\xcf\xf4\x5d\x84", + "a5c740d3ce46bb2e0a048488f2b0605c6d0ca0ea2f382d043d13db97" + }, { + 30, + "\x04\x4b\xe3\x01\x67\xa9\x75\x8c\x46\xc7\x27\x92\x1d\xc4\xeb\x4e\x0d\xcb\x96\x56\x23\x42\x3e\x6f\xdd\x44\xe7\xa4\xea\x52", + "6eb78313c743ea8769d8340f284dda6ded64a1db64392f21abb82c5c" + }, { + 31, + "\x57\xf6\x11\x8b\xac\xce\x47\xec\xc3\x1c\xe8\xb0\xc0\x83\xd3\xc9\x21\x9e\x0d\xbe\x9e\x4f\xbe\xa1\x54\x53\x7c\x41\x23\x1a\xcc", + "0dbb53c866d63af44c222c76c825df0e379dcedfb958db03b6fd29a5" + }, { + 32, + "\xfe\x1f\x0f\xb0\x2c\x90\x11\xf4\xc8\xc5\x90\x59\x34\xed\x15\x13\x67\x71\x73\x7c\xe3\x1c\x58\x59\xe6\x7f\x23\x5f\xe5\x94\xf5\xf6", + "bbeaacc632c2a3db2a9b47f157ab54aa27776c6e74cf0bcaa91b06d5" + }, { + 33, + "\x14\xfb\x01\xae\x9d\x60\x15\xec\xb3\xe5\x6d\x6e\xcd\xfa\x4b\xc0\x53\x31\x86\xad\xf8\x45\x7f\x5e\x4a\x5c\x57\xc6\x87\x89\x5f\x3d\xb3", + "178272c7d7cc71b15074c27e3b7997d4a3ba99626986a1a16cf30030" + }, { + 34, + "\xff\x6c\x49\x71\x2f\x04\x4f\x40\x63\xc1\x41\x25\xc0\xcd\xfb\xa1\x8e\xd8\xb7\x13\x84\x53\x76\x8a\x45\xdf\xa2\xd8\x2a\x05\xf1\xe8\x42\x27", + "403284c888a7280bc8bfc25f0c34182cd378306a21a1404d4e1c40cf" + }, { + 35, + "\xf9\x00\xbd\x7e\x01\x17\x24\x7f\x97\xc8\xfc\x7a\x66\x5c\x76\xa3\x5f\x57\x1c\x33\x66\x57\x1d\x6c\x4a\x3e\xe5\xd7\xfb\x93\xf1\xd1\xf7\x26\xe2", + "48235b9820d66d8885faabf6a9ede63ba2a21b6177e987a33242373e" + }, { + 36, + "\x42\xd3\x81\x88\xac\x49\x44\x0c\xfe\xfb\x77\xdb\x97\x5e\x08\x3e\x6b\x22\x34\x8c\x4c\x67\xf0\xf8\x69\x2e\x88\xad\x14\x0d\x86\x1d\xc8\x28\xd5\x95", + "615344f890e5bcf71b5efe39de1fc942ba1fe30dd9e9146adb6a41bf" + }, { + 37, + "\x74\xfd\xd7\xd9\x58\xb8\xae\x7c\x2c\x3c\x5c\xff\x42\x66\xdf\xb2\xb3\xb8\x42\xc9\xf5\x9e\xcb\xbc\xaf\xf5\x75\xed\xcb\xcd\xa0\x8c\xcd\x6e\x08\xb7\x64", + "66d7d6c54fc7775a0ba845ba3e11719fa535b9289f20b098c5f7a342" + }, { + 38, + "\x93\x44\x16\xdd\x05\x81\xe2\x2f\x2b\xfb\xec\xe7\xbb\x64\xaf\xe8\x20\x45\x1f\xa2\x13\x42\xdf\x7e\x6f\x9f\xb3\x7c\x41\x03\x38\x1a\x1f\x7c\xd3\x79\xbc\xc4", + "fae8f1aa22def4dbaa814c5b0babdec43394951792c937050d2963a6" + }, { + 39, + "\x10\x24\x01\xc8\x4a\x71\x6a\xe7\x25\x79\xc6\xae\x79\xc3\x59\xea\x30\x9f\xfd\x95\xab\xff\xae\x4c\x61\x88\x4c\x03\xc9\xe9\x9d\xf7\x7b\x6c\x92\xe4\x92\xca\xcb", + "8f34812d57a16ef8a51ad987660c5f8623e0fa9d89846e28d46d14d9" + }, { + 40, + "\x79\xbc\x8f\xb6\x0f\x85\xd1\x5a\x23\x86\x56\x6e\x3e\x73\x14\xdf\x28\x45\x33\x08\x5a\xdd\x1c\x7b\xb6\xea\xd3\xff\x76\x0c\x86\xd5\x63\x3a\x66\x40\x47\x61\xb5\x44", + "65c54014cfa30f0bc27d1c6efa96ae8481f4c2505bff272956eab0df" + }, { + 41, + "\xdb\x31\x21\xea\x71\x29\x49\x83\xb1\x85\x20\x7a\x9d\x8d\xe3\xe4\x84\xa6\x6c\x04\x31\xbf\x07\xc9\x62\xeb\x82\x97\x7c\x4f\x83\x4b\x7c\x3f\x1e\x79\x31\xa4\xa7\xf7\xa9", + "9316d2f021c2913d63a7e66924c87c161c3cfde0ea7ba07f54772862" + }, { + 42, + "\x0d\xd5\x1a\xa6\x60\xc5\xcb\x4b\x7f\x78\xc4\x68\x52\xc1\xdb\x87\x07\xab\x45\x1c\x13\x67\xb6\x18\x73\x88\xc8\xbb\x38\x73\xa1\xaa\x42\x10\xd0\x41\x4c\xc6\x79\x2a\x29\xa7", + "31989e7a62a5132a5070d77250d8904bb82d457dc63469d06b50185e" + }, { + 43, + "\x48\x7f\xd2\xe5\xb6\x94\xb7\x07\x1d\x37\x89\xa2\x58\xa5\x1e\x86\x04\xdc\x0d\x3e\x8f\x5d\x62\xf3\x91\x31\x96\x8e\x60\x2a\xbe\x1d\xdf\x6b\x02\x78\x96\x2a\x51\x24\x08\xb5\x53", + "e798683438284626d710877d9eea3a0e02f349fc43acb7f9f8f9e81c" + }, { + 44, + "\x11\x18\x3b\xde\xbf\xef\x58\xe4\xda\x5b\x1c\xb7\x3b\xe0\xd3\x0b\x20\xda\x30\x4d\x86\x59\xd9\x21\xda\x2e\x27\x0f\xd1\x46\x26\x79\x95\x37\xe4\xd1\x21\x19\xe8\x09\xee\x97\x00\x4a", + "96870657d6cb668be3995aa8bd31df77840d1d1915d72482e83b6b2c" + }, { + 45, + "\xa2\x39\xde\x5c\x8e\x26\x44\xe8\xf0\x30\xd9\x4d\x98\xf1\xa3\x06\x64\xe6\xfd\x96\x1d\xc2\x97\x7a\x9c\x08\xbe\x5c\x31\xd8\xde\x89\x45\x09\x45\xa5\x3d\x79\x29\x9e\xa2\xa1\xed\xde\x7f", + "e99743d4fd26c8800c36a67b6762247c29da6b62794123c59de06dc0" + }, { + 46, + "\x91\x7c\x45\x77\xaa\x6b\x0f\x9d\xf4\x99\x99\xfc\x1c\x95\x8c\xb0\x9b\x7f\xd5\xfc\x80\xbe\x94\x96\x70\xf0\x35\x45\xeb\x27\xdc\xae\xd0\x52\x07\x6b\x24\xf9\x6f\x5e\x0f\x2e\x2f\x45\x27\xc0", + "7ecd693d4d9cf43929464698efa0bac33c2e1424f816edc769260978" + }, { + 47, + "\xc3\xf1\xe7\x35\xa6\x74\x1a\xa4\x81\xad\x57\x7a\x98\xdb\xac\x1f\x03\xcc\x80\xea\x0d\xae\x1b\x94\xdb\x23\x69\xed\x4e\x93\xfa\xcd\x29\xc6\x4e\x4e\x77\xb2\x50\x38\x27\x91\x20\xbd\xfa\x37\x15", + "86f0d89d8e14fd8b6606412d71a7a54a347b304ea5d49c208f2266ab" + }, { + 48, + "\xde\x4f\xbf\xd5\x53\xcd\xf3\x70\x19\xf2\x5a\xfa\x82\xdc\x6b\x99\x70\xf4\xbb\x1e\xbb\xc3\x7f\x80\xd3\x08\x4c\x88\xa7\x07\x22\xcd\xc5\x23\xa9\xe3\xc2\xaf\xba\xd0\xdc\x02\x21\xbf\xde\xc9\xa2\xf9", + "4c5262acb4a2a44eaa9bc6757024fb202ef4d5a7a16fa37252a422b5" + }, { + 49, + "\xdb\x2e\x2e\xb6\x36\x61\x0c\xf4\x2e\x9b\x33\x43\x3a\xcc\xe1\xb3\xb9\x25\x94\x9f\x29\x7d\xd8\x31\x99\xf4\x5d\x28\x61\xd6\x4c\xd9\x10\xc2\xdb\x74\xa6\x0b\x20\x89\x04\x5e\x22\xcb\xa0\xa5\x36\x13\x7d", + "16bf4e45bcdc60447c68dcb30e6b08f55ce9f4124a29cf1f9a9d065d" + }, { + 50, + "\xa8\xe7\x29\xd3\x36\xd5\xd6\xac\x50\xe1\xe2\x2f\x0b\x19\x3b\x66\xe2\x60\x42\xfc\x64\x59\x21\x41\x29\x87\x5e\x74\x0a\xb2\xb1\x42\x91\x8c\x13\x8a\xaf\x94\x18\x63\xad\x3b\x7e\x60\x65\x45\x06\x13\xb2\x73", + "452bf2e5ebfc4e451cc434bc09e2a10032eed0b7627cf55e7e5ed0e2" + }, { + 51, + "\xd0\x53\x17\xd4\xb5\x35\xf9\xd1\x0f\x73\x9d\x0c\x2d\xed\xf3\xff\xb0\x90\xc1\xad\x9d\x20\x50\x89\xb1\x34\x66\x93\xf5\x82\x73\xc4\x92\x5c\x0f\xac\xe5\x7b\xa4\x5a\xd6\xfc\x68\x7c\x66\xa8\x8f\xc7\x88\x78\xbe", + "4f03c439e097b51b00e314f675937c4d911505859fb7ab16adc65e44" + }, { + 52, + "\x26\xbb\x4e\xd4\xf0\x42\x4c\x60\xfe\x42\x12\xff\x8c\x95\x5e\x89\xe2\xf5\x53\xa7\xd7\x70\x1b\xe5\x94\x16\xd2\x08\x9a\xf5\x9f\xa1\x07\x47\x24\xe2\x14\xe9\x19\xb1\xe3\x0f\x33\xfb\x78\x37\x4b\x4b\x05\x5b\xbc\x9b", + "e7c899e27009d4dc77c2d300f191b757e52c9e7eac4b023bfab2b52a" + }, { + 53, + "\xf0\x15\xec\x83\x94\x4f\x03\x29\x24\x63\xc4\x34\x5f\xdb\x1c\x26\xd1\xea\x07\x64\x5f\xac\xbc\x95\x20\xae\x24\x4b\x6e\xb1\x91\xe5\x3d\xab\xad\xb4\xac\x0f\xb1\x5c\xda\x4e\xd7\x7d\xfb\x9e\x11\x93\xab\xfa\xfb\x1b\x81", + "459e40b3fbd612912f0217c60099379ce077cd02505871b0c9c14e7a" + }, { + 54, + "\x07\x86\x70\x6f\x68\x0c\x27\xb7\x92\xd0\x54\xfa\xa6\x3f\x49\x9a\x8e\x6b\x5d\xdb\x90\x50\x29\x46\x23\x5b\xf7\x4c\x02\x2d\x77\x2c\x80\x9c\xb4\x17\x1b\xfa\x47\x91\x53\x9a\xca\x1a\xbd\x91\x90\x0e\x53\xba\x93\xca\x0e\xfd", + "fadebab7c3d0fb8e97e429b79083087735e4ab385a789521260ef3ad" + }, { + 55, + "\x44\x5e\x86\x98\xee\xb8\xac\xcb\xaa\xc4\xff\xa7\xd9\x34\xff\xfd\x16\x01\x4a\x43\x0e\xf7\x0f\x3a\x91\x74\xc6\xcf\xe9\x6d\x1e\x3f\x6a\xb1\x37\x7f\x4a\x72\x12\xdb\xb3\x01\x46\xdd\x17\xd9\xf4\x70\xc4\xdf\xfc\x45\xb8\xe8\x71", + "4c7ae028c0fe61f2a9cada61fae30685b77f04c6442576e912af9fa6" + }, { + 56, + "\x52\x83\x9f\x2f\x08\x53\xa3\x0d\xf1\x4e\xc8\x97\xa1\x91\x4c\x68\x5c\x1a\xc2\x14\x70\xd0\x06\x54\xc8\xc3\x76\x63\xbf\xb6\x5f\xa7\x32\xdb\xb6\x94\xd9\xdd\x09\xce\xd7\x23\xb4\x8d\x8f\x54\x58\x46\xba\x16\x89\x88\xb6\x1c\xc7\x24", + "2f755a57674b49d5c25cb37348f35b6fd2de2552c749f2645ba63d20" + }, { + 57, + "\x5f\xe8\xc2\x07\x2d\x89\x00\x28\x7c\xca\xf0\x7f\x3f\x66\xb0\xc2\x2a\xcd\x3e\x0b\xb9\x1d\x95\x73\x75\x4e\x19\xe3\x73\xac\x35\x27\x1d\x8b\x43\x44\x34\x36\xac\x0c\x16\x28\x50\xef\x3d\x7f\x28\x14\x09\xad\x29\xa9\xbf\x71\x6c\x77\xd1", + "42909757f6e229f69f04cc7a863c4e70e48c7c3575057b455c959775" + }, { + 58, + "\xe8\x06\x4d\x83\xf3\xd6\x43\xaf\x87\x18\xc8\x7e\x3c\xcd\x6a\x97\x33\x68\x5e\xac\x61\xd5\x72\xa2\x2a\xb9\x43\xf2\x32\xfc\xb0\x4f\x70\x85\x8e\x89\x84\x44\x9d\xb1\x4a\x76\xbb\x7e\xaf\x24\x58\xef\xc3\xed\x2a\x32\x10\x06\x22\xc5\x2b\x7f", + "1a1d8ed54cb45c97bc970754b43eb93d9eabde4c7b07f76ad82d8ede" + }, { + 59, + "\x87\xc9\xa5\x17\xe2\x8d\x1b\xb5\x4a\xd2\x0f\xca\x76\x46\x0e\xfd\x89\x4d\x77\x86\xe6\x8e\xe8\xd7\x46\xb2\xf6\x82\x08\x68\x21\x57\xc8\xad\x06\xcc\x32\x4a\xd7\xa3\x18\x9e\x09\xc6\xc3\x9d\x4c\x76\x87\x19\xc0\xa4\x9a\x41\x66\x9f\x27\x67\xd5", + "605977cf87b9b309bbddaaa64e528ace66b04df9f72c0e7ec88be1da" + }, { + 60, + "\x59\xfd\xac\x3b\x6b\x32\x03\x92\x91\x80\x1c\x7d\x6f\x46\xed\xe8\xd2\x6d\xc5\xb7\xa1\x92\xe0\x07\x11\x67\x39\xb6\x17\x56\x9f\x25\x23\x68\x0b\x3c\x0b\x66\x31\xaf\x45\x3e\x55\x80\x5a\xa7\x60\xc6\x97\x08\x33\xac\x06\x96\x3b\xbc\x9d\xbd\x45\x5e", + "e9f0cb1dc8337e906385892f2348a8ba4412318ecad9b96e3711531f" + }, { + 61, + "\x30\x35\x0a\x4d\xf0\xb5\x8f\xf4\x9c\x0f\xa0\x9e\x42\x6f\xcd\x70\x07\xb2\x90\xc7\x60\xc8\x25\xc1\x85\x5d\x9b\x00\x23\xb8\x2c\xaa\x51\xe3\xca\xb4\xc6\x0c\xfa\x61\x49\x2b\xe5\x05\x68\xe5\xac\x0f\x6d\xb0\xfd\x46\x8e\x39\xe4\x53\x64\x03\xe3\x80\x9f", + "776cc6636c02408fbf65ace73ae80017108b917c16c5a912fd860241" + }, { + 62, + "\xef\x79\x7a\x0d\x43\xc3\x0b\x4f\xe1\x01\x4b\xdb\x94\x20\x87\x9c\x2f\xf8\x45\xd2\x7e\x73\xd5\x5a\x7d\xf2\x29\x30\xc8\xec\xe7\x32\x53\xd8\xbb\x26\x5b\x4e\xf2\xff\x9c\x69\x45\x5c\xc5\x6f\xf2\x52\x29\xb4\x12\x6b\xb7\xbb\x26\xee\x2c\x9f\xf3\x61\x87\xb1", + "f5b9ffb102affac352a4a535a00f89b06c268cf4881d712668906025" + }, { + 63, + "\x71\x69\x44\xde\x41\x71\x0c\x29\xb6\x59\xbe\x10\x48\x0b\xb2\x5a\x35\x1a\x39\xe5\x77\xee\x30\xe8\xf4\x22\xd5\x7c\xf6\x2a\xd9\x5b\xda\x39\xb6\xe7\x0c\x61\x42\x6e\x33\xfd\x84\xac\xa8\x4c\xc7\x91\x2d\x5e\xee\x45\xdc\x34\x07\x6a\x5d\x23\x23\xa1\x5c\x79\x64", + "61645ac748db567ac862796b8d06a47afebfa2e1783d5c5f3bcd81e2" + }, { + 64, + "\xa3\x31\x0b\xa0\x64\xbe\x2e\x14\xad\x32\x27\x6e\x18\xcd\x03\x10\xc9\x33\xa6\xe6\x50\xc3\xc7\x54\xd0\x24\x3c\x6c\x61\x20\x78\x65\xb4\xb6\x52\x48\xf6\x6a\x08\xed\xf6\xe0\x83\x26\x89\xa9\xdc\x3a\x2e\x5d\x20\x95\xee\xea\x50\xbd\x86\x2b\xac\x88\xc8\xbd\x31\x8d", + "b2a5586d9cbf0baa999157b4af06d88ae08d7c9faab4bc1a96829d65" + }, { + 0, + NULL, + NULL + } +}; + +/* SHA256 short messages test vectors. */ +static struct test_vector sha256_vectors[] = { + { + 0, + "", + "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, { + 1, + "\xd3", + "28969cdfa74a12c82f3bad960b0b000aca2ac329deea5c2328ebc6f2ba9802c1" + }, { + 2, + "\x11\xaf", + "5ca7133fa735326081558ac312c620eeca9970d1e70a4b95533d956f072d1f98" + }, { + 3, + "\xb4\x19\x0e", + "dff2e73091f6c05e528896c4c831b9448653dc2ff043528f6769437bc7b975c2" + }, { + 4, + "\x74\xba\x25\x21", + "b16aa56be3880d18cd41e68384cf1ec8c17680c45a02b1575dc1518923ae8b0e" + }, { + 5, + "\xc2\x99\x20\x96\x82", + "f0887fe961c9cd3beab957e8222494abb969b1ce4c6557976df8b0f6d20e9166" + }, { + 6, + "\xe1\xdc\x72\x4d\x56\x21", + "eca0a060b489636225b4fa64d267dabbe44273067ac679f20820bddc6b6a90ac" + }, { + 7, + "\x06\xe0\x76\xf5\xa4\x42\xd5", + "3fd877e27450e6bbd5d74bb82f9870c64c66e109418baa8e6bbcff355e287926" + }, { + 8, + "\x57\x38\xc9\x29\xc4\xf4\xcc\xb6", + "963bb88f27f512777aab6c8b1a02c70ec0ad651d428f870036e1917120fb48bf" + }, { + 9, + "\x33\x34\xc5\x80\x75\xd3\xf4\x13\x9e", + "078da3d77ed43bd3037a433fd0341855023793f9afd08b4b08ea1e5597ceef20" + }, { + 10, + "\x74\xcb\x93\x81\xd8\x9f\x5a\xa7\x33\x68", + "73d6fad1caaa75b43b21733561fd3958bdc555194a037c2addec19dc2d7a52bd" + }, { + 11, + "\x76\xed\x24\xa0\xf4\x0a\x41\x22\x1e\xbf\xcf", + "044cef802901932e46dc46b2545e6c99c0fc323a0ed99b081bda4216857f38ac" + }, { + 12, + "\x9b\xaf\x69\xcb\xa3\x17\xf4\x22\xfe\x26\xa9\xa0", + "fe56287cd657e4afc50dba7a3a54c2a6324b886becdcd1fae473b769e551a09b" + }, { + 13, + "\x68\x51\x1c\xdb\x2d\xbb\xf3\x53\x0d\x7f\xb6\x1c\xbc", + "af53430466715e99a602fc9f5945719b04dd24267e6a98471f7a7869bd3b4313" + }, { + 14, + "\xaf\x39\x7a\x8b\x8d\xd7\x3a\xb7\x02\xce\x8e\x53\xaa\x9f", + "d189498a3463b18e846b8ab1b41583b0b7efc789dad8a7fb885bbf8fb5b45c5c" + }, { + 15, + "\x29\x4a\xf4\x80\x2e\x5e\x92\x5e\xb1\xc6\xcc\x9c\x72\x4f\x09", + "dcbaf335360de853b9cddfdafb90fa75567d0d3d58af8db9d764113aef570125" + }, { + 16, + "\x0a\x27\x84\x7c\xdc\x98\xbd\x6f\x62\x22\x0b\x04\x6e\xdd\x76\x2b", + "80c25ec1600587e7f28b18b1b18e3cdc89928e39cab3bc25e4d4a4c139bcedc4" + }, { + 17, + "\x1b\x50\x3f\xb9\xa7\x3b\x16\xad\xa3\xfc\xf1\x04\x26\x23\xae\x76\x10", + "d5c30315f72ed05fe519a1bf75ab5fd0ffec5ac1acb0daf66b6b769598594509" + }, { + 18, + "\x59\xeb\x45\xbb\xbe\xb0\x54\xb0\xb9\x73\x34\xd5\x35\x80\xce\x03\xf6\x99", + "32c38c54189f2357e96bd77eb00c2b9c341ebebacc2945f97804f59a93238288" + }, { + 19, + "\x58\xe5\xa3\x25\x9c\xb0\xb6\xd1\x2c\x83\xf7\x23\x37\x9e\x35\xfd\x29\x8b\x60", + "9b5b37816de8fcdf3ec10b745428708df8f391c550ea6746b2cafe019c2b6ace" + }, { + 20, + "\xc1\xef\x39\xce\xe5\x8e\x78\xf6\xfc\xdc\x12\xe0\x58\xb7\xf9\x02\xac\xd1\xa9\x3b", + "6dd52b0d8b48cc8146cebd0216fbf5f6ef7eeafc0ff2ff9d1422d6345555a142" + }, { + 21, + "\x9c\xab\x7d\x7d\xca\xec\x98\xcb\x3a\xc6\xc6\x4d\xd5\xd4\x47\x0d\x0b\x10\x3a\x81\x0c", + "44d34809fc60d1fcafa7f37b794d1d3a765dd0d23194ebbe340f013f0c39b613" + }, { + 22, + "\xea\x15\x7c\x02\xeb\xaf\x1b\x22\xde\x22\x1b\x53\xf2\x35\x39\x36\xd2\x35\x9d\x1e\x1c\x97", + "9df5c16a3f580406f07d96149303d8c408869b32053b726cf3defd241e484957" + }, { + 23, + "\xda\x99\x9b\xc1\xf9\xc7\xac\xff\x32\x82\x8a\x73\xe6\x72\xd0\xa4\x92\xf6\xee\x89\x5c\x68\x67", + "672b54e43f41ee77584bdf8bf854d97b6252c918f7ea2d26bc4097ea53a88f10" + }, { + 24, + "\x47\x99\x13\x01\x15\x6d\x1d\x97\x7c\x03\x38\xef\xbc\xad\x41\x00\x41\x33\xae\xfb\xca\x6b\xcf\x7e", + "feeb4b2b59fec8fdb1e55194a493d8c871757b5723675e93d3ac034b380b7fc9" + }, { + 25, + "\x2e\x7e\xa8\x4d\xa4\xbc\x4d\x7c\xfb\x46\x3e\x3f\x2c\x86\x47\x05\x7a\xff\xf3\xfb\xec\xec\xa1\xd2\x00", + "76e3acbc718836f2df8ad2d0d2d76f0cfa5fea0986be918f10bcee730df441b9" + }, { + 26, + "\x47\xc7\x70\xeb\x45\x49\xb6\xef\xf6\x38\x1d\x62\xe9\xbe\xb4\x64\xcd\x98\xd3\x41\xcc\x1c\x09\x98\x1a\x7a", + "6733809c73e53666c735b3bd3daf87ebc77c72756150a616a194108d71231272" + }, { + 27, + "\xac\x4c\x26\xd8\xb4\x3b\x85\x79\xd8\xf6\x1c\x98\x07\x02\x6e\x83\xe9\xb5\x86\xe1\x15\x9b\xd4\x3b\x85\x19\x37", + "0e6e3c143c3a5f7f38505ed6adc9b48c18edf6dedf11635f6e8f9ac73c39fe9e" + }, { + 28, + "\x07\x77\xfc\x1e\x1c\xa4\x73\x04\xc2\xe2\x65\x69\x28\x38\x10\x9e\x26\xaa\xb9\xe5\xc4\xae\x4e\x86\x00\xdf\x4b\x1f", + "ffb4fc03e054f8ecbc31470fc023bedcd4a406b9dd56c71da1b660dcc4842c65" + }, { + 29, + "\x1a\x57\x25\x1c\x43\x1d\x4e\x6c\x2e\x06\xd6\x52\x46\xa2\x96\x91\x50\x71\xa5\x31\x42\x5e\xcf\x25\x59\x89\x42\x2a\x66", + "c644612cd326b38b1c6813b1daded34448805aef317c35f548dfb4a0d74b8106" + }, { + 30, + "\x9b\x24\x5f\xda\xd9\xba\xeb\x89\x0d\x9c\x0d\x0e\xff\x81\x6e\xfb\x4c\xa1\x38\x61\x0b\xc7\xd7\x8c\xb1\xa8\x01\xed\x32\x73", + "c0e29eeeb0d3a7707947e623cdc7d1899adc70dd7861205ea5e5813954fb7957" + }, { + 31, + "\x95\xa7\x65\x80\x9c\xaf\x30\xad\xa9\x0a\xd6\xd6\x1c\x2b\x4b\x30\x25\x0d\xf0\xa7\xce\x23\xb7\x75\x3c\x91\x87\xf4\x31\x9c\xe2", + "a4139b74b102cf1e2fce229a6cd84c87501f50afa4c80feacf7d8cf5ed94f042" + }, { + 32, + "\x09\xfc\x1a\xcc\xc2\x30\xa2\x05\xe4\xa2\x08\xe6\x4a\x8f\x20\x42\x91\xf5\x81\xa1\x27\x56\x39\x2d\xa4\xb8\xc0\xcf\x5e\xf0\x2b\x95", + "4f44c1c7fbebb6f9601829f3897bfd650c56fa07844be76489076356ac1886a4" + }, { + 33, + "\x05\x46\xf7\xb8\x68\x2b\x5b\x95\xfd\x32\x38\x5f\xaf\x25\x85\x4c\xb3\xf7\xb4\x0c\xc8\xfa\x22\x9f\xbd\x52\xb1\x69\x34\xaa\xb3\x88\xa7", + "b31ad3cd02b10db282b3576c059b746fb24ca6f09fef69402dc90ece7421cbb7" + }, { + 34, + "\xb1\x2d\xb4\xa1\x02\x55\x29\xb3\xb7\xb1\xe4\x5c\x6d\xbc\x7b\xaa\x88\x97\xa0\x57\x6e\x66\xf6\x4b\xf3\xf8\x23\x61\x13\xa6\x27\x6e\xe7\x7d", + "1c38bf6bbfd32292d67d1d651fd9d5b623b6ec1e854406223f51d0df46968712" + }, { + 35, + "\xe6\x8c\xb6\xd8\xc1\x86\x6c\x0a\x71\xe7\x31\x3f\x83\xdc\x11\xa5\x80\x9c\xf5\xcf\xbe\xed\x1a\x58\x7c\xe9\xc2\xc9\x2e\x02\x2a\xbc\x16\x44\xbb", + "c2684c0dbb85c232b6da4fb5147dd0624429ec7e657991edd95eda37a587269e" + }, { + 36, + "\x4e\x3d\x8a\xc3\x6d\x61\xd9\xe5\x14\x80\x83\x11\x55\xb2\x53\xb3\x79\x69\xfe\x7e\xf4\x9d\xb3\xb3\x99\x26\xf3\xa0\x0b\x69\xa3\x67\x74\x36\x60\x00", + "bf9d5e5b5393053f055b380baed7e792ae85ad37c0ada5fd4519542ccc461cf3" + }, { + 37, + "\x03\xb2\x64\xbe\x51\xe4\xb9\x41\x86\x4f\x9b\x70\xb4\xc9\x58\xf5\x35\x5a\xac\x29\x4b\x4b\x87\xcb\x03\x7f\x11\xf8\x5f\x07\xeb\x57\xb3\xf0\xb8\x95\x50", + "d1f8bd684001ac5a4b67bbf79f87de524d2da99ac014dec3e4187728f4557471" + }, { + 38, + "\xd0\xfe\xfd\x96\x78\x7c\x65\xff\xa7\xf9\x10\xd6\xd0\xad\xa6\x3d\x64\xd5\xc4\x67\x99\x60\xe7\xf0\x6a\xeb\x8c\x70\xdf\xef\x95\x4f\x8e\x39\xef\xdb\x62\x9b", + "49ba38db85c2796f85ffd57dd5ec337007414528ae33935b102d16a6b91ba6c1" + }, { + 39, + "\xb7\xc7\x9d\x7e\x5f\x1e\xec\xcd\xfe\xdf\x0e\x7b\xf4\x3e\x73\x0d\x44\x7e\x60\x7d\x8d\x14\x89\x82\x3d\x09\xe1\x12\x01\xa0\xb1\x25\x80\x39\xe7\xbd\x48\x75\xb1", + "725e6f8d888ebaf908b7692259ab8839c3248edd22ca115bb13e025808654700" + }, { + 40, + "\x64\xcd\x36\x3e\xcc\xe0\x5f\xdf\xda\x24\x86\xd0\x11\xa3\xdb\x95\xb5\x20\x6a\x19\xd3\x05\x40\x46\x81\x9d\xd0\xd3\x67\x83\x95\x5d\x7e\x5b\xf8\xba\x18\xbf\x73\x8a", + "32caef024f84e97c30b4a7b9d04b678b3d8a6eb2259dff5b7f7c011f090845f8" + }, { + 41, + "\x6a\xc6\xc6\x3d\x61\x8e\xaf\x00\xd9\x1c\x5e\x28\x07\xe8\x3c\x09\x39\x12\xb8\xe2\x02\xf7\x8e\x13\x97\x03\x49\x8a\x79\xc6\x06\x7f\x54\x49\x7c\x61\x27\xa2\x39\x10\xa6", + "4bb33e7c6916e08a9b3ed6bcef790aaaee0dcf2e7a01afb056182dea2dad7d63" + }, { + 42, + "\xd2\x68\x26\xdb\x9b\xae\xaa\x89\x26\x91\xb6\x89\x00\xb9\x61\x63\x20\x8e\x80\x6a\x1d\xa0\x77\x42\x9e\x45\x4f\xa0\x11\x84\x09\x51\xa0\x31\x32\x7e\x60\x5a\xb8\x2e\xcc\xe2", + "3ac7ac6bed82fdc8cd15b746f0ee7489158192c238f371c1883c9fe90b3e2831" + }, { + 43, + "\x3f\x7a\x05\x9b\x65\xd6\xcb\x02\x49\x20\x4a\xac\x10\xb9\xf1\xa4\xac\x9e\x58\x68\xad\xeb\xbe\x93\x5a\x9e\xb5\xb9\x01\x9e\x1c\x93\x8b\xfc\x4e\x5c\x53\x78\x99\x7a\x39\x47\xf2", + "bfce809534eefe871273964d32f091fe756c71a7f512ef5f2300bcd57f699e74" + }, { + 44, + "\x60\xff\xcb\x23\xd6\xb8\x8e\x48\x5b\x92\x0a\xf8\x1d\x10\x83\xf6\x29\x1d\x06\xac\x8c\xa3\xa9\x65\xb8\x59\x14\xbc\x2a\xdd\x40\x54\x4a\x02\x7f\xca\x93\x6b\xbd\xe8\xf3\x59\x05\x1c", + "1d26f3e04f89b4eaa9dbed9231bb051eef2e8311ad26fe53d0bf0b821eaf7567" + }, { + 45, + "\x9e\xcd\x07\xb6\x84\xbb\x9e\x0e\x66\x92\xe3\x20\xce\xc4\x51\x0c\xa7\x9f\xcd\xb3\xa2\x21\x2c\x26\xd9\x0d\xf6\x5d\xb3\x3e\x69\x2d\x07\x3c\xc1\x74\x84\x0d\xb7\x97\x50\x4e\x48\x2e\xef", + "0ffeb644a49e787ccc6970fe29705a4f4c2bfcfe7d19741c158333ff6982cc9c" + }, { + 46, + "\x9d\x64\xde\x71\x61\x89\x58\x84\xe7\xfa\x3d\x6e\x9e\xb9\x96\xe7\xeb\xe5\x11\xb0\x1f\xe1\x9c\xd4\xa6\xb3\x32\x2e\x80\xaa\xf5\x2b\xf6\x44\x7e\xd1\x85\x4e\x71\x00\x1f\x4d\x54\xf8\x93\x1d", + "d048ee1524014adf9a56e60a388277de194c694cc787fc5a1b554ea9f07abfdf" + }, { + 47, + "\xc4\xad\x3c\x5e\x78\xd9\x17\xec\xb0\xcb\xbc\xd1\xc4\x81\xfc\x2a\xaf\x23\x2f\x7e\x28\x97\x79\xf4\x0e\x50\x4c\xc3\x09\x66\x2e\xe9\x6f\xec\xbd\x20\x64\x7e\xf0\x0e\x46\x19\x9f\xbc\x48\x2f\x46", + "50dbf40066f8d270484ee2ef6632282dfa300a85a8530eceeb0e04275e1c1efd" + }, { + 48, + "\x4e\xef\x51\x07\x45\x9b\xdd\xf8\xf2\x4f\xc7\x65\x6f\xd4\x89\x6d\xa8\x71\x1d\xb5\x04\x00\xc0\x16\x48\x47\xf6\x92\xb8\x86\xce\x8d\x7f\x4d\x67\x39\x50\x90\xb3\x53\x4e\xfd\x7b\x0d\x29\x8d\xa3\x4b", + "7c5d14ed83dab875ac25ce7feed6ef837d58e79dc601fb3c1fca48d4464e8b83" + }, { + 49, + "\x04\x7d\x27\x58\xe7\xc2\xc9\x62\x3f\x9b\xdb\x93\xb6\x59\x7c\x5e\x84\xa0\xcd\x34\xe6\x10\x01\x4b\xcb\x25\xb4\x9e\xd0\x5c\x7e\x35\x6e\x98\xc7\xa6\x72\xc3\xdd\xdc\xae\xb8\x43\x17\xef\x61\x4d\x34\x2f", + "7d53eccd03da37bf58c1962a8f0f708a5c5c447f6a7e9e26137c169d5bdd82e4" + }, { + 50, + "\x3d\x83\xdf\x37\x17\x2c\x81\xaf\xd0\xde\x11\x51\x39\xfb\xf4\x39\x0c\x22\xe0\x98\xc5\xaf\x4c\x5a\xb4\x85\x24\x06\x51\x0b\xc0\xe6\xcf\x74\x17\x69\xf4\x44\x30\xc5\x27\x0f\xda\xe0\xcb\x84\x9d\x71\xcb\xab", + "99dc772e91ea02d9e421d552d61901016b9fd4ad2df4a8212c1ec5ba13893ab2" + }, { + 51, + "\x33\xfd\x9b\xc1\x7e\x2b\x27\x1f\xa0\x4c\x6b\x93\xc0\xbd\xea\xe9\x86\x54\xa7\x68\x2d\x31\xd9\xb4\xda\xb7\xe6\xf3\x2c\xd5\x8f\x2f\x14\x8a\x68\xfb\xe7\xa8\x8c\x5a\xb1\xd8\x8e\xdc\xcd\xde\xb3\x0a\xb2\x1e\x5e", + "cefdae1a3d75e792e8698d5e71f177cc761314e9ad5df9602c6e60ae65c4c267" + }, { + 52, + "\x77\xa8\x79\xcf\xa1\x1d\x7f\xca\xc7\xa8\x28\x2c\xc3\x8a\x43\xdc\xf3\x76\x43\xcc\x90\x98\x37\x21\x3b\xd6\xfd\x95\xd9\x56\xb2\x19\xa1\x40\x6c\xbe\x73\xc5\x2c\xd5\x6c\x60\x0e\x55\xb7\x5b\xc3\x7e\xa6\x96\x41\xbc", + "c99d64fa4dadd4bc8a389531c68b4590c6df0b9099c4d583bc00889fb7b98008" + }, { + 53, + "\x45\xa3\xe6\xb8\x65\x27\xf2\x0b\x45\x37\xf5\xaf\x96\xcf\xc5\xad\x87\x77\xa2\xdd\xe6\xcf\x75\x11\x88\x6c\x55\x90\xec\xe2\x4f\xc6\x1b\x22\x67\x39\xd2\x07\xda\xbf\xe3\x2b\xa6\xef\xd9\xff\x4c\xd5\xdb\x1b\xd5\xea\xd3", + "4d12a849047c6acd4b2eee6be35fa9051b02d21d50d419543008c1d82c427072" + }, { + 54, + "\x25\x36\x2a\x4b\x9d\x74\xbd\xe6\x12\x8c\x4f\xdc\x67\x23\x05\x90\x09\x47\xbc\x3a\xda\x9d\x9d\x31\x6e\xbc\xf1\x66\x7a\xd4\x36\x31\x89\x93\x72\x51\xf1\x49\xc7\x2e\x06\x4a\x48\x60\x8d\x94\x0b\x75\x74\xb1\x7f\xef\xc0\xdf", + "f8e4ccab6c979229f6066cc0cb0cfa81bb21447c16c68773be7e558e9f9d798d" + }, { + 55, + "\x3e\xbf\xb0\x6d\xb8\xc3\x8d\x5b\xa0\x37\xf1\x36\x3e\x11\x85\x50\xaa\xd9\x46\x06\xe2\x68\x35\xa0\x1a\xf0\x50\x78\x53\x3c\xc2\x5f\x2f\x39\x57\x3c\x04\xb6\x32\xf6\x2f\x68\xc2\x94\xab\x31\xf2\xa3\xe2\xa1\xa0\xd8\xc2\xbe\x51", + "6595a2ef537a69ba8583dfbf7f5bec0ab1f93ce4c8ee1916eff44a93af5749c4" + }, { + 56, + "\x2d\x52\x44\x7d\x12\x44\xd2\xeb\xc2\x86\x50\xe7\xb0\x56\x54\xba\xd3\x5b\x3a\x68\xee\xdc\x7f\x85\x15\x30\x6b\x49\x6d\x75\xf3\xe7\x33\x85\xdd\x1b\x00\x26\x25\x02\x4b\x81\xa0\x2f\x2f\xd6\xdf\xfb\x6e\x6d\x56\x1c\xb7\xd0\xbd\x7a", + "cfb88d6faf2de3a69d36195acec2e255e2af2b7d933997f348e09f6ce5758360" + }, { + 57, + "\x4c\xac\xe4\x22\xe4\xa0\x15\xa7\x54\x92\xb3\xb3\xbb\xfb\xdf\x37\x58\xea\xff\x4f\xe5\x04\xb4\x6a\x26\xc9\x0d\xac\xc1\x19\xfa\x90\x50\xf6\x03\xd2\xb5\x8b\x39\x8c\xad\x6d\x6d\x9f\xa9\x22\xa1\x54\xd9\xe0\xbc\x43\x89\x96\x82\x74\xb0", + "4d54b2d284a6794581224e08f675541c8feab6eefa3ac1cfe5da4e03e62f72e4" + }, { + 58, + "\x86\x20\xb8\x6f\xbc\xaa\xce\x4f\xf3\xc2\x92\x1b\x84\x66\xdd\xd7\xba\xca\xe0\x7e\xef\xef\x69\x3c\xf1\x77\x62\xdc\xab\xb8\x9a\x84\x01\x0f\xc9\xa0\xfb\x76\xce\x1c\x26\x59\x3a\xd6\x37\xa6\x12\x53\xf2\x24\xd1\xb1\x4a\x05\xad\xdc\xca\xbe", + "dba490256c9720c54c612a5bd1ef573cd51dc12b3e7bd8c6db2eabe0aacb846b" + }, { + 59, + "\xd1\xbe\x3f\x13\xfe\xba\xfe\xfc\x14\x41\x4d\x9f\xb7\xf6\x93\xdb\x16\xdc\x1a\xe2\x70\xc5\xb6\x47\xd8\x0d\xa8\x58\x35\x87\xc1\xad\x8c\xb8\xcb\x01\x82\x43\x24\x41\x1c\xa5\xac\xe3\xca\x22\xe1\x79\xa4\xff\x49\x86\xf3\xf2\x11\x90\xf3\xd7\xf3", + "02804978eba6e1de65afdbc6a6091ed6b1ecee51e8bff40646a251de6678b7ef" + }, { + 60, + "\xf4\x99\xcc\x3f\x6e\x3c\xf7\xc3\x12\xff\xdf\xba\x61\xb1\x26\x0c\x37\x12\x9c\x1a\xfb\x39\x10\x47\x19\x33\x67\xb7\xb2\xed\xeb\x57\x92\x53\xe5\x1d\x62\xba\x6d\x91\x1e\x7b\x81\x8c\xca\xe1\x55\x3f\x61\x46\xea\x78\x0f\x78\xe2\x21\x9f\x62\x93\x09", + "0b66c8b4fefebc8dc7da0bbedc1114f228aa63c37d5c30e91ab500f3eadfcec5" + }, { + 61, + "\x6d\xd6\xef\xd6\xf6\xca\xa6\x3b\x72\x9a\xa8\x18\x6e\x30\x8b\xc1\xbd\xa0\x63\x07\xc0\x5a\x2c\x0a\xe5\xa3\x68\x4e\x6e\x46\x08\x11\x74\x86\x90\xdc\x2b\x58\x77\x59\x67\xcf\xcc\x64\x5f\xd8\x20\x64\xb1\x27\x9f\xdc\xa7\x71\x80\x3d\xb9\xdc\xa0\xff\x53", + "c464a7bf6d180de4f744bb2fe5dc27a3f681334ffd54a9814650e60260a478e3" + }, { + 62, + "\x65\x11\xa2\x24\x2d\xdb\x27\x31\x78\xe1\x9a\x82\xc5\x7c\x85\xcb\x05\xa6\x88\x7f\xf2\x01\x4c\xf1\xa3\x1c\xb9\xba\x5d\xf1\x69\x5a\xad\xb2\x5c\x22\xb3\xc5\xed\x51\xc1\x0d\x04\x7d\x25\x6b\x8e\x34\x42\x84\x2a\xe4\xe6\xc5\x25\xf8\xd7\xa5\xa9\x44\xaf\x2a", + "d6859c0b5a0b66376a24f56b2ab104286ed0078634ba19112ace0d6d60a9c1ae" + }, { + 63, + "\xe2\xf7\x6e\x97\x60\x6a\x87\x2e\x31\x74\x39\xf1\xa0\x3f\xcd\x92\xe6\x32\xe5\xbd\x4e\x7c\xbc\x4e\x97\xf1\xaf\xc1\x9a\x16\xfd\xe9\x2d\x77\xcb\xe5\x46\x41\x6b\x51\x64\x0c\xdd\xb9\x2a\xf9\x96\x53\x4d\xfd\x81\xed\xb1\x7c\x44\x24\xcf\x1a\xc4\xd7\x5a\xce\xeb", + "18041bd4665083001fba8c5411d2d748e8abbfdcdfd9218cb02b68a78e7d4c23" + }, { + 64, + "\x5a\x86\xb7\x37\xea\xea\x8e\xe9\x76\xa0\xa2\x4d\xa6\x3e\x7e\xd7\xee\xfa\xd1\x8a\x10\x1c\x12\x11\xe2\xb3\x65\x0c\x51\x87\xc2\xa8\xa6\x50\x54\x72\x08\x25\x1f\x6d\x42\x37\xe6\x61\xc7\xbf\x4c\x77\xf3\x35\x39\x03\x94\xc3\x7f\xa1\xa9\xf9\xbe\x83\x6a\xc2\x85\x09", + "42e61e174fbb3897d6dd6cef3dd2802fe67b331953b06114a65c772859dfc1aa" + }, { + 0, + NULL, + NULL + } +}; + +/* SHA512 short messages test vectors. */ +static struct test_vector sha512_vectors[] = { + { + 0, + "", + "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e" + }, { + 1, + "\x21", + "3831a6a6155e509dee59a7f451eb35324d8f8f2df6e3708894740f98fdee23889f4de5adb0c5010dfb555cda77c8ab5dc902094c52de3278f35a75ebc25f093a" + }, { + 2, + "\x90\x83", + "55586ebba48768aeb323655ab6f4298fc9f670964fc2e5f2731e34dfa4b0c09e6e1e12e3d7286b3145c61c2047fb1a2a1297f36da64160b31fa4c8c2cddd2fb4" + }, { + 3, + "\x0a\x55\xdb", + "7952585e5330cb247d72bae696fc8a6b0f7d0804577e347d99bc1b11e52f384985a428449382306a89261ae143c2f3fb613804ab20b42dc097e5bf4a96ef919b" + }, { + 4, + "\x23\xbe\x86\xd5", + "76d42c8eadea35a69990c63a762f330614a4699977f058adb988f406fb0be8f2ea3dce3a2bbd1d827b70b9b299ae6f9e5058ee97b50bd4922d6d37ddc761f8eb" + }, { + 5, + "\xeb\x0c\xa9\x46\xc1", + "d39ecedfe6e705a821aee4f58bfc489c3d9433eb4ac1b03a97e321a2586b40dd0522f40fa5aef36afff591a78c916bfc6d1ca515c4983dd8695b1ec7951d723e" + }, { + 6, + "\x38\x66\x7f\x39\x27\x7b", + "85708b8ff05d974d6af0801c152b95f5fa5c06af9a35230c5bea2752f031f9bd84bd844717b3add308a70dc777f90813c20b47b16385664eefc88449f04f2131" + }, { + 7, + "\xb3\x9f\x71\xaa\xa8\xa1\x08", + "258b8efa05b4a06b1e63c7a3f925c5ef11fa03e3d47d631bf4d474983783d8c0b09449009e842fc9fa15de586c67cf8955a17d790b20f41dadf67ee8cdcdfce6" + }, { + 8, + "\x6f\x8d\x58\xb7\xca\xb1\x88\x8c", + "a3941def2803c8dfc08f20c06ba7e9a332ae0c67e47ae57365c243ef40059b11be22c91da6a80c2cff0742a8f4bcd941bdee0b861ec872b215433ce8dcf3c031" + }, { + 9, + "\x16\x2b\x0c\xf9\xb3\x75\x0f\x94\x38", + "ade217305dc34392aa4b8e57f64f5a3afdd27f1fa969a9a2608353f82b95cfb4ae84598d01575a578a1068a59b34b5045ff6d5299c5cb7ee17180701b2d1d695" + }, { + 10, + "\xba\xd7\xc6\x18\xf4\x5b\xe2\x07\x97\x5e", + "5886828959d1f82254068be0bd14b6a88f59f534061fb20376a0541052dd3635edf3c6f0ca3d08775e13525df9333a2113c0b2af76515887529910b6c793c8a5" + }, { + 11, + "\x62\x13\xe1\x0a\x44\x20\xe0\xd9\xb7\x70\x37", + "9982dc2a04dff165567f276fd463efef2b369fa2fbca8cee31ce0de8a79a2eb0b53e437f7d9d1f41c71d725cabb949b513075bad1740c9eefbf6a5c6633400c7" + }, { + 12, + "\x63\x32\xc3\xc2\xa0\xa6\x25\xa6\x1d\xf7\x18\x58", + "9d60375d9858d9f2416fb86fa0a2189ee4213e8710314fd1ebed0fd158b043e6e7c9a76d62c6ba1e1d411a730902309ec676dd491433c6ef66c8f116233d6ce7" + }, { + 13, + "\xf4\x7b\xe3\xa2\xb0\x19\xd1\xbe\xed\xed\xf5\xb8\x0c", + "b94292625caa28c7be24a0997eb7328062a76d9b529c0f1d568f850df6d569b5e84df07e9e246be232033ffac3adf2d18f92ab9dacfc0ecf08aff7145f0b833b" + }, { + 14, + "\xb1\x71\x5f\x78\x2f\xf0\x2c\x6b\x88\x93\x7f\x05\x41\x16", + "ee1a56ee78182ec41d2c3ab33d4c41871d437c5c1ca060ee9e219cb83689b4e5a4174dfdab5d1d1096a31a7c8d3abda75c1b5e6da97e1814901c505b0bc07f25" + }, { + 15, + "\x9b\xcd\x52\x62\x86\x8c\xd9\xc8\xa9\x6c\x9e\x82\x98\x7f\x03", + "2e07662a001b9755ae922c8e8a95756db5341dc0f2e62ae1cf827038f33ce055f63ad5c00b65391428434ddc01e5535e7fecbf53db66d93099b8e0b7e44e4b25" + }, { + 16, + "\xcd\x67\xbd\x40\x54\xaa\xa3\xba\xa0\xdb\x17\x8c\xe2\x32\xfd\x5a", + "0d8521f8f2f3900332d1a1a55c60ba81d04d28dfe8c504b6328ae787925fe0188f2ba91c3a9f0c1653c4bf0ada356455ea36fd31f8e73e3951cad4ebba8c6e04" + }, { + 17, + "\x6b\xa0\x04\xfd\x17\x67\x91\xef\xb3\x81\xb8\x62\xe2\x98\xc6\x7b\x08", + "112e19144a9c51a223a002b977459920e38afd4ca610bd1c532349e9fa7c0d503215c01ad70e1b2ac5133cf2d10c9e8c1a4c9405f291da2dc45f706761c5e8fe" + }, { + 18, + "\xc6\xa1\x70\x93\x65\x68\x65\x10\x20\xed\xfe\x15\xdf\x80\x12\xac\xda\x8d", + "c36c100cdb6c8c45b072f18256d63a66c9843acb4d07de62e0600711d4fbe64c8cf314ec3457c90308147cb7ac7e4d073ba10f0ced78ea724a474b32dae71231" + }, { + 19, + "\x61\xbe\x0c\x9f\x5c\xf6\x27\x45\xc7\xda\x47\xc1\x04\x59\x71\x94\xdb\x24\x5c", + "b379249a3ca5f14c29456710114ba6f6136b34c3fc9f6fb91b59d491af782d6b237eb71aaffdd38079461cf690a46d9a4ddd602d19808ab6235d1d8aa01e8200" + }, { + 20, + "\xe0\x70\x56\xd4\xf7\x27\x7b\xc5\x48\x09\x95\x77\x72\x0a\x58\x1e\xec\x94\x14\x1d", + "59f1856303ff165e2ab5683dddeb6e8ad81f15bb578579b999eb5746680f22cfec6dba741e591ca4d9e53904837701b374be74bbc0847a92179ac2b67496d807" + }, { + 21, + "\x67\xeb\xda\x0a\x35\x73\xa9\xa5\x87\x51\xd4\x16\x9e\x10\xc7\xe8\x66\x3f\xeb\xb3\xa8", + "13963f81cfabfca71de4739fd24a10ce3897bba1d716907fc0a28490c192a7fc3ccb8db1f91af7a2d250d6617f0dfd1519d221d618a02e3e3fa9041cf35ed1ea" + }, { + 22, + "\x63\xe0\x9d\xb9\x9e\xb4\xcd\x62\x38\x67\x78\x59\xa5\x67\xdf\x31\x3c\x85\x20\xd8\x45\xb4", + "9083e5348b08eb9810b2d15781d8265845410de54fe61750d4b93853690649adc6e72490bc2b7c365e2390573d9414becc0939719e0cb78eca6b2c80c2fda920" + }, { + 23, + "\xf3\xe0\x6b\x4b\xd7\x9e\x38\x0a\x65\xcb\x67\x9a\x98\xcc\xd7\x32\x56\x3c\xc5\xeb\xe8\x92\xe2", + "6b315f106b07c59eedc5ab1df813b3c0b903060e7217cc010e9070278512a885008dac8b2472a521e77835a7f4deadc1d591aa23b624b69948a99bb60121c54e" + }, { + 24, + "\x16\xb1\x70\x74\xd3\xe3\xd9\x75\x57\xf9\xed\x77\xd9\x20\xb4\xb1\xbf\xf4\xe8\x45\xb3\x45\xa9\x22", + "6884134582a760046433abcbd53db8ff1a89995862f305b887020f6da6c7b903a314721e972bf438483f452a8b09596298a576c903c91df4a414c7bd20fd1d07" + }, { + 25, + "\x3e\xdf\x93\x25\x13\x49\xd2\x28\x06\xbe\xd2\x53\x45\xfd\x5c\x19\x0a\xac\x96\xd6\xcd\xb2\xd7\x58\xb8", + "299e0daf6605e5b0c30e1ec8bb98e7a3bd7b33b388bdb457452dab509594406c8e7b841e6f4e75c8d6fbd614d5eb9e56c359bfafb4285754787ab72b46dd33f0" + }, { + 26, + "\xb2\xd5\xa1\x4f\x01\xe6\xb7\x78\x88\x8c\x56\x2a\x05\x9e\xc8\x19\xad\x89\x99\x2d\x16\xa0\x9f\x7a\x54\xb4", + "ab2e7d745d8ad393439af2a3fbc9cdc25510d4a04e78b526e12b1c0be3b22966872ebe652e2f46ed5c5acecd2f233a9175dd295ebeb3a0706fc66fa1b137042b" + }, { + 27, + "\x84\x4b\x66\xf1\x2b\xa0\xc5\xf9\xe9\x27\x31\xf5\x71\x53\x9d\x1e\xef\x33\x2e\x15\x49\xa4\x9d\xbf\xa4\xc6\xde", + "c3f9c5781925774783ae9d839772d7513dfcea8c5af8da262c196f9fe80135b2b0c8c6ca0a1604e0a3460247620de20b299f2db7871982d27c2176ae5fa7ad65" + }, { + 28, + "\x6b\x6c\xc6\x92\xd3\x98\x60\xb1\xf3\x02\x03\x65\x3e\x25\xd0\x9c\x01\xe6\xa8\x04\x3c\x1a\x9c\xb8\xb2\x49\xa4\x1e", + "2e5263d9a4f21b210e0e161ed39df44102864325788647261a6e70ea4b1ee0abb57b57499bc82158d82336dd53f1ef4464c6a08126e138b2cc0892f765f6af85" + }, { + 29, + "\xab\x1f\xc9\xee\x84\x5e\xeb\x20\x5e\xc1\x37\x25\xda\xf1\xfb\x1f\x5d\x50\x62\x9b\x14\xea\x9a\x22\x35\xa9\x35\x0a\x88", + "72d188a9df5f3b00057bca22c92c0f8228422d974302d22d4b322e7a6c8fc3b2b50ec74c6842781f29f7075c3d4bd065878648846c39bb3e4e2692c0f053f7ed" + }, { + 30, + "\x59\x4e\xd8\x2a\xcf\xc0\x3c\x0e\x35\x9c\xc5\x60\xb8\xe4\xb8\x5f\x6e\xe7\x7e\xe5\x9a\x70\x02\x3c\x2b\x3d\x5b\x32\x85\xb2", + "5ef322cb4014ecbb713a13659612a222225984d31c187debc4459ba7901f03dac775400acfe3510b306b79894fb0e8437b412150c9193ee5a2164306ebb78301" + }, { + 31, + "\xf2\xc6\x6e\xfb\xf2\xa7\x6c\x5b\x04\x18\x60\xea\x57\x61\x03\xcd\x8c\x6b\x25\xe5\x0e\xca\x9f\xf6\xa2\xfa\x88\x08\x3f\xe9\xac", + "7978f93ef7ed02c4a24abecba124d14dd214e1492ff1e168304c0eab89637da0f7a569c43dc4562bdb9404a018b6314fe0eebaccfb25ba76506aa7e9dcd956a7" + }, { + 32, + "\x8c\xcb\x08\xd2\xa1\xa2\x82\xaa\x8c\xc9\x99\x02\xec\xaf\x0f\x67\xa9\xf2\x1c\xff\xe2\x80\x05\xcb\x27\xfc\xf1\x29\xe9\x63\xf9\x9d", + "4551def2f9127386eea8d4dae1ea8d8e49b2add0509f27ccbce7d9e950ac7db01d5bca579c271b9f2d806730d88f58252fd0c2587851c3ac8a0e72b4e1dc0da6" + }, { + 33, + "\x9f\x8c\x49\x32\x0a\xf9\x37\x0c\xd3\xdb\x20\xe9\xb5\x0d\x3e\xaa\x59\xa6\x23\x2d\x7a\x86\xfb\x7d\x47\x2f\x12\x45\x08\xd7\x96\x8b\x05", + "81b002f15c4d48be8517f7ed89df302fb1435c9435efefed58f3eb8ea11910623f1eb9028a66e02121a7f08a7c604226f2324f483e91548dbbd2c441ab704ce5" + }, { + 34, + "\x4a\xb9\xaa\x06\x94\x75\xe5\x4b\x25\xe5\x68\x8a\x52\xdd\x4a\xcd\x13\x41\x69\xc8\x58\x10\x5f\x01\xa0\xa1\xb1\x34\xc7\x2d\x4a\xf5\x1f\x8e", + "48ba5a63aba7e7bd8e420475331125a947928c67fdb00f65c4080d9a0b99c0672424e76a1ba6bd76dfe492c730f6f9adccaee7bb11571aadb31f6bb628cfa933" + }, { + 35, + "\xf0\xc1\xd3\x40\x7d\xe9\x2e\xf7\x42\x1e\x42\xdf\x5c\x9a\xb3\x1d\x2e\xc0\xa7\x50\xa9\x52\x28\x69\xcb\xe4\xca\xbd\x66\x90\x8d\x58\x23\xec\x04", + "9e75c5bca2c2af1d7739787f46e1d981c4f98e493d0724b5252c2fbae3c526719f1d27e6ccd0d705240281e8fbf3db75b9b3205c1413436d3b5d140004b8cca1" + }, { + 36, + "\xae\x8c\x9f\x8f\xb4\x1b\x51\x9b\x6d\x94\x38\x33\xfe\x1c\x32\xd1\xc4\x29\x2f\xb1\xdd\xf1\xdb\xe2\xeb\x22\x7d\x9e\x14\xd3\x1e\xd7\x4e\xba\xef\x12", + "042f9fd0a4ed3d9fec3655ae11011c6f2bc7e457e8812b6d8be2cd45fc6c432a94558c88f22c01439618865e8e49e509c448b342ca914b120344aaf7bcbdca18" + }, { + 37, + "\xda\x39\xfb\x86\x23\x7f\x00\x30\x38\x44\xe6\x1f\xc6\xcf\xe7\x79\xe4\x2a\xf5\x33\x49\x83\x95\x90\xbc\xd2\xf0\xe4\xcb\xbc\x27\x9e\xc0\xb7\xe8\x85\xd1", + "ecb43de8c233a731b38e30c5696f8876761b7ea72efe283fd07bedf20029f47c6d2a4427823e100fb087abaf22d7eff42a951c97c3dd05f48a20163fa4367cba" + }, { + 38, + "\x3e\x72\x71\xd2\x07\x0e\xf0\x95\x39\x46\x20\xc4\xb0\x16\x57\x6c\x15\x0f\x34\xbe\xa6\x07\x84\x61\x3a\x0f\x66\x0d\x7f\xa5\xae\x56\x87\x2b\x88\xc5\x83\x98", + "8154d0da634ab2266061acc123acb407650ffe9164a22de3fe29bf05393b2aece92cf4db00ea5b4341c31ddb7de151683c8a71b5a44d5c3175790feac67d18ee" + }, { + 39, + "\x31\x1f\xb6\x7f\x6a\x07\x84\xbb\x01\xa2\xd5\xa3\xf3\x09\x2c\x40\x7a\x9d\x33\x22\x31\x9d\xff\x9a\x79\xf8\x94\x29\x1c\x5f\xac\x37\x31\x9f\xb4\x08\x40\x2e\x18", + "1870fe913abb0a4b4f53b6581ae18322cd05328514556607f3f4d7b6a2ac8e9185d94d947d8b9c88e0efa66d89b59f7439c75fdadd1816f7412306ab2b59d664" + }, { + 40, + "\x76\x51\xab\x49\x1b\x8f\xa8\x6f\x96\x9d\x42\x97\x7d\x09\xdf\x5f\x8b\xee\x3e\x58\x99\x18\x0b\x52\xc9\x68\xb0\xdb\x05\x7a\x6f\x02\xa8\x86\xad\x61\x7a\x84\x91\x5a", + "f35e50e2e02b8781345f8ceb2198f068ba103476f715cfb487a452882c9f0de0c720b2a088a39d06a8a6b64ce4d6470dfeadc4f65ae06672c057e29f14c4daf9" + }, { + 41, + "\xdb\xe5\xdb\x68\x5e\xd7\xcb\x84\x8c\x09\x45\x24\xc1\x72\x35\x19\xd4\x9d\xc6\x6e\xf9\xfe\x6d\x57\xe6\x86\x2a\x64\x35\x75\x0b\xfa\x0a\x70\xf1\x04\xf5\xd3\x96\xe6\x1a", + "2fa6e5b2c443a68050f093e7fb713bd6b18f6274c061ed61d79bf0688a61dba1940bcc30998276860943ab038902896d0fbf59b88b07c80de927037097150c40" + }, { + 42, + "\x9f\xa8\x3e\x96\xb2\xa6\xdf\x23\xfb\x37\x28\x95\x01\x56\x78\xe0\xb2\xc9\xcd\x18\xa8\x54\x2c\x3e\xaa\x2c\x43\x5a\x76\xae\x4d\xc9\xbd\x51\x36\xd9\x70\xda\xff\x93\x3a\xcf", + "3a2c0ec88a3e5347cf0ea9c078838300ef7356f9a6c342063277c106b880a00ed2be205c13064097bd372fde38007bc306561eb4e74bba2bb20bd354aa690ca6" + }, { + 43, + "\x8a\x5a\x45\xe3\x98\xba\xc1\xd9\xb8\x96\xb5\xa2\xb4\xe3\x56\x6b\x91\xd8\x0a\xd2\x0c\x97\x7e\xa7\x45\x0f\xf2\xef\xb5\x21\xd8\x2f\x65\x01\x9e\xe7\x62\xe0\xc8\x5c\x6c\xc8\x41", + "3c704620f4066d79c1ff67752980f39ef3d9c1023fa5a213a5265376b14a15166ffe069b51df7710d8907fef9406bf375d502ce086ac82aff17229aaa7a5a334" + }, { + 44, + "\x49\xcf\xff\xda\xf4\xd0\x31\xe3\x3b\x1d\x28\xa4\x47\x45\x05\x45\xf6\xc4\x29\x3b\x38\xd5\xaf\xbc\xb9\x88\x39\x76\xc0\x14\xf0\x80\x57\x6e\xc6\x91\xac\x1b\xff\x70\xb7\x42\xef\xab", + "8bcc4f1ea2b7862ef1591bfa73916665de8faf65439ddf5cc1be43cebfd5f60f205e835a2b186b675b041258c5cff42669316ce25b46a2f4d4218e102f0f5d6f" + }, { + 45, + "\x2f\xf8\x45\xd8\x5e\xfb\xc4\xfa\x56\x37\xe9\x44\x8d\x95\x04\x96\xf1\x9d\x8d\x57\xda\x99\xb7\xbd\x3d\xf7\x47\x48\x22\xf0\xa7\x90\x58\x67\x36\x41\x67\x14\xe3\x64\xc6\xe1\xfa\xe0\x4e", + "236f6f4ed6e858c02d51787e60c578f731f694f8e52b5df4ecd5b04dff14c78e56bad1028d6f626c29d85aeee151a2a2846d3eed5cfafa9854a69fea8af6d04a" + }, { + 46, + "\xcf\xca\x05\xfd\x89\x3c\x0f\x00\x5f\x5f\xf7\x96\xf4\xda\x19\xba\x27\xa1\xe7\x29\x95\x6b\x8b\x71\x5e\x67\xce\x4b\x2d\x2a\x38\x2a\x72\xec\x78\x14\xf2\xf5\x07\xb1\x82\x52\x09\xa2\x0f\xcc", + "d80969284a4565add4dad6ab9b3bdf53446142f84aaf92d4b23dd22ee7241e6c81489ac8b246edcb6df9bd7b23d91a0c517f546feba4ed5790a2be6e165c1709" + }, { + 47, + "\xcf\xc4\x25\x75\x9a\x9c\x36\xbb\x9f\x4b\x32\xee\xd7\x76\x7a\xf6\x56\x6f\x68\xde\xd0\xad\xea\xe2\x5c\x7a\x70\xca\x78\xec\x09\x77\x4d\x16\xc8\xbc\x35\x7f\x6d\x6f\x7b\xd4\x41\xbf\x62\xd9\x42", + "b587a785cdf455cc9c544e756c1e306300aa3c59f8725012e68ab4d54020b6d227a164d9f83c905e86f8cebeef708a69f976d6e7b18b9bf78e9b98cc4a5cd1b6" + }, { + 48, + "\x09\x7c\x9d\xb9\x19\x51\x52\x42\xc9\x9d\x97\x3a\xcb\x1d\xc4\xed\x48\x27\x68\xf9\x74\xeb\x83\xb4\x65\xf9\xf6\xc8\x25\x03\x37\x20\x06\xe4\x49\x08\x35\xe2\xec\x8f\x92\x30\x11\x30\xbf\xb7\x90\xb2", + "ff5a376f938e73014caef7fe3962944a7230d020b7087869ebe7ec70302721cd06fcdc981c893a425d05e2f99fe198e4db50a088aee2bf1263212110efed422c" + }, { + 49, + "\x77\xe7\x3d\x38\x7e\x7b\xc8\x04\x19\xeb\xf5\x48\x2b\x61\xd5\x25\x5c\xaf\x81\x9f\xb5\x92\x51\xff\x6a\x38\x4e\x75\xf6\x01\xea\x02\x6d\x83\xef\x95\x0e\xd0\xb6\x75\x18\xfb\x99\xde\xe0\xd8\xaa\xef\x1f", + "c4c89cd882ec945cc888fb9a0127d35e585ecc14a75e4b5b3d8330538d22da28cf6af1ebec96dc247f109cd2aaab9756e6946a3d80db8363a4da3e6ddbb510a1" + }, { + 50, + "\x31\x7e\x5d\x9a\xc7\x3e\xd0\x63\x3f\xa1\x8e\xbe\xbb\xca\x79\x09\xec\x3a\x5e\xf7\x90\x47\x8f\x9c\x38\xca\xce\xc4\x4f\x19\x6d\x89\x58\x35\xb4\x25\x77\x44\x83\x04\x33\x41\x38\x1e\x7a\xf2\xd3\x83\xe5\x1a", + "b10bb04491b9c0c334709b407cda1d503efb6b63ee944f2d366b6855e6e63e5b80115be4be7ff63edecdfb5923792e68123976d79212b3884dec2179d1fcf382" + }, { + 51, + "\x20\x94\x61\xf2\x06\x66\xa3\x46\xfe\xdf\x4a\x53\x0f\x41\xa6\xfa\x28\x0c\x43\x66\x57\x67\xbe\x92\x3b\xc1\xd8\x0b\xbc\xb8\xc9\xf8\xf9\x3a\xd7\x57\x82\xea\x26\x89\xc8\xc5\xd2\x11\xd2\x05\x3b\x99\x31\x45\xa0", + "67b7a328d9444056a52ca2f695c5d3f3baafb625a14fb32eee8ff26a40ccb296bec1771a826b55f7ddb6170d4caf7795b612448e66a0f19356fe505927149b47" + }, { + 52, + "\x5d\x61\xaa\x45\xc4\x46\xf3\xbf\x93\x60\x4b\x05\x11\x31\x3b\x4e\x2f\x30\x6d\x6b\x04\x6f\xbd\x94\x79\x7b\x92\x67\x46\x83\x6f\x2e\x1d\xbd\xc5\x61\x24\x06\x0c\x6c\xa9\xc9\x11\xb1\x12\x21\x92\xd1\x12\x42\x08\x27", + "d3931bde2bde8271ed18ca0b9148b12f6f16161e637e376fc961f65bc33bcacf2f6addf26a3eaa81b196653cc37e8a739ec5b3df870d8c38c8f28691c22a39bb" + }, { + 53, + "\x92\x88\xc7\x95\xbb\x0b\x86\xc0\x41\x9d\x9c\x56\x37\xdc\xc3\x7b\x39\xbf\xa1\x8d\x44\x1e\x3f\xbf\xca\x75\xbc\x03\x06\xe5\x43\x2e\x8e\x7b\x3a\x56\x27\xb5\xbc\x7f\xdc\x42\x4a\x77\x52\x0a\xbd\xff\x56\x6e\x7f\x2b\xb8", + "e363d0e95d8cd18c384016ebeed6d99c4fa2768e2bd58fca019c5108b9cde1cb46f3f884028a55ce282ec310a10037faa1b16b4a6a669957f0b00f350bbd63d0" + }, { + 54, + "\x78\x04\x27\xdc\x16\x4b\x2f\x69\xb8\xc7\xd5\x69\x26\x6f\x46\x1e\x2d\x30\xc8\x8c\x4c\xd6\x05\x7f\xb0\x30\xa6\xcf\x63\x6f\x24\xe3\xc0\xd0\xdb\x74\x2a\x7b\x61\x93\xfd\xaa\x15\xee\xc5\x0d\xfb\x4f\xae\x6e\xc7\x65\x3c\x91", + "2964b009fb1bf996de12e030b9d6e0608ae8b9dbf2acfb9beb76fc5361cc104ee85c2a46fb7b4cee90848312da302de49afe61c546477e2b25d223d5e3d33560" + }, { + 55, + "\xec\x2a\x92\xe4\x7f\x69\x2b\x53\xc1\x35\x54\x75\xc7\x1c\xef\xf0\xb0\x95\x2a\x8b\x35\x41\xb2\x93\x82\x70\x24\x7d\x44\xe7\xc5\xcc\x04\xe1\x72\x36\xb3\x53\xda\x02\x86\x74\xea\xb4\x04\x7d\x89\xec\x5d\xad\x86\x8c\xfd\x91\xce", + "c83aca6147bfcbbc72c377efa8d53654ba0830c5a6a89e1d2a19b713e68fb534640deb833ca512247166dd273b5897e57d526f88eef58f6ff97baee0b4ee5644" + }, { + 56, + "\xc9\x9e\x31\xad\x4e\x23\xac\x68\xe1\x5e\x60\x5d\x0b\x02\x43\x7f\x81\x47\xc4\x4f\x54\x45\xa5\x5b\x68\xa1\x09\x05\x27\x6c\xce\x86\x76\x48\x1c\x33\xe8\xcd\x3e\xfe\x32\x2b\xb1\x3f\xe0\x10\x7b\xb5\x46\xcc\xbe\xc7\xb8\xb3\x8d\x10", + "52992d45a88221d972958e9f2854adaa9a21d2bf7051e1f1019ae78004da50c5b55c144a02afffe539d753949a2b056534f5b4c21f248a05baa52a6c38c7f5dd" + }, { + 57, + "\x9a\xa3\xe8\xad\x92\x77\x7d\xfe\xb1\x21\xa6\x46\xce\x2e\x91\x8d\x1e\x12\xb3\x07\x54\xbc\x09\x47\x0d\x6d\xa4\xaf\x6c\xc9\x64\x2b\x01\x2f\x04\x1f\xf0\x46\x56\x9d\x4f\xd8\xd0\xdc\xcf\xe4\x48\xe5\x9f\xee\xfc\x90\x8d\x9a\xd5\xaf\x6f", + "994d1cda4de40aff4713237cf9f78f7033af83369ac9c64e504091ea2f1caff6c5152d6a0c5608f82886c0093b3d7fbadd49dfd1f9e0f85accf23bc7dad48904" + }, { + 58, + "\x58\x42\x51\x2c\x37\x31\x25\x11\xa3\xd8\xae\x41\xf5\x80\x1d\xf6\x0c\xd6\x82\xd5\x8b\x4a\x99\x73\x42\xb6\xe7\x17\xe9\x40\x06\xc2\x14\x81\x3e\x6c\x63\xe7\x55\x91\xf9\x57\xa7\xec\x30\x17\x79\x83\x8b\xec\x8a\xe3\xed\x7f\xeb\xad\x08\x05", + "9763c43331ad0eb279d704c5f6e97e02da8724115026827f889e9fcda21f60fd230894ab35abb719890f3afa51afd31bc6852183b9c51059910af460abd2474d" + }, { + 59, + "\xca\x14\xe2\xea\x2f\x37\xc7\x8f\x78\xef\x28\x0f\x58\x70\x7e\xc5\x49\xa3\x1a\x94\x36\x10\x73\xe3\x77\x01\xbf\xe5\x03\xe4\xc0\x1e\xe1\xf2\xe1\x23\xe0\x0e\x81\xa1\x88\xf0\x8f\xa0\x50\x82\x57\x09\x12\x8a\x9b\x66\xbb\x8a\xe6\xea\x47\xe4\x1d", + "4600e022a02258739f67fdd367cc1e662631fb087918768352062b9b3c8de8dbca0e9ec751b91f284694fbddb8d325c0637bccb21dd2efa92e48dbab2e5e9c26" + }, { + 60, + "\x64\x76\x29\xc7\x79\xb2\x4c\x1e\x76\xf4\x17\x44\xab\xa1\x71\x59\x48\x75\x32\xa0\x15\x6a\x7d\x82\x64\xdb\x50\xd6\x45\xe9\x59\x5f\xf8\x1e\x0c\x96\xa8\x50\xf2\xaa\x56\xc8\x44\xc6\x13\xa4\xb8\x92\x72\x7a\x9b\xfc\x3d\x3e\x20\x38\x67\x66\xf8\x05", + "5bc842fc2d3b7eb31d2d3044df3ec32af114feaa7cfc27ebc8630f46ab6f0c543f59b812e776e5303861d17da3f1f16097641f3b808d4d5cb3e483946409746c" + }, { + 61, + "\x1c\x5d\xc0\xd1\xdd\x2e\x4c\x71\x76\x35\xff\x3e\x9b\x67\xca\xf9\x57\xae\xc0\xf8\xf6\x3c\x1b\x1e\x22\x1e\x80\x0a\x4c\x14\x84\x8f\x4e\xa0\x6e\x64\x4e\x5d\x3e\x1d\xe5\x92\xef\x5a\x80\x07\xfa\x3f\x07\x17\x1b\x24\xbd\x07\x57\x8d\x68\x96\x3e\x5c\xb1", + "cbf1ea86fa5b3dbf67be82fac41e84cccd0d296c757169b37837d273ccc015eecd102b9ce1cff68fdc7f05d22f2b774734f62ded54c8ee0bf57a5a82010d74f5" + }, { + 62, + "\x8a\x55\x5e\x75\x47\x7d\x06\x5b\x3a\xf7\xe6\x15\x47\x5f\x37\xc0\xa6\x67\xf7\x3a\x4c\x7a\xf5\xe4\xa6\x9f\x28\xa6\x8d\x9f\x44\x34\x77\x6a\x8f\x90\xea\xb7\xf1\xd1\x37\xeb\x4b\x22\x64\x3c\x0a\x0d\x6a\x16\xfc\xfa\xa1\xbd\x62\xf2\x78\x35\x46\xa9\x69\x5f", + "c088e4a3d7da2f6f99a8f3f717361108872b8ffef921b383c24b8061d4e7c27fc56f4f20dc8f952a14043c5650b5a9e777c49c41cfeb3f2de97ee2e16b2c3924" + }, { + 63, + "\xeb\xb3\xe2\xad\x78\x03\x50\x8b\xa4\x6e\x81\xe2\x20\xb1\xcf\xf3\x3e\xa8\x38\x15\x04\x11\x0e\x9f\x80\x92\xef\x08\x5a\xfe\xf8\x4d\xb0\xd4\x36\x93\x1d\x08\x5d\x0e\x1b\x06\xbd\x21\x8c\xf5\x71\xc7\x93\x38\xda\x31\xa8\x3b\x4c\xb1\xec\x6c\x06\xd6\xb9\x87\x68", + "f33428d8fc67aa2cc1adcb2822f37f29cbd72abff68190483e415824f0bcecd447cb4f05a9c47031b9c50e0411c552f31cd04c30cea2bc64bcf825a5f8a66028" + }, { + 64, + "\xc1\xca\x70\xae\x12\x79\xba\x0b\x91\x81\x57\x55\x8b\x49\x20\xd6\xb7\xfb\xa8\xa0\x6b\xe5\x15\x17\x0f\x20\x2f\xaf\xd3\x6f\xb7\xf7\x9d\x69\xfa\xd7\x45\xdb\xa6\x15\x05\x68\xdb\x1e\x2b\x72\x85\x04\x11\x3e\xea\xc3\x4f\x52\x7f\xc8\x2f\x22\x00\xb4\x62\xec\xbf\x5d", + "046e46623912b3932b8d662ab42583423843206301b58bf20ab6d76fd47f1cbbcf421df536ecd7e56db5354e7e0f98822d2129c197f6f0f222b8ec5231f3967d" + }, { + 65, + "\xd3\xdd\xdd\xf8\x05\xb1\x67\x8a\x02\xe3\x92\x00\xf6\x44\x00\x47\xac\xbb\x06\x2e\x4a\x2f\x04\x6a\x3c\xa7\xf1\xdd\x6e\xb0\x3a\x18\xbe\x00\xcd\x1e\xb1\x58\x70\x6a\x64\xaf\x58\x34\xc6\x8c\xf7\xf1\x05\xb4\x15\x19\x46\x05\x22\x2c\x99\xa2\xcb\xf7\x2c\x50\xcb\x14\xbf", + "bae7c5d590bf25a493d8f48b8b4638ccb10541c67996e47287b984322009d27d1348f3ef2999f5ee0d38e112cd5a807a57830cdc318a1181e6c4653cdb8cf122" + }, { + 66, + "\x8e\x8e\xf8\xaa\x33\x6b\x3b\x98\x89\x4c\x31\x26\xc7\x18\x78\x91\x06\x18\x83\x8c\x00\xac\x85\x90\x17\x3c\x91\x74\x99\x72\xff\x3d\x42\xa6\x11\x37\x02\x9a\xd7\x45\x01\x68\x4f\x75\xe1\xb8\xd1\xd7\x43\x36\xaa\x90\x8c\x44\x08\x2a\xe9\xeb\x16\x2e\x90\x18\x67\xf5\x49\x05", + "41672931558a93762522b1d55389ecf1b8c0feb8b88f4587fbd417ca809055b0cb630d8bea133ab7f6cf1f21c6b35e2e25c0d19583258808e6c23e1a75336103" + }, { + 67, + "\x52\x76\x1e\x1d\xac\x0e\xae\xa8\x98\xe0\xb0\x7c\xd2\x4f\x4b\x2e\x6b\xb7\xbc\x20\x0e\xa4\xb0\x52\x88\x42\xf1\x7b\x87\x15\x45\x59\xa2\xea\x94\x45\x9a\x0e\x48\x0a\xe0\xbd\xf9\xf7\x57\xdd\x4a\x33\x5a\xed\x0e\x51\x01\x38\xb0\x24\xa0\x4e\xd1\xd5\x91\xb4\x32\x32\x34\xdb\xd5", + "b826fe80494e19c51b42f2582b2d080ba6b90512f35f2db67dd7fd5ee532eaa16498afba08b4996cbcfdf8d1a2df6b1da939e8265115a48aefa42f38205db436" + }, { + 68, + "\x38\x04\xeb\xc4\x3c\xbe\xa8\x0c\x2b\xd7\xe4\xfd\xa5\xc5\x51\x55\x00\xcd\x2d\x2b\x84\x6a\x13\x78\xdb\xf2\x18\xd5\xc3\x77\x13\x86\x06\xeb\x3c\xb8\xac\x88\xf9\x07\x6f\x6f\xf4\x43\x6f\x90\x71\x74\x27\xc9\xdf\x1b\xa0\x52\xac\xbb\xe4\x58\x5e\x98\xb6\xe8\xe0\xbf\x80\x0f\x19\x46", + "17dd6d87bc6773051e52047fd444996afa8124b0483fe121877f98553448772bd0e7751fc655e9cc2d29830211015d310f191474ca6adc0477a187c03b8fe252" + }, { + 69, + "\x22\x49\xd6\x98\xc4\xd8\x07\xa8\xe7\xb4\xde\x21\xc4\x85\x73\x89\x59\xa0\xd6\x7e\x5d\x2c\xa6\xf7\x79\x83\xdf\xcc\xb5\xdb\xf4\x79\x31\x26\x1e\x1f\x15\x37\xf3\xcb\xca\x25\x3a\xfb\x6b\xf4\xfe\x5e\x76\x72\xe1\xdc\xc8\x60\xb3\xd6\xc8\xd2\x43\xaf\xe2\xd9\x75\x8b\x37\x5e\x95\x56\x92", + "6af44563fc468d51182f6c3be58d45932af1d985c6f283976c91a9ff421f383fe21dc7322f397ccead583e26b3e3fda067976a7f34665df25a2ced7b4b09cdec" + }, { + 70, + "\x32\xa9\xc1\x70\x33\x65\x8c\x54\xf2\x2c\x71\x35\xdd\xfc\x87\x9d\xe9\x4d\x79\x59\x3e\xf2\xdc\x7d\x30\x41\xbf\xa8\x72\x73\x83\x89\x86\x4e\xed\xa2\x78\x01\x79\x4c\xcc\x4f\xf1\xfc\xb5\xef\x3f\xc4\x88\x33\x80\x1d\x6f\xe9\x59\xe3\x62\x7f\x8e\xa1\x53\x6a\xd0\x0f\xa9\xc7\xd7\xd9\xf0\x43", + "6a47699dd3ada2f11bc4ea42072b06cc20857bf164497df1285400c250f5848b6f71957dbdc845f5daeab913036661f69387893fc2d61c25fa59b9d85b19f401" + }, { + 71, + "\x3d\x65\xf6\x9a\x59\x0a\x5b\xaa\xab\xcd\x27\x4f\xe3\xef\x9e\x88\x92\x0f\xfc\x7a\xdf\x05\xc1\x6d\x7b\x0f\x4d\x18\xd7\x2b\xac\x1e\x94\xc3\xb3\xd8\x3b\x8f\x4c\x55\x2e\xb8\x0e\x9f\xde\x39\x11\x40\x3f\x8b\x00\x05\x79\x81\x6f\x02\xe1\x71\x6f\xd6\x27\x94\x60\x31\xd0\xaf\x07\x93\xe7\xf3\xe1", + "ffb2d9450943c24b5933c24812459b75d3d9f380344c9bc06fa3e17ee448eca2f98ff79f7e2235ccd9f9a8176f68a2254bbc9b834d6ac8d2bfdbc1597c432c9f" + }, { + 72, + "\x76\xff\x8b\x20\xa1\x8c\xf1\x04\xf6\xcd\xb6\x5e\x2b\xa8\xf6\x6e\xcf\x84\x4a\xf7\xe8\x5e\x8e\xf2\xda\x19\xe8\x84\x8a\x16\x05\x2e\xc4\x05\xa6\x44\xda\xfb\x5c\xa0\x8e\xc4\x8f\x97\x32\x7a\xc5\x2c\x0e\x56\x21\x84\x02\xc7\x2a\x9a\x6d\xc1\xcf\x34\x4d\x58\xa7\x16\xa7\x8d\x7d\x75\x29\x68\x0b\xae", + "f8858144c6d709dd0689a526a548a43f17494950ba2ac20544799e8ea27201d78bce5b921e29a7b4029278e68341ef2a0ca4ba3894566b3c8f8950e3e545a689" + }, { + 73, + "\xca\x88\xdd\xdf\xc8\x76\xa1\x2f\x45\xf1\x95\x62\xbc\x9c\xa2\x50\xf4\x32\x67\xab\x25\x1a\x7f\x34\x5c\x3c\x02\x2e\x20\x14\x4e\x13\x56\x04\x07\x87\x62\xef\x5c\x8a\x8f\x03\x8c\xf1\xb1\xd6\xa9\x17\x09\xb5\x9d\xd0\x68\x39\x6a\x9e\x97\x1a\xb6\x28\xf7\x48\x86\xe7\x65\x38\x4a\x23\x60\x7c\x1a\x1e\x6e", + "4f3d9eeef349ca51a7e419af1686f42795abde58a85335ce68d496e81e4436a80a61dc143a4300008c23a3e71f4ba98743195a3694a8d02fee11bd314569abc0" + }, { + 74, + "\x0a\x78\xb1\x6b\x40\x26\xf7\xec\x06\x3d\xb4\xe7\xb7\x7c\x42\xa2\x98\xe5\x24\xe2\x68\x09\x3c\x50\x38\x85\x3e\x21\x7d\xcd\x65\xf6\x64\x28\x65\x01\x65\xfc\xa0\x6a\x1b\x4c\x9c\xf1\x53\x7f\xb5\xd4\x63\x63\x0f\xf3\xbd\x71\xcf\x32\xc3\x53\x8b\x1f\xdd\xa3\xfe\xd5\xc9\xf6\x01\x20\x33\x19\xb7\xe1\x86\x9a", + "6095c3df5b9db7ce524d76123f77421ce888b86a477ae8c6db1d0be8d326d22c852915ab03c0c81a5b7ac71e2c14e74bda17a78d2b10585fa214f6546eb710a0" + }, { + 75, + "\x20\xf1\x0e\xf9\xa0\xe6\x12\x86\x75\x34\x01\x71\xcd\x24\x8d\xf3\x0b\x58\x65\x57\x62\x0b\x61\x5c\xa3\x9a\x00\xdb\x53\x43\x15\xa9\x01\x2d\xbd\xbf\xd6\xa9\x94\x98\x6e\xb8\x29\xdb\xe6\xcd\xaf\x3a\x37\xd4\xf5\x9a\xc2\x72\x98\x74\x2c\x8f\x77\x7b\x6b\x12\x67\x7f\x21\xeb\x28\x91\x29\x57\x98\x68\x70\x5f\x27", + "b4ead3f860eabbd36c770d66c7356f8107acd1485c7c94178c2eaabd50266d7645d009972586ef83ed43ed92882137df5117b88f35231b894ec1741ae7501145" + }, { + 76, + "\x99\x5c\x8f\x74\x7e\xa4\x18\xf7\xd6\x3a\xba\x22\x60\xb3\x4a\xc3\xc7\xdc\xee\xbb\x78\x43\x8c\xa4\xb1\xf9\x82\xb7\xdb\x97\x98\xec\x1a\x7f\x32\x62\x22\x64\xcb\x02\x4c\x0d\x9e\x60\xe9\x55\xa6\xe1\xd6\x77\xc9\x23\x51\x88\x51\x99\x0a\x45\x9b\x76\x7d\x0f\x13\xcd\x80\x34\x60\xf6\x18\x70\xdb\x33\x91\xb4\x46\x93", + "a00a601edeaca83041dc452d438a8de549594e25d843c2cf60a0e009fb92d87abe28a72690ab657c8d35b43cd02d22ec0755de229d1f922fa6ca18a6d6c2aaae" + }, { + 77, + "\x0f\xeb\x23\xc7\xe4\xa1\x9b\xcb\xd7\x0b\xd3\x00\xd7\x6e\xc9\x04\x5d\x69\x6f\x8c\x96\x87\xf4\x9e\xc4\x15\x44\x00\xe2\x31\xd2\xf0\x86\x24\x95\x15\x0c\xf2\x50\xb6\xf1\x2f\x17\x2a\x7d\x13\x0f\x8f\xa5\xd1\x75\xbf\x2f\x25\xe2\x80\x17\x2c\xcd\xfb\x32\x79\x51\x70\x11\x65\x30\x27\x28\xa6\x19\xaa\x2f\x24\x26\x31\xc9", + "eeb6dee30c119fb1e1eb5c15ff2b32d8b9c7464a4e4cc6815cd251a6bae29b49961dd5c2fa9c44a9b142ca062c7072cbf3db04299b767789040196bf0c06aa76" + }, { + 78, + "\xac\x59\xa1\x10\x62\x3f\x1a\x64\x66\x6f\x16\x0e\xd3\x29\x26\x67\x6c\xb5\xbe\x25\xdd\x9d\x96\x2f\x44\x19\x51\xb0\xef\xcb\x5d\x6a\x67\xac\x1a\x4e\xae\x47\x3e\x49\xc6\x25\x78\x60\x72\x88\x53\xff\x41\x5c\x5e\x8e\xc7\x6a\x8a\x46\x2e\xcf\xd3\x43\xee\xac\x22\xda\xd8\x20\x72\x2c\x59\x73\x32\xfb\xfd\x94\xeb\xbd\x32\xc6", + "f65ea942ae0a47e73b02b1442e5b26083db79307f64dd34a039c476faf18d5c514bb77a2c412a6074a7afc326ea66c74e5705fe2abbabf274333325a15b61fd9" + }, { + 79, + "\x9e\x3e\x10\x77\xe1\x33\x3a\x1f\xb1\xaa\x63\x3c\xcf\x2f\x74\x65\x88\xad\x42\x64\x89\xea\x08\xdf\xf5\x51\x14\x38\xb5\xf4\xc0\xb1\x10\xd1\xa4\xd4\x7b\x54\x0a\x12\xb2\x1e\xa2\xaa\x07\x05\x78\xcc\xfa\x5c\x22\xfe\x0b\x74\x3e\xc0\xcc\x62\x1c\x6b\x3a\x03\xb7\x5f\x4d\x3e\xea\x5d\xce\x89\xe0\x32\x69\xaf\xcd\x96\x03\xd0\xdb", + "4b5c5df80c344c12388c723856cd06965b2190af652480476747dc2195ea3716f87c1762359583a5f31522f83f7833bec30f1f47d14540417dd463f5d258cd4a" + }, { + 80, + "\xe8\x81\xe3\x28\x4c\x79\xd8\xf5\x23\x7e\x69\x9e\x4f\xbc\xa8\x40\x90\xc6\x64\xbb\x53\x22\x9f\x58\xcb\x08\x42\xb0\x43\x67\x10\xc9\xb3\x29\xd9\x81\x91\xb8\xf0\x30\xe9\xc1\xdf\x89\xb0\x38\x58\xc1\x56\x9c\x6f\xf4\x9a\x7c\x07\xc4\xa2\x3a\x8a\x43\x4b\x0f\xde\x13\xbe\x4f\x94\xcb\x44\xee\x62\x9d\x5b\x44\xd3\x36\x09\x0d\x3d\xe6", + "147d8071c7871ef9256cff32aa63ea031404fa5ee4ec09c56afdd5da919b0cc84a9d35d142c417715203316011cc620cd6855bb117063a5e52867facc680d5f4" + }, { + 81, + "\xe5\x85\x21\x09\x89\x11\x50\x3d\xe8\x43\x11\x38\x7d\x37\x5c\x25\x92\x9e\x6e\x55\x07\x6e\xb6\x93\x4f\xd8\xf2\xb1\xbb\x7b\x96\x67\xfb\xd7\x6d\x5e\xe2\x04\x82\x87\x69\xa3\x41\xb1\xf7\x16\xda\x5b\xdf\xec\xe6\xc6\x2a\x9f\x4d\x4f\x98\x82\x67\xfc\xe1\xf5\x61\x55\x40\xdb\xe3\x75\x32\x4e\xef\x60\x7c\x91\x0d\x97\x6b\x45\xa5\xea\x5f", + "f97ba056fa41f43b8e1987072a09e828c71c5ff6ad4e37f9ab6b89e2a078933dd23052fa72c6615b613904259e9ff9b55ef7b923b89bc8752f6babddd256e117" + }, { + 82, + "\x37\x96\xcf\x51\xb8\x72\x66\x52\xa4\x20\x47\x33\xb8\xfb\xb0\x47\xcf\x00\xfb\x91\xa9\x83\x7e\x22\xec\x22\xb1\xa2\x68\xf8\x8e\x2c\x9f\x13\x3e\x5f\x85\x27\xf1\xb1\x84\x83\x0e\x07\xc3\x45\x8c\x83\xa8\xca\x9f\x9d\x9c\x69\x98\x76\x0e\x61\x06\x68\xba\x0f\x22\xe2\x2b\x65\x6a\x73\x7e\x97\x8b\x24\x6a\x17\x84\x0b\x7d\xc4\x09\x1d\xa8\x5f", + "c8a466199acbcbc93f2ce042968508c046901631e3118a2d0bf39a9b42b4197a379b3a86cdeca9df2de1a3eb71b79ae9bf2d6575eadf1878029c4093133f54d3" + }, { + 83, + "\x9a\xf6\x08\xd0\x31\xcc\xf3\x09\xd7\x27\x3c\x60\x7a\x8e\x5e\x36\x84\x0d\x44\x9b\x55\xdb\x5b\x13\xf0\x3a\xeb\x9a\xf4\x9f\xa7\xe7\xcf\x13\x83\xee\x2e\xd9\xc5\xa8\xb7\x51\x5f\x16\xfb\x1c\x7c\x84\xa6\x81\x59\x0b\xf9\x0f\x56\x59\x7b\x84\x4d\xb5\xeb\xee\x22\x3d\x78\x10\x9b\x72\x35\x07\x72\xf7\xc7\x2e\xa9\x96\x60\x3e\x1e\x84\xf2\xba\x5f", + "f0ded9495b4f64cac585be8a737cfa14247a4a81cdf7f01ebcb134ace71f5a83df2cd72e7773fea1e82beae17e13857372792c8231e2ab9fbeb633e399d5f0ae" + }, { + 84, + "\xd0\xdf\x1b\xdf\x1d\xf6\x20\x32\x41\x72\x2f\xb9\xc9\xc1\xcf\x74\x05\x01\x74\x97\xae\x15\x45\x38\xcc\xf9\x22\x4a\xd7\x52\xe6\xce\x1d\x4a\xe9\x48\x63\x9a\xca\x70\xcf\xe8\x6b\x2b\x06\x54\x3c\xb9\x91\x4e\xbd\x30\x85\xaa\x3e\x29\x63\xf6\xe9\xb9\x3d\x0b\x03\xa3\x1a\xe2\x6f\xcb\x9c\xa9\x74\xee\xe0\x16\xc0\x91\xa6\xfc\xac\x37\xb2\x1c\xc1\xd7", + "c2da3ea3c8a3fd88a5bc5dea2bc076f861abedefae5a5fbd941ddfd1c41cc3312eb2dc826c2c0f65414fe72ebee447d2f9b1a6a56302660d1f86632ee80a175f" + }, { + 85, + "\x8c\xbc\x94\x80\x55\x3a\xce\xf7\xbc\xdb\xa9\x71\x6e\xa8\xd6\x6b\x41\x31\x78\x09\x17\xde\x2b\x0b\x04\x80\x45\xfc\xb3\x2b\x5c\xac\x05\x48\x08\xe1\xfc\xe6\xe9\x4a\xd8\x51\xec\xb4\x7f\xe6\xcb\x80\x22\x25\xd3\x55\x1e\x08\xea\x12\x20\x93\xd0\x07\x8d\xad\xa5\x64\x21\x2e\xac\xf1\xd6\x39\x4e\x00\x07\xcc\x62\xa1\xd5\x95\xab\x14\xca\x08\xa2\x84\xbc", + "63b39b88ceb848188b37316e04560e75a5340ab8d417932d231c997e892b41daa69d9fe3e9a14dd19ccfbbfa01488c208e7b946cfaf16ca2b1bf7c8d8da4e6b2" + }, { + 86, + "\x38\xf1\x84\x44\x8f\x3c\xf8\x2a\x54\xca\xfc\x55\x6a\xff\x33\x6f\x23\xf9\x14\x9e\x61\x21\x34\xb3\xfc\x00\xc8\xa5\x64\x55\x65\x3d\x88\x64\x0b\x12\xf6\x90\x62\xb8\x43\x2c\x43\x35\xad\x8f\x7a\xb4\xff\x66\xcb\x7e\xb5\x4f\x33\x25\x61\xa3\x6f\x02\x4d\x92\xc3\xe2\x62\x76\xf4\xfd\x48\x61\x96\x28\xcf\xf8\x8e\x4b\x8e\x85\xcf\x14\xca\x47\x67\xed\x99\x0d", + "9a49265fc641c59f1a91872cdae490d3da73c0c60fd59648e1d17dba1a647a5b95629392bb4ff5163d1a3cb45427c1437a3b2e1d9f030c0a8bcc5ed22da9e2ed" + }, { + 87, + "\x70\x90\x06\x18\xb1\xe9\xe9\xdb\x62\x29\x6f\xb6\xc6\x59\x0c\x9f\x10\xb0\xa6\x32\x76\x5c\x48\x9c\x88\x7f\x1a\xb7\xc0\x77\x91\x76\x5a\x62\xe3\x84\x65\xe1\xbe\x28\x1b\x1d\x39\x6c\x6e\x08\x0b\x7e\xe3\xe6\xfa\x56\xa3\x0b\x97\x99\xd0\xe6\x29\xbe\x15\x3e\xe7\x6f\x81\xbc\x6a\x32\x95\xaa\x61\x48\x9b\xfa\x87\xd5\x3a\x8a\xd2\x42\x48\xa6\xed\xe0\xdf\xcf\xe9", + "1c8c3357ff1f8d6ac4defb3af462a73e09159e3a20c6506edd8cd3052df941c81f68c5fbb893912619e28640977fe8eaae8e9d5d4e7d5f132552cefab4540bac" + }, { + 88, + "\x4e\x6d\xda\xe0\xd8\x05\xaf\xcd\x10\xa0\x55\xbc\xe5\x84\xc8\x48\xd0\x50\xfb\x29\xfe\x8f\x1c\x64\xb1\x8e\x1a\xbf\xe4\x6b\x65\x78\x2e\x6f\xf5\x36\xe8\x9d\x8d\x40\x92\x8b\x41\xed\x73\x71\x36\x5c\x80\x80\xa9\x64\x7f\x75\x32\xce\x6c\x6d\x4a\xc2\x1c\xfb\x0c\x80\x20\x78\x38\x51\xec\x9a\x7d\xbc\x39\x48\xf8\xfc\xa7\xad\xf8\xb2\xa7\x8c\x04\xd8\x98\xd3\x1f\xf6", + "5c2f996c779b91b3c4639311f54fabbdde7e2212b53dbae4828c8399588fc00d3b2ae60918aaaf6bb48bc757e52b2bcea84f5d15bf4ec25d5519fb54f6f26e1b" + }, { + 89, + "\x69\x68\x25\xf6\xd6\xea\x81\x73\xec\x47\xd0\x95\x9a\x40\x1c\x4d\xdf\x69\xf8\xf0\x8d\xdd\x67\x8a\x4d\x2f\xf9\x76\xe3\xa4\x37\x2b\xb3\x9f\x41\x59\x84\x5c\xb6\x35\x85\xe1\xd4\x10\x8d\x32\xe1\x2f\xa7\xc5\xc9\xd7\xce\x35\x08\xa7\xf5\x3a\xca\x2b\x4b\xd9\x51\xad\xbc\xd8\x98\x4e\xbb\x75\x36\x56\x3f\x58\x84\xc9\x0b\xc5\x02\x3b\x33\x16\xf7\xe4\xdc\x69\x58\xf7\x43", + "3ce940ca96b00011375daa95c65f66907d69b3eb3b8d779e6fc971afcc05e990bc4c541f434590f6b18b68c080d0f24475a3e764e9cb85343301314ee2fb661e" + }, { + 90, + "\x79\xec\xdf\xd4\x7a\x29\xa7\x42\x20\xa5\x28\x19\xce\x45\x89\x74\x7f\x2b\x30\xb3\x64\xd0\x85\x2c\xce\x52\xf9\x1e\x4f\x0f\x48\xe6\x1c\x72\xfa\x76\xb6\x0d\x30\x02\xca\xe8\x9d\xfc\x55\x19\xd3\x43\x0b\x95\xc0\x98\xfa\x46\x78\x51\x6b\x5e\x35\x51\x09\xea\x9b\x37\x45\xaa\x41\xd6\xf8\x20\x6e\xe6\x4a\xe7\x20\xf8\xd4\x46\x53\xb0\x01\x05\x7f\x2e\xba\x7f\x63\xcd\x42\xf9", + "ba3d0fe04470f4cf8f08c46d82ae3afd1caea8c13bebbe026b5c1777aa59860af2e3da7751844e0be24072af48bc8a6fd77678aaee04e08f63395f5c8a465763" + }, { + 91, + "\x92\x63\xfe\x75\xe8\xf6\xc7\xd5\xd6\x42\xe2\xca\x6a\x6e\xea\x4f\x44\xe9\xa0\xf2\x49\x51\x3e\xd7\x9c\x94\x09\xff\xca\x55\x26\xca\x44\x91\xae\xbb\x13\x82\x05\x7c\xc7\xc3\x67\x22\xb0\xb6\xc3\xb1\x51\x23\xcd\xe3\x12\x21\x4f\x25\x35\x3a\xbf\xe3\x0b\xca\x17\x05\x68\xa8\xe1\xba\x54\x08\x91\x74\x03\xa0\x18\x34\x08\x0a\xb6\x07\xc5\x6a\x10\xd0\x26\x50\x82\x49\x8f\xe0\xb6", + "7736d7a7fc1eb05857ce7d88abfffa87f58c670bfdfc0a8031f60f379e4b6ad94ac8f13ffe28c697809b5cfac7f13be01e7496a85237c4025539051fb2e32fb6" + }, { + 92, + "\x78\xc1\x7b\xfe\x0e\x02\xeb\x52\x6d\x1a\x44\xa1\xac\x12\x7b\xe0\x82\x18\x14\x52\xb6\x25\x39\x4b\xd6\xdc\x09\x3a\x2c\xb4\x32\xe6\xee\x59\xc2\xf8\xb5\x50\x3a\xba\x30\xda\xe4\x1e\x1a\x1c\x67\x02\x69\x7c\x99\xb2\xc9\x4e\x94\xaf\x48\xb0\x0c\xaf\x53\xb2\xe0\xe4\xe1\xbb\xee\x81\xee\x28\x2c\x7b\x2b\x35\xf5\x8c\xf4\x21\xa0\x7e\x82\x8d\x57\xa6\x62\x26\x26\xaf\x25\x83\x53\x99", + "b56b6e343166328523e0d1693e5174da643ae83cf69c85a7b3c3bee247b77b84702069d9e6b4cab03bf17fe612009bf4239683ca78ca7e876aca7d07603ba714" + }, { + 93, + "\x29\x8b\xb3\x04\xa9\x20\xf9\x60\x44\x7d\x8f\xd3\x8b\x06\x1b\xf8\xfe\x4a\xc1\xf8\x71\xd8\xa0\xfe\xb4\x54\x9f\xeb\x72\xca\x69\x4a\x5a\x41\xb6\x86\x7d\x94\xcd\x5a\xf7\x7d\x46\x8a\xd2\xf3\x15\xd1\x27\xb6\xc4\x1a\x86\x28\x00\xf3\x98\x5e\x57\x3e\x03\x77\x40\x29\x8e\x2c\x5c\x61\x86\xa9\xfb\x83\x60\x9b\xe2\xd4\x9f\x8b\x4c\x31\xf9\x6a\x2e\x49\xb5\x6d\xbf\x09\x57\x1b\x38\x58\x7f", + "34e3878627904ffbbbd85266cc973c34f931e3cab5d4c31f841c553dd69f84838206067df4f9f3b9102001be19267151e673f5c2d4c2f8438a6999a0a325487d" + }, { + 94, + "\xa3\xcf\x71\x4b\xf1\x12\x64\x7e\x72\x7e\x8c\xfd\x46\x49\x9a\xcd\x35\xa6\x40\xdd\x39\x3d\xdd\x26\x3c\xd8\x5c\xf6\x22\x5f\x59\x89\x0a\x06\x86\xda\xd1\xc5\x4e\xb8\xd8\x09\xb8\x1c\x08\xa9\x8d\xba\x13\x1b\xbd\xd6\xfc\xe8\xff\x59\xd9\x5d\xb8\x24\xd8\x83\x1e\xa4\x80\x52\x9d\xa7\x39\x22\x7a\x6e\x0f\x62\xb6\x03\xb3\x8c\x35\xcd\xc2\x58\x1f\x61\x4a\x31\x87\x9b\x8b\xe5\x4a\xee\xfa\xa0", + "6f230ae4903ddbef0ba384c2e3506eab318bfd1a46ea76099f65a3fd529c91bc2865b9fd943e346de64626b8529f9db1377bf2c5e0129c66b50c6a5cfb364b3a" + }, { + 95, + "\x0a\x42\x7a\xe5\x5e\xf3\xa7\xe6\x04\x4a\x08\xcf\x61\x28\xcb\xaa\xab\xfd\x77\x6c\x4e\x93\x74\x70\x8f\x2e\xce\x24\x6f\xd7\x36\x03\xd2\xf5\x4a\xc3\xe0\x1d\x16\xcf\xac\x2b\xda\xf7\x13\x92\x0d\x66\xe8\xf0\xa3\xd5\x4e\xe6\x8c\xff\x64\x26\x7d\x55\x28\xcd\xf2\xf2\x95\xf4\x74\xd1\x0f\x81\x17\x3e\x01\x43\x48\x8a\xc5\x3f\xc5\x03\xc4\x44\xed\x23\xde\xc6\x3a\x08\x0c\xe9\x0c\x24\x43\xdb\xa8", + "f6bbe5d0cf13ddf41c1436748a5d1ccae2948547b452c2171c7c8e8b66c6ae4de3c0e8b2962bcb60d3de3608479f80e455c9024d9716c38f6f1206861ab1eaac" + }, { + 96, + "\x2c\xbb\xb8\x75\x11\xf4\x94\x8e\xfe\xc3\xa6\x1b\x51\x1e\xde\xdb\x1d\xda\x8b\x6e\xcf\xc0\x21\x0c\x11\xe4\x3a\x77\xee\x32\xdc\x2e\x37\x4a\xfa\xe4\x26\x8e\x3d\x30\x42\x78\x04\x86\x82\x32\xa9\x66\xb5\x60\x06\xd3\x21\x40\x37\x07\x6b\xf6\xa2\x65\xb7\x21\x35\xaf\x0f\xb2\xef\x79\x09\xfe\xa2\xde\xa4\x12\xf7\x71\x74\x46\xb2\x76\xff\x15\x37\x53\x66\x2b\x4d\x41\x48\xc0\x23\x47\xe3\x25\x91\x69", + "76897b87a8a1cf835c434f6d391c9e5227351af9d3e20a3389c796b98b424281a59068d9c8d567ec2bebc435b0126b059e2d86394a9854d6611e1c922f385496" + }, { + 97, + "\x2b\x23\x32\x4c\x99\x92\xf6\x0a\x7f\xc0\x10\x15\x9a\x03\xcb\x9a\x2b\x29\x0d\xf4\xfa\x6a\x82\x35\x9b\x9a\xf6\x02\xf0\xa4\x03\xa5\xef\x33\xed\x5d\xa5\xb2\xca\xf8\x7b\x77\xe6\xa4\xb9\x3b\x65\x03\x48\xce\x2a\x7d\xbc\x08\xf8\xda\x92\x03\xd7\x10\xb5\x87\xba\x59\x47\xc6\x5e\x89\x9f\x4a\x75\x9f\x8e\x2b\x04\x9a\xe7\x85\x0a\x8e\x3e\x29\x62\xf6\xef\x93\xea\x4c\x63\x1d\xe5\xd7\x8e\x72\x9e\xc5\xbc", + "3beea0b373ed09cf1c919c51d86d642c9125e0ee81698dc4cbadf02e9e6925efb562fd9b87301a6377ca192be79c4118deabc450b54639000c2e312945451fb5" + }, { + 98, + "\x40\x22\xf9\x30\xc7\x03\x3b\x00\xd9\x86\xc6\x5f\xf6\xbb\xbd\xf9\xeb\xd0\xe5\x8c\x52\x84\x4f\xf6\x58\xdf\x38\x93\xc3\x20\x2d\xc5\x33\xf8\x73\xd4\xa7\xf5\xa5\xf9\x44\x41\x9f\xb5\x52\x8c\x9b\x67\x88\x47\x9a\x1e\x89\x13\x06\xac\xae\x79\x95\xfc\x06\xdb\x70\xa5\x9b\xaa\x95\xbe\xf7\xda\x79\xf5\xe7\x93\xf2\xdb\x7f\x2a\x55\x82\x5e\x4f\xdb\x4a\x34\x88\x4a\xf8\x81\xde\xd1\x08\x9f\xd5\x33\x45\x02\xa2", + "0358775bbb733ccc49e78f544aeee512370d480d0e13c7e8d5c444c423e592146b45fdb91a1b694d35e36b60e4bc8397fca8bb9790e619339778b9cd1abe3fe9" + }, { + 99, + "\x1c\xb7\x7b\xa4\x3c\xe7\x7e\x23\x6b\x9f\xc9\x25\xf5\x89\xb1\xc0\x70\x78\x0a\x84\xf9\x9e\x8f\x50\xc1\xff\x84\x6a\xc9\x25\x99\xcf\xe9\x16\x12\xc8\x17\x83\x25\xbe\xe6\x42\xa3\x4f\x4d\xff\xdb\xa2\xaa\x2e\xbc\xf7\x06\x43\x39\x82\x9b\x26\xf2\x79\x93\xe1\x10\x6c\x13\x9c\x70\xd5\x78\xcc\x05\xf0\xe1\xa7\x77\xcc\xed\xdb\x10\xa2\xc6\x7f\xd9\x67\x5e\x4a\x00\x9d\xf8\x03\x7d\x6e\xeb\x38\xf5\xfb\xa2\x33\xdf", + "6502f46551a3fab3a96428fb97801d7a4aa2f17fef6603238df84e17c74309ed3d9489c8b16a9384ee634a3f86d0b3ba9a4dbc9c51ec8bd4bf8d61de6d3d87d7" + }, { + 100, + "\x52\x16\x7d\xe2\xd6\xc5\x02\xd9\x9f\xa1\x0c\x27\xb2\xab\x62\x03\xbd\xeb\xc2\xca\xfb\xbf\xde\xf1\x58\x72\xa4\x3d\xd6\x10\xc2\x36\x2f\x79\x6a\xd9\xbc\xb5\x52\x8d\x95\x87\x00\x58\xfa\x45\x44\x53\xf1\xe6\x06\x5b\x31\x5d\x41\x0a\x3f\x26\x50\xe5\xd7\x1e\x69\xd7\x8d\x97\x67\xdf\xb4\xac\xcc\x05\x7f\xd2\x06\x92\x66\xb0\xf1\x80\xcb\x31\x9e\x30\xde\xd7\x53\x5b\xbe\x52\xd2\x4b\xe1\x51\xde\x4b\xb5\x98\xfc\x5c", + "25cb3ed3983a91b4cf37a65193916c5e3e211b63e943e2f7b50a85d349a463b941aad33eff16561bdfdc92fda06a4e1d94b162de48f06d3c626940b31020925f" + }, { + 101, + "\xce\xde\x66\x97\xd4\x22\xdd\xaa\x78\xe2\xd5\x5a\xe0\x80\xb8\xb9\xe9\x35\x6c\x69\xbc\x55\x82\x01\xa2\xd4\xb0\xb3\x19\x0a\x81\x2c\x27\xb3\x4b\xbc\xee\x3a\x62\xb7\x81\x37\x8b\x1b\xf6\x36\xb3\x72\xbc\xba\xe1\xfa\x2f\x81\x6a\x04\x6a\x0a\x64\x9a\x5c\x55\x5c\x64\x1f\xea\x4c\xcd\x84\x1c\xc7\x61\xf3\x8f\x77\x79\x72\xf8\xc9\x1b\x03\x24\xe7\x1c\x33\x3c\xe7\x87\xf0\x47\x41\x43\x9b\xf0\x87\xef\x5e\x89\x50\x11\xc0", + "0be42a25d77ac6ad995c6be48e783380bad25a61732f87cefb0cce1a769cd69081f494a1a12d657664ef2b4d9c41f2ee83f6e9a84327d8756af9f985595e7d3b" + }, { + 102, + "\x56\xd1\x8d\x3e\x2e\x49\x64\x40\xd0\xa5\xc9\xe1\xbc\xb4\x64\xfa\xf5\xbc\x70\xa8\xb5\x62\x12\x4f\x5f\xc9\xe9\xde\xb5\xfe\xe6\x54\x4b\x94\x5e\x83\x3b\x8b\x5d\x13\x1b\x77\x3e\xcb\x2c\xdd\x78\x0c\xd4\xe1\xbb\x9e\x4f\x1e\x3c\xb0\xa1\xd6\x4d\x19\xcf\x4b\x30\xe4\x4e\x6c\x2d\x0c\xbc\xb4\xe2\x84\xce\x50\xdb\x7a\x8a\x80\x62\xdd\xb6\x3f\x98\x1d\x90\x26\xc5\x32\xbf\x8e\xed\xdf\x8a\xf5\xa4\x38\x48\xa3\x22\x62\x17\x8c", + "982dc61c91a93770582eee8025aa55da8e9edb966bf5cf70d4a6534c0d53a2789a8c4fb65b7fed478cda02ed1e0d198d85c5c735b2417c5fab5d34e969fc8e7e" + }, { + 103, + "\x25\xa7\x32\x0d\xfa\xec\x5a\xf6\x5d\xa4\xd0\xf8\x68\x8e\x29\xe8\xe9\x55\x32\xec\xc1\x66\x79\xea\x8a\xff\x0f\x40\x7d\x89\x8d\xb6\x92\x28\x55\xb0\xe8\x90\x1a\xa9\x68\x1a\xa3\xdc\xa6\x17\xcb\x44\x07\x64\xcd\xc7\x29\x3f\xbe\xaf\x7f\x58\x5b\x59\x3c\x2b\x05\x31\x73\x8e\x0a\xde\x7c\x86\x26\xb9\x99\x5f\x4a\x84\xd9\xfc\x9b\x59\x3d\x6b\xbe\xe0\x1a\xbc\x53\xc5\xbe\x14\xbf\x69\x56\xfd\x2f\xd8\x10\x00\xda\xfc\x7c\x76\x86", + "749c928c3d5510925bfe98659025b0ed7c01acd4d59a9bf1c54863a088091771dc9d407bdbf83b0f44b0902e10349ba79c84d0981d5e8c4f5c733a117fed0790" + }, { + 104, + "\x3d\x71\x77\xb2\x8f\xfd\x91\x6e\x7e\x06\x34\x89\x58\x33\xba\x0b\xd9\xe0\x65\x3d\xf2\xcc\x42\x02\xc8\x11\x53\x6a\x00\x5a\xec\x85\x3a\x50\x5e\x75\xdb\x55\xd3\xc7\x10\x75\x79\x04\x10\x99\xe3\x82\xa1\xfe\xac\x80\xdd\xe6\x5d\x72\x36\x8e\x90\x9a\xb8\x5f\x56\xd8\x8e\x68\xd7\xc3\xc8\x0c\x38\xf8\x5b\xf8\xc2\xb3\x69\x59\x40\x9c\xc3\x4b\xa8\xe3\xad\x94\xfe\x8e\xe1\x92\x76\x12\xd6\x72\xd9\x21\x41\xa3\x29\xc4\xdd\x8a\x88\xa9", + "14a331508cd7d94fcce56a66bf65f20870a281c8442f8dbd4c2371454a2b66f8d0994a0b67692e771efc6a5e0b887acae7d6f4ec7338e1aa89f2abc7034c4e4c" + }, { + 105, + "\xc0\x33\xe4\xa5\x12\x29\x7c\xae\xcd\xbe\xad\x89\x2b\x11\xa9\xf7\x00\x7a\xf9\xa7\x4b\xca\xb8\x9e\x0b\xd4\xff\xdd\x54\x2c\xa0\x3e\xa1\x2e\x17\xa0\x6c\x42\xbd\x43\xfc\x5f\x3f\x75\x7f\xce\x4f\x6f\x58\x31\x99\x7a\xba\xc3\xf9\x56\x76\xe1\xeb\xdb\x11\xca\x43\xe1\x1a\xa3\x1e\x5e\xba\xbe\x18\xce\x8d\x1b\xbf\xd8\xb0\x2f\x48\x2e\x1c\xe5\x81\xb5\x32\xe3\x07\xe6\x96\x0e\xb9\x74\x41\x50\x6c\x2e\xd2\x99\xe1\x28\x25\x23\xf4\x15\x27", + "95ac9b7d22aa458921874c4b4331e7d64761853217c3f83c601abcbccd7e2eaa6ca6ce9a22ebcfe5046d52f8a09097f043ab8bc59243fd770090bb432c3155e9" + }, { + 106, + "\x69\xff\xf0\xf1\xa3\xdb\xfb\x36\xe3\x2f\x02\x58\x19\xfa\x99\xea\x9a\x0e\xda\xef\x73\x14\x5b\xf7\xfc\xd0\x5d\x8b\xb0\xa6\x46\xcb\x3b\x5d\x52\x56\xd5\x24\x85\x6a\xcf\xd2\xe4\x4d\x6b\x72\xe4\xeb\xf1\xff\x23\xc0\xff\x6c\x56\xf8\x21\xe7\x82\xd5\xa1\x5f\x70\x52\xa1\x44\x5b\x06\x66\x8e\xeb\x4a\xf7\x00\x67\x9e\xe7\xae\x26\x49\x6f\xbd\x46\x40\xc0\x6a\xa1\x49\x96\x4d\xfd\x60\x11\xdf\x83\x5a\xc1\x3b\x73\xc8\xff\x21\x15\x1e\x84\x40", + "45d4daa652558d1c12beb0f5662c712f325b4c802fc6eb9ee039c949d002bb786f1a732712be941f9c5c79b3e5c43064d63a38578e5a54ee526acb735b9ad45f" + }, { + 107, + "\xb2\xc4\x39\xc9\x7a\xb7\xc6\x37\x36\xb3\x79\x63\x24\xd6\x8e\xeb\x7a\x47\x1e\xd1\x42\xbd\x96\x22\x68\x41\x67\xd6\x12\x34\xff\xf8\x2f\x93\xf9\x07\x53\x7a\x90\x9b\xc2\xe7\x5a\x4b\xcb\xc1\x33\xcf\x57\x19\x76\x62\xc1\xaf\x74\x6a\xe8\xb8\x1e\x5b\x83\xde\x05\xd9\xb5\x89\x85\x1d\xe2\x5d\x3c\x99\xc0\x04\xc1\xdf\xb1\x2d\x93\xbf\x50\xd4\x50\xaf\x49\xc4\x28\x71\x6f\x5b\x90\xef\x08\x8e\x3b\x6a\x6b\x2c\x46\xd3\xce\x67\xb3\x79\x59\x90\x18", + "c48ec83be5fa669e6ec8db90aca9676cfe2ec0d5e8e7a2431687bb953c0a300be3db4075cca3bac4dfa4d971baf0fa1aff46639db4b238856ff36d1dfcd520f1" + }, { + 108, + "\xc0\x16\xf5\x22\xf2\x6b\x74\x70\xe9\x22\xb9\xa2\x87\xe6\xd4\x5f\x6c\x28\x81\x3b\x68\xc1\x45\x7e\x36\xd9\xba\x26\x67\x08\x27\x2f\x9c\xbc\x54\x11\xf8\xdb\x9d\x8b\xd5\xa9\x44\x9f\xb6\xeb\x0c\xde\x7d\x4d\x03\xe5\xdf\x01\x9f\x28\x14\xa9\x0c\xee\xd3\x77\xc5\x9d\x7d\x92\x62\x38\x99\xbc\xb0\x26\x80\x33\x07\x35\x59\xd4\xd8\xde\x48\x86\x86\xcb\xe3\xd6\x77\x96\xe6\xdf\x6a\xd4\x27\x6d\x0b\x52\xcc\x62\xc4\x9e\xbb\x58\xd7\xc9\x52\x87\xaa\x6c", + "7402f1a99b47e102b3b73140c6771b07ee6c33b3715e9c4027c441bee40511b735d95e508baea78da26fded9b7038e9a53defa58448aba40dc1e62d7ec592107" + }, { + 109, + "\xa7\x66\xb2\xa7\xef\x91\x67\x21\xf4\x67\x7b\x67\xdb\xc6\x5e\xf9\xb4\xd1\xbd\xa1\xad\x4e\x53\xfc\x85\x4b\x02\x36\x44\x08\x22\x15\x2a\x11\x19\x39\xe5\xab\x2b\xa2\x07\x71\x94\x72\xb6\x3f\xd4\xf4\xa5\x4f\x4b\xde\x44\xa2\x05\xd3\x34\xa2\xd7\x2c\xfe\x05\xab\xf8\x04\xf4\x18\x41\xb8\x6d\x36\x92\x0b\xe6\xb0\xb5\x29\x33\x1a\xc1\x63\xa9\x85\x55\x6c\x84\x51\x1e\xc9\x86\x43\x9f\x83\xe1\xd7\x31\x1f\x57\xd8\x48\xcf\xa0\x2d\xf9\xea\x0c\xf6\xb9\x9a", + "ddd60f93a3babc78299cf763e7919d45ac6f479700e1adb05ab137acdf89c1521ecb9dfeacd091e58ca57a1db964a9c3cd1fa39192cc1e9f734caa1c5fa62975" + }, { + 110, + "\x10\xf2\xbe\x77\xa4\x05\x57\x71\xa6\x70\x07\xcd\x86\x30\xe3\x23\x0e\x38\x28\x84\x99\xcb\x16\x03\x80\x29\x01\x74\xd6\x6d\xa5\x74\x55\xb6\xba\xaa\x97\x85\xc8\x4c\x8a\x66\x3d\xe4\x1e\xd3\xbd\x54\x40\x55\xb9\x17\x0c\xec\x43\xcb\x3e\xb1\x20\xec\xea\xba\x1f\xe3\x6e\x3e\xaa\x3f\xa4\xf9\x9b\x42\x5c\xd2\x51\x9f\x09\xbc\x02\x82\xba\xda\x52\xd1\x4c\xe6\x25\xb1\xde\xd3\xb2\x4d\x86\xb1\xda\xd3\x42\xd2\xb7\xbe\x32\x2b\x77\x5b\x04\xfc\x6b\x86\xaf\xb4", + "a872fa33d463b3343cec57c20c66979c33e1ad067bfc703454696aab5dd0003bc194318f4a8ebbc74503feb7211a472dadee991efe3e38f21a1310f8a76eac80" + }, { + 111, + "\x32\x45\x33\xe6\x85\xf1\x85\x2e\x35\x8e\xea\x8e\xa8\xb8\x1c\x28\x8b\x3f\x3b\xeb\x1f\x2b\xc2\xb8\xd3\xfd\xba\xc3\x18\x38\x2e\x3d\x71\x20\xde\x30\xc9\xc2\x37\xaa\x0a\x34\x83\x1d\xeb\x1e\x5e\x06\x0a\x79\x69\xcd\x3a\x97\x42\xec\x1e\x64\xb3\x54\xf7\xeb\x29\x0c\xba\x1c\x68\x1c\x66\xcc\x7e\xa9\x94\xfd\xf5\x61\x4f\x60\x4d\x1a\x27\x18\xaa\xb5\x81\xc1\xc9\x49\x31\xb1\x38\x7e\x4b\x7d\xc7\x36\x35\xbf\x3a\x73\x01\x17\x40\x75\xfa\x70\xa9\x22\x7d\x85\xd3", + "3b26c5170729d0814153becb95f1b65cd42f9a6d0649d914e4f69d938b5e9dc041cd0f5c8da0b484d7c7bc7b1bdefb08fe8b1bfedc81109345bc9e9a399feedf" + }, { + 112, + "\x51\x89\x85\x97\x7e\xe2\x1d\x2b\xf6\x22\xa2\x05\x67\x12\x4f\xcb\xf1\x1c\x72\xdf\x80\x53\x65\x83\x5a\xb3\xc0\x41\xf4\xa9\xcd\x8a\x0a\xd6\x3c\x9d\xee\x10\x18\xaa\x21\xa9\xfa\x37\x20\xf4\x7d\xc4\x80\x06\xf1\xaa\x3d\xba\x54\x49\x50\xf8\x7e\x62\x7f\x36\x9b\xc2\x79\x3e\xde\x21\x22\x32\x74\x49\x2c\xce\xb7\x7b\xe7\xee\xa5\x0e\x5a\x50\x90\x59\x92\x9a\x16\xd3\x3a\x9f\x54\x79\x6c\xde\x57\x70\xc7\x4b\xd3\xec\xc2\x53\x18\x50\x3f\x1a\x41\x97\x64\x07\xaf\xf2", + "c00926a374cde55b8fbd77f50da1363da19744d3f464e07ce31794c5a61b6f9c85689fa1cfe136553527fd876be91673c2cac2dd157b2defea360851b6d92cf4" + }, { + 113, + "\x91\x59\x76\x72\x75\xba\x6f\x79\xcb\xb3\xd5\x8c\x01\x08\x33\x9d\x8c\x6a\x41\x13\x89\x91\xab\x7a\xa5\x8b\x14\x79\x3b\x54\x5b\x04\xbd\xa6\x1d\xd2\x55\x12\x7b\x12\xcc\x50\x1d\x5a\xaa\xd4\x76\xe0\x9f\xa1\x4a\xec\x21\x62\x6e\x8d\x57\xb7\xd0\x8c\x36\xcd\xb7\x9e\xea\x31\x4b\xdd\x77\xe6\x57\x79\xa0\xb5\x4e\xab\x08\xc4\x8c\xeb\x97\x6a\xdf\x63\x1f\x42\x46\xa3\x3f\x7e\xf8\x96\x88\x7e\xa8\xb5\xdf\xa2\x08\x7a\x22\x5c\x8c\x18\x0f\x89\x70\x69\x61\x01\xfc\x28\x3b", + "3cd3380a90868de17dee4bd4d7f90d7512696f0a92b2d089240d61a9d20cd3af094c78bf466c2d404dd2f662ec5f4a299be2adeadf627b98e50e1c072b769d62" + }, { + 114, + "\xfe\x2d\x8a\xe2\x00\xe6\x65\x7f\xdc\x74\x94\xaf\x5a\x12\xb2\xae\x94\x03\x48\xf1\xf9\x83\xf0\xba\x98\xfe\xbb\xe9\x9c\x80\xd1\x15\x12\x6d\x57\xdb\xf3\x72\x96\x76\x5e\xbb\x59\x90\x25\x66\x96\x58\x8b\x38\x51\xd5\x4c\x8f\xbe\x7a\xde\x98\xa6\xfa\xf7\xc2\x0b\x5e\x4f\x73\x0f\x54\xa7\xf9\x12\xca\x0a\xc3\x1b\xbb\x53\xd1\x79\x49\xef\x69\xaa\x0d\xe4\x0c\x7b\xab\x12\xa8\x71\xa9\xb9\x0f\x68\x81\x3c\xa8\x7a\xf4\x25\x64\x22\xa2\x68\xf4\xa1\xd8\xec\x3a\xa1\xa9\x47\xfd", + "8025a8608df0f6a01c34cdec012d4cb25852e1b100b68172fc4e86ac8b7126b64859cb9e767a7e59060989cedbd925afc475ca7369bd43f85ae590e224e036dd" + }, { + 115, + "\xdc\x28\x48\x4e\xbf\xd2\x93\xd6\x2a\xc7\x59\xd5\x75\x4b\xdf\x50\x24\x23\xe4\xd4\x19\xfa\x79\x02\x08\x05\x13\x4b\x2c\xe3\xdf\xf7\x38\xc7\x55\x6c\x91\xd8\x10\xad\xba\xd8\xdd\x21\x0f\x04\x12\x96\xb7\x3c\x21\x85\xd4\x64\x6c\x97\xfc\x0a\x5b\x69\xed\x49\xac\x8c\x7c\xed\x0b\xd1\xcf\xd7\xe3\xc3\xcc\xa4\x73\x74\xd1\x89\x24\x7d\xa6\x81\x1a\x40\xb0\xab\x09\x70\x67\xed\x4a\xd4\x0a\xde\x2e\x47\x91\xe3\x92\x04\xe3\x98\xb3\x20\x49\x71\x44\x58\x22\xa1\xbe\x0d\xd9\x3a\xf8", + "615115d2e8b62e345adaa4bdb95395a3b4fe27d71c4a111b86c1841463c5f03d6b20d164a39948ab08ae060720d05c10f6022e5c8caf2fa3bca2e04d9c539ded" + }, { + 116, + "\x5a\xf8\xc0\xf2\x6d\xb4\xe9\x9b\x47\xec\x2e\x4a\x01\xa7\x86\xe7\x78\x99\xe4\x6d\x46\x4a\xc3\x37\xf1\x75\x02\x7b\x61\xae\xf3\x14\x98\x48\xaf\x84\x9d\x76\xac\x39\xb9\xb0\x91\x0f\xe6\x59\x48\x17\x85\x9e\x55\x97\x4f\xa1\x67\x51\x8e\xd7\x2d\x08\x8d\xae\x6b\x41\x4d\x74\x4d\x47\x79\x74\xfb\x71\x9c\x62\x6d\xa7\x92\xf9\x81\x23\x3d\xe2\x4b\x75\x79\xd8\xac\xca\x51\x0a\x26\x6d\x73\xc0\xee\x8e\xe1\x42\x43\x43\xea\xf6\xff\xcc\x59\xc8\x6c\x1b\xec\xce\x58\x94\x07\x2c\x6c\x11", + "09da284d5b6556508be54c8ab6c97bbd472995c6bbd585917ecdb54ea9167208daaa070a7b2b7d8e93ce1315f0d1ef8d69667429c44dc5ee1499de57b229a398" + }, { + 117, + "\x49\xcd\x0b\xa0\xdf\x5b\xb3\xf4\x3f\x68\x46\x4e\x3e\x83\xe9\xcb\xd5\xd5\xee\x07\x7f\xfa\x55\x91\xe3\x0f\x93\x9c\xb3\x0c\x93\xf7\xd4\x54\xfb\x3f\xbf\x8b\xb0\x53\x27\xa8\x9c\x08\xdc\x4b\xaf\x1e\xef\x50\x23\x73\x17\xa4\x05\x77\x53\x57\xf1\xe0\xd1\xf3\x1d\x9f\x0f\x0d\x98\x12\x40\x19\xd4\x7b\xf1\x83\x63\xb1\xec\xfb\xfe\x15\x5c\x10\xcb\xc8\x33\x00\xe0\x1b\xc9\xce\x03\x47\xc5\x96\xb3\x5f\x41\x1e\x6d\x82\x29\xad\x28\x55\xe4\x20\x22\xb0\x37\x3a\xde\x98\x66\x3c\x6d\x6e\x9c", + "30cbf0679a97c871574d2fc05d7aa760c6bc8a864b7d246c39b9e812f9b7ff7b4ef5197dd5b69493306688b8564de1ad47d75505c913ba6a78788f8caf5788bd" + }, { + 118, + "\xa8\xa3\x7d\xfc\x08\x3a\xd2\xf4\x7f\xff\x46\x87\x38\xbf\x8b\x72\x8e\xb7\xf1\x90\x7e\x42\x7f\xa1\x5c\xb4\x42\x4b\xc6\x85\xe5\x5e\xd7\xb2\x82\x5c\x9c\x60\xb8\x39\xcc\xc2\xfe\x5f\xb3\x3e\x36\xf5\x70\xcb\x86\x61\x60\x9e\x63\x0b\xda\x05\xee\x64\x1d\x93\x84\x28\x86\x7d\x90\xe0\x07\x44\xa4\xaa\xd4\x94\xc9\x3c\x5f\x6d\x13\x27\x87\x80\x78\x59\x0c\xdc\xe1\xe6\x47\xc9\x82\x08\x18\xf4\x67\x64\x1f\xcd\x50\x8e\x2f\x2e\xbf\xd0\xff\x3d\x4f\x27\x23\x93\x47\x8f\x3b\x9e\x6f\x80\x6b\x43", + "8e1c91729be8eb40226f6c58a029380ef7edb9dc166a5c3cdbcefe90bd30d85cb7c4b248e66abf0a3a4c842281299bef6db88858d9e5ab5244f70b7969e1c072" + }, { + 119, + "\x36\xaf\x17\x59\x54\x94\xef\x79\x3c\x42\xf4\x84\x10\x24\x6d\xf0\x7d\x05\x93\x6a\x91\x8a\xfe\x74\xcd\x00\x5e\x53\x7c\x58\x6b\x28\x43\x70\x1f\x5d\xf8\x95\x22\x42\xb7\x45\x86\xf8\x33\x39\xb4\x8f\x4b\xa3\xa6\x6b\xde\xb4\x57\xec\xdf\x61\x78\x4e\xac\x67\x65\xcd\x9b\x8c\x57\x0d\xd6\x28\xdb\xba\x6a\xe5\x83\x6b\x9a\xc3\xdb\xcd\x79\x5f\x9e\xfd\xb8\x74\x2a\x35\xbc\xa2\x32\xab\xf3\x6e\xb3\xb6\x69\x8b\x29\x33\x96\x58\x02\x27\x7b\xa9\x53\xa6\xed\xca\xca\xf3\x30\xc1\xe4\xe8\xc7\xd4\x5f", + "158bfc348a30b4fabbe355a7d44bdc2122a4c850444c03f289003ce01bfc1ebf3ecc0febb6a8ff523d25db7681b05bdce048d11943ab476c1967cf6556c4a120" + }, { + 120, + "\x42\xd6\x6e\xdc\x5f\x22\xe0\xc1\x3c\x25\x50\x4c\x51\x01\xa5\xd1\x72\xd2\xdb\x72\x09\xe4\x61\xef\xa3\x23\xc0\xbf\xae\xd2\x7e\x5f\x80\x80\x42\xea\x9c\x38\x38\xea\x31\xf9\xb7\x6d\xe4\x65\x22\x5c\xcf\xbd\x0c\x09\xca\x0d\x9f\x07\xe9\xa4\x3e\x3e\x46\xc7\x69\x3e\x00\xa7\xe1\xd4\x83\x90\x0d\xdb\x0a\x62\x9d\x55\x63\x45\x6d\xbb\xf2\x99\xac\x91\xf9\x2c\x3d\x3c\x17\xb0\x5d\x18\x0e\x6c\x87\xc6\xc9\x31\x94\xc3\x9d\x90\x27\x3f\xcf\x4a\x48\x2c\x56\x08\x4f\x95\xe3\x4c\x04\x31\x1f\xa8\x04\x38", + "061afb119a3c60876e04c10f12ad0f4b977593dc5a2d21096a57e7d3f7d4d44fdef934b2c17d7530674e4f4a1c176dbdcc54811a22e1b8712e4192fc2d4bf8e8" + }, { + 121, + "\xf9\x1b\xb2\xe1\xa9\xc4\xcd\x96\xbf\x25\x04\x26\xb3\xa6\xaf\xd9\xb8\x7a\xc5\x1e\x93\x25\x4d\x2d\xae\x3b\x16\xec\x68\x6b\xa8\x0f\xb0\xbd\x7a\x84\xd2\x18\x66\x0e\x90\x07\x59\x30\x75\xbc\x4f\x4c\x66\x56\x7f\x0c\x7a\x5f\xd2\x01\x0c\x99\x9a\x8a\x0e\xfa\x81\xf8\x9f\xf5\xbf\xef\xe0\xfb\x91\x0f\x04\x42\xe6\xd4\xa7\xc5\x5b\xbb\x61\x8c\x69\xa7\x9a\x2d\xdd\x82\xa0\x93\x89\x27\xf6\xfe\x3a\x80\xf0\x4b\xea\xeb\x7c\x76\x36\xe3\x43\x5d\x12\xdc\xf1\xc6\xbb\x6e\xd0\xa4\xed\xb6\x9c\x96\x57\xfa\x93", + "6e692c8c694ee0a3565f37a299e0006b85ab4a821b20e76798220229f656efc6a20211a4e7e4ed77facde0d70e4d5d95bc8ed1d7a56d8df1446d562f044b344c" + }, { + 122, + "\xd1\xeb\x96\x1c\xa6\xa8\xf6\x7c\x49\xb6\x1e\x4d\x3c\xea\xa2\xa1\xde\x6f\x0e\xa9\x27\xb1\x32\xbf\x98\x7a\xbd\xaa\x72\x5b\x0e\x1e\x27\x4e\x46\x83\x0e\x99\xa2\xf7\x5a\xf6\x08\x96\x4d\xf0\xdf\xf9\xa9\x90\x24\xfc\x68\x39\xba\xc5\xac\xd1\x02\x02\xf9\x21\xac\x71\xa2\x7f\xcd\xa6\x81\xaa\x31\x09\xeb\xf5\xf2\x1e\xe3\xa8\x49\x09\x8e\xa3\xa5\x51\xe8\x44\xfa\xe4\xb4\x8b\x5c\x5b\xb9\x7c\xcc\x80\x2b\xc5\x52\x0d\x68\xa1\x4c\xb7\xe5\xfc\x05\x6b\x67\xd8\x89\xd8\x76\xef\xb8\x2d\x0e\x9a\x9a\x24\x99\xf1", + "39b2c76ec207120de4b320c7fe069e602c9c38f257596da7369395e87eb64b3acff988c1839ac269d5012c093f9edd4b7cabf13bdea7d42e969ab108269c6ab0" + }, { + 123, + "\xad\xf2\x26\x32\x00\xf3\x76\x88\x6b\xa7\xb6\xf5\xe4\x41\x1d\x5f\x07\xf7\xd9\xd1\x01\x59\x0c\x73\xac\xe1\x14\xba\xfb\xcb\x0f\xdc\x99\x26\x9e\x87\xcd\x2c\xea\xd2\xa1\xcf\xe5\x74\x43\x94\xd3\x33\xab\xa4\x08\xa0\x7e\x21\xf3\x02\x33\xb6\x5b\x90\x74\x72\xe9\xe3\xc7\xd6\xe7\xaa\x6d\x2c\x47\xa0\x8a\x1b\xe7\xbb\x87\x79\x13\xa6\xb5\x60\x4c\x72\x33\x84\x47\x89\x11\xc3\x39\xe3\xb5\xfe\x52\x7c\x7e\x28\x87\x05\xa8\x9c\x95\xd9\x70\xb4\x43\x34\x78\x97\xe7\x9f\x6c\x52\x2b\xaf\xe6\x2b\x11\xef\x8f\x31\x35", + "3c23d2d8cf4db6ac6a42e27208180f37668bef5ee0a3f879483c8e604e7f42583f202037b8d242c04a87345b8be6dc8b121d6484b9edad0d73c894c1288f5cae" + }, { + 124, + "\x18\xe7\x5b\x47\xd8\x98\xac\x62\x9c\x48\xe8\x0d\xbf\xb7\x5d\xae\x1e\x17\x00\xb7\x71\x16\x5e\xcc\xdb\x18\xd6\x28\xbf\xc4\x06\x3d\xd6\xc3\x83\x9a\x7e\xc4\xcd\x12\x55\xc4\x82\x1b\x07\x8c\xd1\x74\x64\x7b\x32\x0b\xb6\x85\x54\x1d\x51\x7c\x57\x9f\x6b\x8e\x3c\xdd\x2e\x10\x9a\x61\x0c\x7a\x92\x16\x53\xb2\x04\xad\x01\x8d\x03\x40\xd9\x93\x87\x35\xb6\x02\x62\x66\x20\x16\x76\x7e\x1d\x88\x24\xa6\x49\x54\x08\x62\x29\xc0\xe3\xb5\xbd\x9a\xd8\x8c\x54\xc1\xdc\x5a\xa4\xe7\x68\xff\x1a\x94\x70\xee\x6f\x6e\x99\x8f", + "01c756b7c20b5f95fd2b079ab6a50f28b946fb16266b07c6060945dc4fe9e0d279c5b1505b9ec7d8f8f3c9ebf0c5ee9365aec08cf278d65b64daeccc19d3cbf4" + }, { + 125, + "\xc2\x96\x33\x42\xcf\xaa\x88\xcc\xd1\x02\xa2\x58\xe6\xd6\x29\xf6\xb0\xd3\x67\xdd\x55\x11\x65\x02\xca\x44\x51\xea\x52\x36\x23\xbc\x41\x75\x81\x9a\x06\x48\xdf\x31\x68\xe8\xea\x8f\x10\xed\x27\x35\x48\x07\xd7\x6e\x02\xee\x1f\xdf\x1c\x9c\x65\x5e\xe2\xb9\xfd\x08\xd5\x57\x05\x8d\xab\xdf\x8d\xcf\x96\x4b\xfc\xac\xc9\x96\xae\x17\x39\x71\xe2\x6e\xa0\x38\xd4\x07\xc8\x24\x26\x0d\x06\xc2\x84\x8a\x04\xa4\x88\xc4\xc4\x56\xdb\xcd\xe2\x93\x9e\x56\x1a\xb9\x08\xc4\x09\x7b\x50\x86\x38\xd6\xcd\xa5\x56\x46\x5c\x9c\xc5", + "a4d2f59393a5fea612c3c745f4bb9f41aaf3a3ce1679aa8afc1a62baa4ed452819418c8ae1a1e658757976692390fc43d4decf7d855cd8b498b6dc60cae05a90" + }, { + 126, + "\x85\x36\x0c\x3d\x42\x57\xd9\x87\x8e\x2f\x5c\x16\xd3\xcd\x7d\x07\x47\xdf\x3d\x23\x1e\x1a\x8f\x63\xfd\xdc\x69\xb3\xb1\x10\x1a\xf7\x21\x53\xde\x4c\x81\x54\xb0\x90\xc9\x81\x5f\x24\x66\xe0\xe4\xf0\x2f\x3a\xf3\xa8\x9a\x7f\xd0\x4e\x30\x66\x64\xf9\x3e\x54\x90\xd4\xce\x7f\xc1\x69\xd5\x53\xc5\x20\xae\x15\xdd\x02\xc7\xc6\x13\xc3\x9b\x4a\xcd\x00\xe0\xc9\xa3\xc5\x01\x56\x6e\x52\xce\xce\xa1\x1f\x73\x03\xdd\x1d\xa6\x1a\xbf\x3f\x25\x32\xfd\x39\x60\x47\xb1\x88\x72\x55\xf4\xb2\x56\xc0\xaf\xcf\x58\xf3\xae\x48\xc9\x47", + "e8352ddcac59e377ea0f9c32bbb43dfd1b6c829fad1954240c41b7c45b0b09db11064b64e2442a96f6530aac2c4abf3beb1eae77f2bce4efe88fee1a70cf5423" + }, { + 127, + "\xc1\x3e\x6c\xa3\xab\xb8\x93\xaa\x5f\x82\xc4\xa8\xef\x75\x44\x60\x62\x8a\xf6\xb7\x5a\xf0\x21\x68\xf4\x5b\x72\xf8\xf0\x9e\x45\xed\x12\x7c\x20\x3b\xc7\xbb\x80\xff\x0c\x7b\xd9\x6f\x8c\xc6\xd8\x11\x08\x68\xeb\x2c\xfc\x01\x03\x7d\x80\x58\x99\x2a\x6c\xf2\xef\xfc\xbf\xe4\x98\xc8\x42\xe5\x3a\x2e\x68\xa7\x93\x86\x79\x68\xba\x18\xef\xc4\xa7\x8b\x21\xcd\xf6\xa1\x1e\x5d\xe8\x21\xdc\xab\xab\x14\x92\x1d\xdb\x33\x62\x5d\x48\xa1\x3b\xaf\xfa\xd6\xfe\x82\x72\xdb\xdf\x44\x33\xbd\x0f\x7b\x81\x3c\x98\x12\x69\xc3\x88\xf0\x01", + "6e56f77f6883d0bd4face8b8d557f144661989f66d51b1fe4b8fc7124d66d9d20218616fea1bcf86c08d63bf8f2f21845a3e519083b937e70aa7c358310b5a7c" + }, { + 128, + "\xfd\x22\x03\xe4\x67\x57\x4e\x83\x4a\xb0\x7c\x90\x97\xae\x16\x45\x32\xf2\x4b\xe1\xeb\x5d\x88\xf1\xaf\x77\x48\xce\xff\x0d\x2c\x67\xa2\x1f\x4e\x40\x97\xf9\xd3\xbb\x4e\x9f\xbf\x97\x18\x6e\x0d\xb6\xdb\x01\x00\x23\x0a\x52\xb4\x53\xd4\x21\xf8\xab\x9c\x9a\x60\x43\xaa\x32\x95\xea\x20\xd2\xf0\x6a\x2f\x37\x47\x0d\x8a\x99\x07\x5f\x1b\x8a\x83\x36\xf6\x22\x8c\xf0\x8b\x59\x42\xfc\x1f\xb4\x29\x9c\x7d\x24\x80\xe8\xe8\x2b\xce\x17\x55\x40\xbd\xfa\xd7\x75\x2b\xc9\x5b\x57\x7f\x22\x95\x15\x39\x4f\x3a\xe5\xce\xc8\x70\xa4\xb2\xf8", + "a21b1077d52b27ac545af63b32746c6e3c51cb0cb9f281eb9f3580a6d4996d5c9917d2a6e484627a9d5a06fa1b25327a9d710e027387fc3e07d7c4d14c6086cc" + }, { + 0, + NULL, + NULL + } +}; + +static void +run_tests(int digest_type, struct test_vector *test_vectors) +{ + struct sudo_digest *ctx; + unsigned char md[64]; /* SHA512_DIGEST_LENGTH */ + char mdhex[128 + 1]; /* SHA512_DIGEST_LENGTH * 2 + 1 */ + int i, j, digest_len; + + digest_len = sudo_digest_getlen(digest_type); + if (digest_len == -1) + sudo_fatalx("unable to get digest length for type %d", digest_type); + if (digest_len > ssizeof(md)) + sudo_fatalx("digest length too big for type %d", digest_type); + + ctx = sudo_digest_alloc(digest_type); + if (ctx == NULL) + sudo_fatal(NULL); + + for (i = 0; test_vectors[i].str != NULL; i++) { + ntests++; + sudo_digest_update(ctx, test_vectors[i].str, test_vectors[i].len); + sudo_digest_final(ctx, md); + + /* Convert md to a hex string. */ + for (j = 0; j < digest_len; j++) { + mdhex[j * 2] = hex[md[j] >> 4]; + mdhex[(j * 2) + 1] = hex[md[j] & 0x0f]; + } + mdhex[j * 2] = '\0'; + + if (strcmp(test_vectors[i].md, mdhex) != 0) { + sudo_warnx("test %d:%d: expected %s, got %s", digest_type, i, + mdhex, test_vectors[i].md); + errors++; + } + sudo_digest_reset(ctx); + } + sudo_digest_free(ctx); + + return; +} + +/* + * Verify SHA2 functions using NIST byte-oriented short message test vectors. + */ +int +main(int argc, char *argv[]) +{ + int ch; + + initprogname(argc > 0 ? argv[0] : "digest_test"); + + while ((ch = getopt(argc, argv, "v")) != -1) { + switch (ch) { + case 'v': + /* ignore */ + break; + default: + fprintf(stderr, "usage: %s [-v]\n", getprogname()); + return EXIT_FAILURE; + } + } + + run_tests(SUDO_DIGEST_SHA224, sha224_vectors); + run_tests(SUDO_DIGEST_SHA256, sha256_vectors); + run_tests(SUDO_DIGEST_SHA512, sha512_vectors); + + if (ntests != 0) { + printf("%s: %d tests run, %d errors, %d%% success rate\n", + getprogname(), ntests, errors, (ntests - errors) * 100 / ntests); + } + + return errors; +} diff -Nru sudo-1.9.13p3/lib/util/secure_path.c sudo-1.9.14p2/lib/util/secure_path.c --- sudo-1.9.13p3/lib/util/secure_path.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/lib/util/secure_path.c 2023-07-15 15:37:23.000000000 +0000 @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -95,6 +96,21 @@ } /* + * Verify that fd matches type and not writable by other users. + */ +int +sudo_secure_fd_v1(int fd, unsigned int type, uid_t uid, gid_t gid, + struct stat *sb) +{ + int ret = SUDO_PATH_MISSING; + debug_decl(sudo_secure_fd, SUDO_DEBUG_UTIL); + + if (fd != -1 && fstat(fd, sb) == 0) + ret = sudo_check_secure(sb, type, uid, gid); + debug_return_int(ret); +} + +/* * Open path read-only as long as it is not writable by other users. * Returns an open file descriptor on success, else -1. * Sets error to SUDO_PATH_SECURE on success, and a value < 0 on failure. @@ -143,3 +159,45 @@ { return sudo_secure_open(path, S_IFDIR, uid, gid, sb, error); } + +/* + * Open the first file found in a colon-separated list of paths. + * Subsequent files in the path are only attempted if the + * previous file does not exist. Errors other than ENOENT are + * considered fatal and will stop processing the path. + * Sets name based on the last file it tried to open, even on error. + */ +int +sudo_open_conf_path_v1(const char *path, char *name, size_t namesize, + int (*fn)(const char *, int)) +{ + const char *cp, *ep, *path_end; + int fd = -1; + debug_decl(sudo_open_conf_path, SUDO_DEBUG_UTIL); + + path_end = path + strlen(path); + for (cp = sudo_strsplit(path, path_end, ":", &ep); + cp != NULL; cp = sudo_strsplit(NULL, path_end, ":", &ep)) { + + const size_t len = ep - cp; + if (len >= namesize) { + /* We always set name, even on error. */ + memcpy(name, cp, namesize - 1); + name[namesize - 1] = '\0'; + errno = ENAMETOOLONG; + break; + } + memcpy(name, cp, len); + name[len] = '\0'; + + fd = fn ? + fn(name, O_RDONLY|O_NONBLOCK) : open(name, O_RDONLY|O_NONBLOCK); + if (fd != -1) { + (void)fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK); + break; + } + if (errno != ENOENT) + break; + } + debug_return_int(fd); +} diff -Nru sudo-1.9.13p3/lib/util/sudo_conf.c sudo-1.9.14p2/lib/util/sudo_conf.c --- sudo-1.9.13p3/lib/util/sudo_conf.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/lib/util/sudo_conf.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2009-2021 Todd C. Miller + * Copyright (c) 2009-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -629,12 +629,13 @@ * Read in /etc/sudo.conf and populates sudo_conf_data. */ int -sudo_conf_read_v1(const char *conf_file, int conf_types) +sudo_conf_read_v1(const char *path, int conf_types) { FILE *fp = NULL; - int fd, ret = false; + int fd = -1, ret = false; char *prev_locale, *line = NULL; unsigned int conf_lineno = 0; + char conf_file[PATH_MAX]; size_t linesize = 0; debug_decl(sudo_conf_read, SUDO_DEBUG_UTIL); @@ -651,57 +652,62 @@ if (prev_locale[0] != 'C' || prev_locale[1] != '\0') setlocale(LC_ALL, "C"); + if (path != NULL) { + /* Caller specified a single file, which must exist. */ + if (strlcpy(conf_file, path, sizeof(conf_file)) >= sizeof(conf_file)) { + errno = ENAMETOOLONG; + sudo_warn("%s", path); + goto done; + } + fd = open(conf_file, O_RDONLY); + if (fd == -1) { + sudo_warn(U_("unable to open %s"), conf_file); + goto done; + } + } else { #ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION - if (conf_file == NULL) { struct stat sb; int error; - conf_file = _PATH_SUDO_CONF; - fd = sudo_secure_open_file(conf_file, ROOT_UID, -1, &sb, &error); - if (fd == -1) { - switch (error) { - case SUDO_PATH_MISSING: - /* Root should always be able to read sudo.conf. */ - if (errno != ENOENT && geteuid() == ROOT_UID) - sudo_warn(U_("unable to open %s"), conf_file); - break; - case SUDO_PATH_BAD_TYPE: - sudo_warnx(U_("%s is not a regular file"), conf_file); - break; - case SUDO_PATH_WRONG_OWNER: - sudo_warnx(U_("%s is owned by uid %u, should be %u"), - conf_file, (unsigned int) sb.st_uid, ROOT_UID); - break; - case SUDO_PATH_WORLD_WRITABLE: - sudo_warnx(U_("%s is world writable"), conf_file); - break; - case SUDO_PATH_GROUP_WRITABLE: - sudo_warnx(U_("%s is group writable"), conf_file); - break; - default: - sudo_warnx("%s: internal error, unexpected error %d", - __func__, error); - break; - } + /* _PATH_SUDO_CONF is a colon-separated list of path. */ + fd = sudo_open_conf_path(_PATH_SUDO_CONF, conf_file, + sizeof(conf_file), NULL); + error = sudo_secure_fd(fd, S_IFREG, ROOT_UID, -1, &sb); + switch (error) { + case SUDO_PATH_SECURE: + /* OK! */ + break; + case SUDO_PATH_MISSING: + /* Root should always be able to read sudo.conf. */ + if (errno != ENOENT && geteuid() == ROOT_UID) + sudo_warn(U_("unable to open %s"), conf_file); + goto done; + case SUDO_PATH_BAD_TYPE: + sudo_warnx(U_("%s is not a regular file"), conf_file); + goto done; + case SUDO_PATH_WRONG_OWNER: + sudo_warnx(U_("%s is owned by uid %u, should be %u"), + conf_file, (unsigned int) sb.st_uid, ROOT_UID); + goto done; + case SUDO_PATH_WORLD_WRITABLE: + sudo_warnx(U_("%s is world writable"), conf_file); + goto done; + case SUDO_PATH_GROUP_WRITABLE: + sudo_warnx(U_("%s is group writable"), conf_file); + goto done; + default: + sudo_warnx("%s: internal error, unexpected error %d", + __func__, error); goto done; } - } else #else - if (conf_file == NULL) - conf_file = _PATH_SUDO_CONF; + /* No default sudo.conf when fuzzing. */ + goto done; #endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */ - { - fd = open(conf_file, O_RDONLY); - if (fd == -1) { - sudo_warn(U_("unable to open %s"), conf_file); - goto done; - } } if ((fp = fdopen(fd, "r")) == NULL) { - if (errno != ENOENT && geteuid() == ROOT_UID) - sudo_warn(U_("unable to open %s"), conf_file); - close(fd); + sudo_warn(U_("unable to open %s"), conf_file); goto done; } @@ -749,6 +755,8 @@ done: if (fp != NULL) fclose(fp); + else if (fd != -1) + close(fd); free(line); /* Restore locale if needed. */ diff -Nru sudo-1.9.13p3/lib/util/term.c sudo-1.9.14p2/lib/util/term.c --- sudo-1.9.13p3/lib/util/term.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/lib/util/term.c 2023-07-15 15:39:28.000000000 +0000 @@ -97,7 +97,7 @@ static volatile sig_atomic_t got_sigttou; /* - * SIGTTOU signal handler for term_restore that just sets a flag. + * SIGTTOU signal handler for tcsetattr_nobg() that just sets a flag. */ static void sigttou(int signo) @@ -178,22 +178,30 @@ } /* - * Set terminal to raw mode with optional terminal signals. + * Set terminal to raw mode as modified by flags. * Returns true on success or false on failure. */ bool -sudo_term_raw_v1(int fd, int isig) +sudo_term_raw_v1(int fd, unsigned int flags) { struct termios term; + tcflag_t oflag; debug_decl(sudo_term_raw, SUDO_DEBUG_UTIL); if (!changed && tcgetattr(fd, &oterm) != 0) debug_return_bool(false); (void) memcpy(&term, &oterm, sizeof(term)); - /* Set terminal to raw mode but optionally enable terminal signals. */ + /* + * Set terminal to raw mode but optionally enable terminal signals + * and/or preserve output flags. + */ + if (ISSET(flags, SUDO_TERM_OFLAG)) + oflag = term.c_oflag; cfmakeraw(&term); - if (isig) + if (ISSET(flags, SUDO_TERM_ISIG)) SET(term.c_lflag, ISIG); + if (ISSET(flags, SUDO_TERM_OFLAG)) + term.c_oflag = oflag; if (tcsetattr_nobg(fd, TCSASOFT|TCSADRAIN, &term) == 0) { changed = 1; debug_return_bool(true); diff -Nru sudo-1.9.13p3/lib/util/ttysize.c sudo-1.9.14p2/lib/util/ttysize.c --- sudo-1.9.13p3/lib/util/ttysize.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/lib/util/ttysize.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2010-2012, 2014-2015 Todd C. Miller + * Copyright (c) 2010-2012, 2014-2015, 2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -34,16 +34,17 @@ #include "sudo_util.h" static int -get_ttysize_ioctl(int *rowp, int *colp) +get_ttysize_ioctl(int fd, int *rowp, int *colp) { struct winsize wsize; debug_decl(get_ttysize_ioctl, SUDO_DEBUG_UTIL); - if (ioctl(STDERR_FILENO, TIOCGWINSZ, &wsize) == 0 && - wsize.ws_row != 0 && wsize.ws_col != 0) { - *rowp = wsize.ws_row; - *colp = wsize.ws_col; - debug_return_int(0); + if (fd != -1 && isatty(fd) && ioctl(fd, TIOCGWINSZ, &wsize) == 0) { + if (wsize.ws_row != 0 && wsize.ws_col != 0) { + *rowp = wsize.ws_row; + *colp = wsize.ws_col; + debug_return_int(0); + } } debug_return_int(-1); } @@ -51,9 +52,15 @@ void sudo_get_ttysize_v1(int *rowp, int *colp) { + sudo_get_ttysize_v2(STDERR_FILENO, rowp, colp); +} + +void +sudo_get_ttysize_v2(int fd, int *rowp, int *colp) +{ debug_decl(sudo_get_ttysize, SUDO_DEBUG_UTIL); - if (get_ttysize_ioctl(rowp, colp) == -1) { + if (get_ttysize_ioctl(fd, rowp, colp) == -1) { char *p; /* Fall back on $LINES and $COLUMNS. */ diff -Nru sudo-1.9.13p3/lib/util/util.exp.in sudo-1.9.14p2/lib/util/util.exp.in --- sudo-1.9.13p3/lib/util/util.exp.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/lib/util/util.exp.in 2023-07-15 15:37:23.000000000 +0000 @@ -83,6 +83,7 @@ sudo_gai_vwarn_nodebug_v1 sudo_gai_warn_nodebug_v1 sudo_get_ttysize_v1 +sudo_get_ttysize_v2 sudo_getgrouplist2_v1 sudo_gethostname_v1 sudo_gettime_awake_v1 @@ -119,6 +120,7 @@ sudo_mmap_protect_v1 sudo_mmap_strdup_v1 sudo_new_key_val_v1 +sudo_open_conf_path_v1 sudo_open_parent_dir_v1 sudo_parse_gids_v1 sudo_parseln_v1 @@ -130,6 +132,7 @@ sudo_rcstr_dup sudo_regex_compile_v1 sudo_secure_dir_v1 +sudo_secure_fd_v1 sudo_secure_file_v1 sudo_secure_open_dir_v1 sudo_secure_open_file_v1 diff -Nru sudo-1.9.13p3/lib/zlib/Makefile.in sudo-1.9.14p2/lib/zlib/Makefile.in --- sudo-1.9.13p3/lib/zlib/Makefile.in 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/lib/zlib/Makefile.in 2023-07-15 15:37:21.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2011-2018 Todd C. Miller +# Copyright (c) 2011-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -35,6 +35,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localstatedir = @localstatedir@ @@ -151,7 +152,7 @@ uninstall: $(LIBTOOL) $(LTFLAGS) --mode=uninstall rm -f $(DESTDIR)$(libexecdir)/sudo/libsudo_z.la -test -z "$(INSTALL_BACKUP)" || \ - rf -f $(DESTDIR)$(libexecdir)/sudo/libsudo_z.*~ + rm -f $(DESTDIR)$(libexecdir)/sudo/libsudo_z.*~ splint: diff -Nru sudo-1.9.13p3/logsrvd/iolog_writer.c sudo-1.9.14p2/logsrvd/iolog_writer.c --- sudo-1.9.13p3/logsrvd/iolog_writer.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/logsrvd/iolog_writer.c 2023-07-15 15:37:23.000000000 +0000 @@ -143,7 +143,10 @@ } /* Client/peer IP address. */ - evlog->peeraddr = closure->ipaddr; + if ((evlog->peeraddr = strdup(closure->ipaddr)) == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + goto bad; + } /* Submit time. */ if (submit_time != NULL) { diff -Nru sudo-1.9.13p3/logsrvd/logsrvd.c sudo-1.9.14p2/logsrvd/logsrvd.c --- sudo-1.9.13p3/logsrvd/logsrvd.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/logsrvd/logsrvd.c 2023-07-15 15:37:23.000000000 +0000 @@ -85,7 +85,7 @@ static struct connection_list connections = TAILQ_HEAD_INITIALIZER(connections); static struct listener_list listeners = TAILQ_HEAD_INITIALIZER(listeners); static const char server_id[] = "Sudo Audit Server " PACKAGE_VERSION; -static const char *conf_file = _PATH_SUDO_LOGSRVD_CONF; +static const char *conf_file = NULL; /* Event loop callbacks. */ static void client_msg_cb(int fd, int what, void *v); @@ -297,23 +297,31 @@ if (buf != NULL) { TAILQ_REMOVE(&closure->free_bufs, buf, entries); } 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 = calloc(1, sizeof(*buf))) == NULL) + goto oom; } if (len > buf->size) { - free(buf->data); - buf->size = sudo_pow2_roundup(len); - if ((buf->data = malloc(buf->size)) == NULL) { - sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - free(buf); - buf = NULL; + const unsigned int new_size = sudo_pow2_roundup(len); + if (new_size < len) { + /* overflow */ + errno = ENOMEM; + goto oom; } + free(buf->data); + if ((buf->data = malloc(new_size)) == NULL) + goto oom; + buf->size = new_size; } debug_return_ptr(buf); +oom: + if (buf != NULL) { + free(buf->data); + free(buf); + } + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + debug_return_ptr(NULL); } static bool @@ -1663,7 +1671,8 @@ debug_decl(server_dump_stats, SUDO_DEBUG_UTIL); sudo_debug_printf(SUDO_DEBUG_INFO, "%s", server_id); - sudo_debug_printf(SUDO_DEBUG_INFO, "configuration file: %s", conf_file); + sudo_debug_printf(SUDO_DEBUG_INFO, "configuration file: %s", + conf_file ? conf_file : _PATH_SUDO_LOGSRVD_CONF); sudo_debug_printf(SUDO_DEBUG_INFO, "listen addresses:"); n = 0; diff -Nru sudo-1.9.13p3/logsrvd/logsrvd_conf.c sudo-1.9.14p2/logsrvd/logsrvd_conf.c --- sudo-1.9.13p3/logsrvd/logsrvd_conf.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/logsrvd/logsrvd_conf.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2019-2022 Todd C. Miller + * Copyright (c) 2019-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -544,9 +544,6 @@ hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_PASSIVE; -#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION - hints.ai_flags |= AI_NUMERICSERV; -#endif error = getaddrinfo(host, port, &hints, &res0); if (error != 0) { sudo_gai_warn(error, U_("%s:%s"), host ? host : "*", port); @@ -1854,25 +1851,39 @@ /* * Read .ini style logsrvd.conf file. + * If path is NULL, use _PATH_SUDO_LOGSRVD_CONF. * Note that we use '#' not ';' for the comment character. */ bool logsrvd_conf_read(const char *path) { struct logsrvd_config *config; + char conf_file[PATH_MAX]; bool ret = false; FILE *fp = NULL; + int fd = -1; debug_decl(logsrvd_conf_read, SUDO_DEBUG_UTIL); config = logsrvd_conf_alloc(); - if ((fp = fopen(path, "r")) == NULL) { - if (errno != ENOENT) { - sudo_warn("%s", path); + if (path != NULL) { + if (strlcpy(conf_file, path, sizeof(conf_file)) >= sizeof(conf_file)) + errno = ENAMETOOLONG; + else + fd = open(conf_file, O_RDONLY); + } else { + fd = sudo_open_conf_path(_PATH_SUDO_LOGSRVD_CONF, conf_file, + sizeof(conf_file), NULL); + } + if (fd != -1) + fp = fdopen(fd, "r"); + if (fp == NULL) { + if (path != NULL || errno != ENOENT) { + sudo_warn("%s", conf_file); goto done; } } else { - if (!logsrvd_conf_parse(config, fp, path)) + if (!logsrvd_conf_parse(config, fp, conf_file)) goto done; } diff -Nru sudo-1.9.13p3/logsrvd/logsrvd_journal.c sudo-1.9.14p2/logsrvd/logsrvd_journal.c --- sudo-1.9.13p3/logsrvd/logsrvd_journal.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/logsrvd/logsrvd_journal.c 2023-07-15 15:37:23.000000000 +0000 @@ -268,6 +268,11 @@ if (msg_len > bufsize) { bufsize = sudo_pow2_roundup(msg_len); + if (bufsize < msg_len) { + /* overflow */ + closure->errstr = _("unable to allocate memory"); + break; + } free(buf); if ((buf = malloc(bufsize)) == NULL) { closure->errstr = _("unable to allocate memory"); diff -Nru sudo-1.9.13p3/logsrvd/logsrv_util.c sudo-1.9.14p2/logsrvd/logsrv_util.c --- sudo-1.9.13p3/logsrvd/logsrv_util.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/logsrvd/logsrv_util.c 2023-07-15 15:37:23.000000000 +0000 @@ -62,18 +62,21 @@ if (buf->size < needed) { /* Expand buffer. */ - needed = sudo_pow2_roundup(needed); + const unsigned int newsize = sudo_pow2_roundup(needed); sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, - "expanding buffer from %u to %u", buf->size, needed); - if ((newdata = malloc(needed)) == NULL) { - sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - debug_return_bool(false); + "expanding buffer from %u to %u", buf->size, newsize); + if (newsize < needed) { + /* overflow */ + errno = ENOMEM; + goto oom; } + if ((newdata = malloc(newsize)) == NULL) + goto oom; if (buf->len != buf->off) memcpy(newdata, buf->data + buf->off, buf->len - buf->off); free(buf->data); buf->data = newdata; - buf->size = needed; + buf->size = newsize; } else { /* Just reset existing buffer. */ if (buf->len != buf->off) { @@ -85,6 +88,9 @@ buf->off = 0; debug_return_bool(true); +oom: + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + debug_return_bool(false); } /* diff -Nru sudo-1.9.13p3/logsrvd/Makefile.in sudo-1.9.14p2/logsrvd/Makefile.in --- sudo-1.9.13p3/logsrvd/Makefile.in 2023-02-16 18:43:30.000000000 +0000 +++ sudo-1.9.14p2/logsrvd/Makefile.in 2023-07-15 15:37:21.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2019-2021 Todd C. Miller +# Copyright (c) 2019-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -52,7 +52,7 @@ LIBS = $(LT_LIBS) @LIBTLS@ # C preprocessor defines -CPPDEFS = -D_PATH_SUDO_LOGSRVD_CONF=\"$(sysconfdir)/sudo_logsrvd.conf\" \ +CPPDEFS = -D_PATH_SUDO_LOGSRVD_CONF=\"@sudo_logsrvd_conf@\" \ -DLOCALEDIR=\"$(localedir)\" # C preprocessor flags @@ -98,6 +98,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localedir = @localedir@ diff -Nru sudo-1.9.13p3/logsrvd/regress/fuzz/fuzz_logsrvd_conf.c sudo-1.9.14p2/logsrvd/regress/fuzz/fuzz_logsrvd_conf.c --- sudo-1.9.13p3/logsrvd/regress/fuzz/fuzz_logsrvd_conf.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/logsrvd/regress/fuzz/fuzz_logsrvd_conf.c 2023-07-15 15:37:23.000000000 +0000 @@ -19,11 +19,14 @@ #include #include #include +#include #include #include #include #include +#include +#include #include #include #include @@ -65,6 +68,89 @@ return true; } +/* + * The fuzzing environment may not have DNS available, this may result + * in long delays that cause a timeout when fuzzing. + * This getaddrinfo() resolves every name as "localhost" (127.0.0.1). + */ +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +/* Avoid compilation errors if getaddrinfo() or freeaddrinfo() are macros. */ +# undef getaddrinfo +# undef freeaddrinfo + +int +# ifdef HAVE_GETADDRINFO +getaddrinfo( +# else +sudo_getaddrinfo( +# endif + const char *nodename, const char *servname, + const struct addrinfo *hints, struct addrinfo **res) +{ + struct addrinfo *ai; + struct in_addr addr; + unsigned short port = 0; + + /* Stub getaddrinfo(3) to avoid a DNS timeout in CIfuzz. */ + if (servname == NULL) { + /* Must have either nodename or servname. */ + if (nodename == NULL) + return EAI_NONAME; + } else { + struct servent *servent; + const char *errstr; + + /* Parse servname as a port number or IPv4 TCP service name. */ + port = sudo_strtonum(servname, 0, USHRT_MAX, &errstr); + if (errstr != NULL && errno == ERANGE) + return EAI_SERVICE; + if (hints != NULL && ISSET(hints->ai_flags, AI_NUMERICSERV)) + return EAI_NONAME; + servent = getservbyname(servname, "tcp"); + if (servent == NULL) + return EAI_NONAME; + port = htons(servent->s_port); + } + + /* Hard-code IPv4 localhost for fuzzing. */ + ai = calloc(1, sizeof(*ai) + sizeof(struct sockaddr_in)); + if (ai == NULL) + return EAI_MEMORY; + ai->ai_canonname = strdup("localhost"); + if (ai == NULL) { + free(ai); + return EAI_MEMORY; + } + ai->ai_family = AF_INET; + ai->ai_protocol = IPPROTO_TCP; + ai->ai_addrlen = sizeof(struct sockaddr_in); + ai->ai_addr = (struct sockaddr *)(ai + 1); + inet_pton(AF_INET, "127.0.0.1", &addr); + ((struct sockaddr_in *)ai->ai_addr)->sin_family = AF_INET; + ((struct sockaddr_in *)ai->ai_addr)->sin_addr = addr; + ((struct sockaddr_in *)ai->ai_addr)->sin_port = htons(port); + *res = ai; + return 0; +} + +void +# ifdef HAVE_GETADDRINFO +freeaddrinfo(struct addrinfo *ai) +# else +sudo_freeaddrinfo(struct addrinfo *ai) +# endif +{ + struct addrinfo *next; + + while (ai != NULL) { + next = ai->ai_next; + free(ai->ai_canonname); + free(ai); + ai = next; + } +} +#endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */ + static int fuzz_conversation(int num_msgs, const struct sudo_conv_message msgs[], struct sudo_conv_reply replies[], struct sudo_conv_callback *callback) diff -Nru sudo-1.9.13p3/logsrvd/sendlog.c sudo-1.9.14p2/logsrvd/sendlog.c --- sudo-1.9.13p3/logsrvd/sendlog.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/logsrvd/sendlog.c 2023-07-15 15:37:23.000000000 +0000 @@ -256,7 +256,7 @@ if (len > buf->size) { free(buf->data); buf->size = sudo_pow2_roundup(len); - if ((buf->data = malloc(buf->size)) == NULL) { + if (buf->size < len || (buf->data = malloc(buf->size)) == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); free(buf); buf = NULL; @@ -285,13 +285,22 @@ /* Expand buf as needed. */ if (timing->u.nbytes > closure->bufsize) { + const size_t new_size = sudo_pow2_roundup(timing->u.nbytes); + if (new_size < timing->u.nbytes) { + /* overflow */ + errno = ENOMEM; + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + timing->u.nbytes = 0; + debug_return_bool(false); + } free(closure->buf); - closure->bufsize = sudo_pow2_roundup(timing->u.nbytes); - if ((closure->buf = malloc(closure->bufsize)) == NULL) { + if ((closure->buf = malloc(new_size)) == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + closure->bufsize = 0; timing->u.nbytes = 0; debug_return_bool(false); } + closure->bufsize = new_size; } nread = iolog_read(&closure->iolog_files[timing->event], closure->buf, diff -Nru sudo-1.9.13p3/m4/hardening.m4 sudo-1.9.14p2/m4/hardening.m4 --- sudo-1.9.13p3/m4/hardening.m4 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/m4/hardening.m4 2023-07-15 15:37:21.000000000 +0000 @@ -10,17 +10,12 @@ [sudo_cv_use_fortify_source], [AC_LINK_IFELSE([ AC_LANG_PROGRAM( - [[]], [[char buf[4]; (void)sprintf(buf, "%s", "foo");]] + [[#include ]], + [[char buf[4]; sprintf(buf, "%s", "foo"); return buf[0];]] )], [sudo_cv_use_fortify_source=yes], [sudo_cv_use_fortify_source=no] ) - ] - [AC_LINK_IFELSE( - [AC_LANG_PROGRAM([[]], [[]])], - [sudo_cv_use_fortify_source=yes], - [sudo_cv_use_fortify_source=no] - ) ] ) if test "$sudo_cv_use_fortify_source" != yes; then diff -Nru sudo-1.9.13p3/m4/ldap.m4 sudo-1.9.14p2/m4/ldap.m4 --- sudo-1.9.13p3/m4/ldap.m4 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/m4/ldap.m4 2023-07-15 15:37:21.000000000 +0000 @@ -11,7 +11,7 @@ AX_APPEND_FLAG([-I${with_ldap}/include], [CPPFLAGS]) with_ldap=yes fi - SUDOERS_OBJS="${SUDOERS_OBJS} ldap.lo ldap_conf.lo" + SUDOERS_OBJS="${SUDOERS_OBJS} ldap.lo ldap_conf.lo ldap_innetgr.lo" case "$SUDOERS_OBJS" in *ldap_util.lo*) ;; *) SUDOERS_OBJS="${SUDOERS_OBJS} ldap_util.lo";; @@ -52,7 +52,7 @@ #include ]) AC_CACHE_CHECK([whether lber.h is needed when including ldap.h], [sudo_cv_header_lber_h], [ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include -#include ]], [[(void)ldap_init(0, 0)]])], [ +#include ]], [[return ldap_msgfree(NULL)]])], [ # No need to explicitly include lber.h when including ldap.h. sudo_cv_header_lber_h=no ], [ diff -Nru sudo-1.9.13p3/m4/openssl.m4 sudo-1.9.14p2/m4/openssl.m4 --- sudo-1.9.13p3/m4/openssl.m4 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/m4/openssl.m4 2023-07-15 15:37:21.000000000 +0000 @@ -44,7 +44,9 @@ SUDO_APPEND_LIBPATH([LIBTLS], [$f]) ;; *) - AX_APPEND_FLAG([$f], [LIBTLS]) + # Do not use AX_APPEND_FLAG as it will break static builds by removing + # duplicates such as -lz or -latomic which are needed by -lssl and -lcrypto + LIBTLS="$LIBTLS $f" ;; esac done diff -Nru sudo-1.9.13p3/m4/sudo.m4 sudo-1.9.14p2/m4/sudo.m4 --- sudo-1.9.13p3/m4/sudo.m4 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/m4/sudo.m4 2023-07-15 15:37:21.000000000 +0000 @@ -2,7 +2,7 @@ dnl dnl SPDX-License-Identifier: ISC dnl -dnl Copyright (c) 1994-1996, 1998-2005, 2007-2022 +dnl Copyright (c) 1994-1996, 1998-2005, 2007-2023 dnl Todd C. Miller dnl dnl Permission to use, copy, modify, and distribute this software for any @@ -556,7 +556,6 @@ ]) dnl -dnl dnl Append one or more symbols to INTERCEPT_EXP dnl AC_DEFUN([SUDO_APPEND_INTERCEPT_EXP], [ @@ -680,3 +679,47 @@ [@%:@define] $1 m4_if($#, 2, [$2], $#, 3, [$2], 1) EOF ]) + +dnl +dnl Expand Makefile-style variables in $1 and store the result in $2. +dnl Used to expand file paths for use in man pages and pathnames.h. +dnl +AC_DEFUN([SUDO_EXPAND_PATH], [ + $2="$1" + while :; do + $2="`echo \"$$2\" | sed -e 's/(/{/g' -e 's/)/}/g'`" + case "$$2" in + *\${[[A-Za-z]]*}*) + eval $2="$$2" + ;; + *) + break + ;; + esac +done +case "$$2" in + NONE/*) + $2="${ac_default_prefix}${$2#NONE}" + ;; +esac +]) + +dnl +dnl Expand Makefile-style variables in $1, a colon-separated list of paths, +dnl and define the result as a string using the name $2. +dnl +AC_DEFUN([SUDO_DEFINE_PATH], [ + as_save_IFS=$IFS + IFS=: + _sudo_define_path_res= + for as_dir in $1; do + SUDO_EXPAND_PATH([$as_dir], [_sudo_define_path_exp]) + if test -z "${_sudo_define_path_res}"; then + _sudo_define_path_res="${_sudo_define_path_exp}" + else + _sudo_define_path_res="${_sudo_define_path_res}:${_sudo_define_path_exp}" + fi + done + IFS=$as_save_IFS + SUDO_DEFINE_UNQUOTED($2, "${_sudo_define_path_res}") +]) diff -Nru sudo-1.9.13p3/Makefile.in sudo-1.9.14p2/Makefile.in --- sudo-1.9.13p3/Makefile.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/Makefile.in 2023-07-15 15:37:21.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2010-2015, 2017-2022 Todd C. Miller +# Copyright (c) 2010-2015, 2017-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -31,6 +31,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ includedir = @includedir@ datarootdir = @datarootdir@ diff -Nru sudo-1.9.13p3/MANIFEST sudo-1.9.14p2/MANIFEST --- sudo-1.9.13p3/MANIFEST 2023-03-04 15:50:10.000000000 +0000 +++ sudo-1.9.14p2/MANIFEST 2023-07-15 15:40:03.000000000 +0000 @@ -116,9 +116,31 @@ lib/eventlog/eventlog_conf.c lib/eventlog/eventlog_free.c lib/eventlog/logwrap.c +lib/eventlog/parse_json.c +lib/eventlog/parse_json.h +lib/eventlog/regress/eventlog_store/store_json_test.c +lib/eventlog/regress/eventlog_store/store_sudo_test.c +lib/eventlog/regress/eventlog_store/test1.json.in +lib/eventlog/regress/eventlog_store/test1.json.out.ok +lib/eventlog/regress/eventlog_store/test1.sudo.out.ok +lib/eventlog/regress/eventlog_store/test2.json.in +lib/eventlog/regress/eventlog_store/test2.json.out.ok +lib/eventlog/regress/eventlog_store/test2.sudo.out.ok +lib/eventlog/regress/eventlog_store/test3.json.in +lib/eventlog/regress/eventlog_store/test3.json.out.ok +lib/eventlog/regress/eventlog_store/test3.sudo.out.ok +lib/eventlog/regress/eventlog_store/test4.json.in +lib/eventlog/regress/eventlog_store/test4.json.out.ok +lib/eventlog/regress/eventlog_store/test4.sudo.out.ok lib/eventlog/regress/logwrap/check_wrap.c lib/eventlog/regress/logwrap/check_wrap.in lib/eventlog/regress/logwrap/check_wrap.out.ok +lib/eventlog/regress/parse_json/check_parse_json.c +lib/eventlog/regress/parse_json/test1.in +lib/eventlog/regress/parse_json/test2.in +lib/eventlog/regress/parse_json/test2.out.ok +lib/eventlog/regress/parse_json/test3.in +lib/eventlog/regress/parse_json/test3.out.ok lib/fuzzstub/Makefile.in lib/fuzzstub/fuzzstub.c lib/iolog/Makefile.in @@ -132,7 +154,6 @@ lib/iolog/iolog_flush.c lib/iolog/iolog_gets.c lib/iolog/iolog_json.c -lib/iolog/iolog_json.h lib/iolog/iolog_legacy.c lib/iolog/iolog_loginfo.c lib/iolog/iolog_mkdirs.c @@ -197,12 +218,6 @@ lib/iolog/regress/iolog_filter/test3/ttyin lib/iolog/regress/iolog_filter/test3/ttyin.filtered lib/iolog/regress/iolog_filter/test3/ttyout -lib/iolog/regress/iolog_json/check_iolog_json.c -lib/iolog/regress/iolog_json/test1.in -lib/iolog/regress/iolog_json/test2.in -lib/iolog/regress/iolog_json/test2.out.ok -lib/iolog/regress/iolog_json/test3.in -lib/iolog/regress/iolog_json/test3.out.ok lib/iolog/regress/iolog_mkpath/check_iolog_mkpath.c lib/iolog/regress/iolog_path/check_iolog_path.c lib/iolog/regress/iolog_path/data @@ -236,7 +251,6 @@ lib/util/freezero.c lib/util/fstatat.c lib/util/getaddrinfo.c -lib/util/getcwd.c lib/util/getdelim.c lib/util/getentropy.c lib/util/getgrouplist.c @@ -276,11 +290,13 @@ lib/util/pwrite.c lib/util/rcstr.c lib/util/reallocarray.c +lib/util/realpath.c lib/util/regex.c lib/util/regress/closefrom/closefrom_test.c lib/util/regress/corpus/seed/sudo_conf/sudo.conf.1 lib/util/regress/corpus/seed/sudo_conf/sudo.conf.2 lib/util/regress/corpus/seed/sudo_conf/sudo.conf.3 +lib/util/regress/digest/digest_test.c lib/util/regress/fnmatch/fnm_test.c lib/util/regress/fnmatch/fnm_test.in lib/util/regress/fuzz/fuzz_sudo_conf.c @@ -598,6 +614,7 @@ plugins/sudoers/boottime.c plugins/sudoers/bsm_audit.c plugins/sudoers/bsm_audit.h +plugins/sudoers/canon_path.c plugins/sudoers/check.c plugins/sudoers/check.h plugins/sudoers/check_aliases.c @@ -645,6 +662,7 @@ plugins/sudoers/iolog_path_escapes.c plugins/sudoers/ldap.c plugins/sudoers/ldap_conf.c +plugins/sudoers/ldap_innetgr.c plugins/sudoers/ldap_util.c plugins/sudoers/linux_audit.c plugins/sudoers/linux_audit.h @@ -661,6 +679,7 @@ plugins/sudoers/parse.c plugins/sudoers/parse.h plugins/sudoers/parse_ldif.c +plugins/sudoers/pivot.c plugins/sudoers/po/README plugins/sudoers/po/ast.mo plugins/sudoers/po/ast.po @@ -1034,6 +1053,7 @@ plugins/sudoers/regress/sudoers/test9.out.ok plugins/sudoers/regress/sudoers/test9.toke.ok plugins/sudoers/regress/testsudoers/group +plugins/sudoers/regress/testsudoers/passwd plugins/sudoers/regress/testsudoers/test1.out.ok plugins/sudoers/regress/testsudoers/test1.sh plugins/sudoers/regress/testsudoers/test10.out.ok @@ -1061,6 +1081,12 @@ plugins/sudoers/regress/testsudoers/test2.sh plugins/sudoers/regress/testsudoers/test20.out.ok plugins/sudoers/regress/testsudoers/test20.sh +plugins/sudoers/regress/testsudoers/test21.out.ok +plugins/sudoers/regress/testsudoers/test21.sh +plugins/sudoers/regress/testsudoers/test22.out.ok +plugins/sudoers/regress/testsudoers/test22.sh +plugins/sudoers/regress/testsudoers/test23.out.ok +plugins/sudoers/regress/testsudoers/test23.sh plugins/sudoers/regress/testsudoers/test3.out.ok plugins/sudoers/regress/testsudoers/test3.sh plugins/sudoers/regress/testsudoers/test4.out.ok @@ -1275,8 +1301,7 @@ src/sudo_noexec.c src/sudo_plugin_int.h src/sudo_usage.h.in -src/suspend_nopty.c -src/tcsetpgrp_nobg.c +src/suspend_parent.c src/tgetpass.c src/ttyname.c src/utmp.c diff -Nru sudo-1.9.13p3/NEWS sudo-1.9.14p2/NEWS --- sudo-1.9.13p3/NEWS 2023-03-04 16:59:59.000000000 +0000 +++ sudo-1.9.14p2/NEWS 2023-07-15 15:40:42.000000000 +0000 @@ -1,3 +1,119 @@ +What's new in Sudo 1.9.14p2 + + * Fixed a crash on Linux systems introduced in version 1.9.14 when + running a command with a NULL argv[0] if "log_subcmds" or + "intercept" is enabled in sudoers. + + * Fixed a problem with "stair-stepped" output when piping or + redirecting the output of a sudo command that takes user input. + + * Fixed a bug introduced in sudo 1.9.14 that affects matching + sudoers rules containing a Runas_Spec with an empty Runas user. + These rules should only match when sudo's -g option is used but + were matching even without the -g option. GitHub issue #290. + +What's new in Sudo 1.9.14p1 + + * Fixed an invalid free bug in sudo_logsrvd that was introduced + in version 1.9.14 which could cause sudo_logsrvd to crash. + + * The sudoers plugin no longer tries to send the terminal name + to the log server when no terminal is present. This bug was + introduced in version 1.9.14. + +What's new in Sudo 1.9.14 + + * Fixed a bug where if the "intercept" or "log_subcmds" sudoers + option was enabled and a sub-command was run where the first + entry of the argument vector didn't match the command being run. + This resulted in commands like "sudo su -" being killed due to + the mismatch. Bug #1050. + + * The sudoers plugin now canonicalizes command path names before + matching (where possible). This fixes a bug where sudo could + execute the wrong path if there are multiple symbolic links with + the same target and the same base name in sudoers that a user is + allowed to run. GitHub issue #228. + + * Improved command matching when a chroot is specified in sudoers. + The sudoers plugin will now change the root directory id needed + before performing command matching. Previously, the root directory + was simply prepended to the path that was being processed. + + * When NETGROUP_BASE is set in the ldap.conf file, sudo will now + perform its own netgroup lookups of the host name instead of + using the system innetgr(3) function. This guarantees that user + and host netgroup lookups are performed using the same LDAP + server (or servers). + + * Fixed a bug introduced in sudo 1.9.13 that resulted in a missing + " ; " separator between environment variables and the command + in log entries. + + * The visudo utility now displays a warning when it ignores a file + in an include dir such as /etc/sudoers.d. + + * When running a command in a pseudo-terminal, sudo will initialize + the terminal settings even if it is the background process. + Previously, sudo only initialized the pseudo-terminal when running + in the foreground. This fixes an issue where a program that + checks the window size would read the wrong value when sudo was + running in the background. + + * Fixed a bug where only the first two digits of the TSID field + being was logged. Bug #1046. + + * The "log_pty" sudoers option is now enabled by default. To + restore the historic behavior where a command is run in the + user's terminal, add "Defaults !use_pty" to the sudoers file. + GitHub issue #258. + + * Sudo's "-b" option now works when the command is run in a + pseudo-terminal. + + * When disabling core dumps, sudo now only modifies the soft limit + and leaves the hard limit as-is. This avoids problems on Linux + when sudo does not have CAP_SYS_RESOURCE, which may be the case + when run inside a container. GitHub issue #42. + + * Sudo configuration file paths have been converted to colon-separated + lists of paths. This makes it possible to have configuration + files on a read-only file system while still allowing for local + modifications in a different (writable) directory. The new + --enable-adminconf configure option can be used to specify a + directory that is searched for configuration files in preference + to the sysconfdir (which is usually /etc). + + * The "intercept_verify" sudoers option is now only applied when + the "intercept" option is set in sudoers. Previously, it was + also applied when "log_subcmds" was enabled. + + * The NETGROUP_QUERY ldap.conf parameter can now be disabled for + LDAP servers that do not support querying the nisNetgroup object + by its nisNetgroupTriple attribute, while still allowing sudo to + query the LDAP server directly to determine netgroup membership. + + * Fixed a long-standing bug where a sudoers rule without an explicit + runas list allowed the user to run a command as root and any + group instead of just one of the groups that root is a member + of. For example, a rule such as "myuser ALL = ALL" would permit + "sudo -u root -g othergroup" even if root did not belong to + "othergroup". + + * Fixed a bug where a sudoers rule with an explicit runas list + allowed a user to run sudo commands as themselves. For example, + a rule such as "myuser ALL = (root) ALL", "myuser" should only + allow commands to be run as root (optionally using one of root's + groups). However, the rule also allowed the user to run + "sudo -u myuser -g myuser command". + + * Fixed a bug that prevented the user from specifying a group on + the command line via "sudo -g" if the rule's Runas_Spec contained + a Runas_Alias. + + * Sudo now requires a C compiler that conforms to ISO C99 or higher + to build. + What's new in Sudo 1.9.13p3 * Fixed a bug introduced in sudo 1.9.13 that caused a syntax error diff -Nru sudo-1.9.13p3/pathnames.h.in sudo-1.9.14p2/pathnames.h.in --- sudo-1.9.13p3/pathnames.h.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/pathnames.h.in 2023-07-15 15:37:21.000000000 +0000 @@ -58,38 +58,38 @@ #endif /* _PATH_ENVIRONMENT */ /* + * The following paths are controlled via the configure script. + */ + +/* * NOTE: _PATH_SUDO_CONF is usually overridden by the Makefile. */ #ifndef _PATH_SUDO_CONF -# define _PATH_SUDO_CONF "/etc/sudo.conf" +# undef _PATH_SUDO_CONF #endif /* _PATH_SUDO_CONF */ /* * NOTE: _PATH_SUDOERS is usually overridden by the Makefile. */ #ifndef _PATH_SUDOERS -# define _PATH_SUDOERS "/etc/sudoers" +# undef _PATH_SUDOERS #endif /* _PATH_SUDOERS */ /* * NOTE: _PATH_CVTSUDOERS_CONF is usually overridden by the Makefile. */ #ifndef _PATH_CVTSUDOERS_CONF -# define _PATH_CVTSUDOERS_CONF "/etc/cvtsudoers.conf" +# undef _PATH_CVTSUDOERS_CONF #endif /* _PATH_CVTSUDOERS_CONF */ /* * NOTE: _PATH_SUDO_LOGSRVD_CONF is usually overridden by the Makefile. */ #ifndef _PATH_SUDO_LOGSRVD_CONF -# define _PATH_SUDO_LOGSRVD_CONF "/etc/sudo_logsrvd.conf" +# undef _PATH_SUDO_LOGSRVD_CONF #endif /* _PATH_SUDO_LOGSRVD_CONF */ /* - * The following paths are controlled via the configure script. - */ - -/* * Where sudo_logsrvd stores its pid file files. Defaults to * /var/run/sudo/sudo_logsrvd.pid, /var/db/sudo/sudo_logsrvd.pid, * /var/lib/sudo/sudo_logsrvd.pid, /var/adm/sudo/sudo_logsrvd.pid or diff -Nru sudo-1.9.13p3/plugins/audit_json/Makefile.in sudo-1.9.14p2/plugins/audit_json/Makefile.in --- sudo-1.9.13p3/plugins/audit_json/Makefile.in 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/audit_json/Makefile.in 2023-07-15 15:37:21.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2020 Todd C. Miller +# Copyright (c) 2020-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -86,6 +86,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localstatedir = @localstatedir@ diff -Nru sudo-1.9.13p3/plugins/group_file/Makefile.in sudo-1.9.14p2/plugins/group_file/Makefile.in --- sudo-1.9.13p3/plugins/group_file/Makefile.in 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/group_file/Makefile.in 2023-07-15 15:37:21.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2010-2018 Todd C. Miller +# Copyright (c) 2010-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -88,6 +88,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localstatedir = @localstatedir@ diff -Nru sudo-1.9.13p3/plugins/python/Makefile.in sudo-1.9.14p2/plugins/python/Makefile.in --- sudo-1.9.13p3/plugins/python/Makefile.in 2023-02-16 18:43:30.000000000 +0000 +++ sudo-1.9.14p2/plugins/python/Makefile.in 2023-07-15 15:37:21.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2019-2020 Todd C. Miller +# Copyright (c) 2019-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -93,6 +93,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localstatedir = @localstatedir@ diff -Nru sudo-1.9.13p3/plugins/python/pyhelpers.h sudo-1.9.14p2/plugins/python/pyhelpers.h --- sudo-1.9.13p3/plugins/python/pyhelpers.h 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/python/pyhelpers.h 2023-07-15 15:37:23.000000000 +0000 @@ -22,6 +22,9 @@ #define PY_SSIZE_T_CLEAN #include +/* Python may be built with 32-bit time_t support on some platforms. */ +#undef SIZEOF_TIME_T + #include #include "sudo_compat.h" #include "sudo_plugin.h" diff -Nru sudo-1.9.13p3/plugins/sample/Makefile.in sudo-1.9.14p2/plugins/sample/Makefile.in --- sudo-1.9.13p3/plugins/sample/Makefile.in 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sample/Makefile.in 2023-07-15 15:37:21.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2011-2022 Todd C. Miller +# Copyright (c) 2011-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -87,6 +87,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localstatedir = @localstatedir@ diff -Nru sudo-1.9.13p3/plugins/sample_approval/Makefile.in sudo-1.9.14p2/plugins/sample_approval/Makefile.in --- sudo-1.9.13p3/plugins/sample_approval/Makefile.in 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sample_approval/Makefile.in 2023-07-15 15:37:21.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2020 Todd C. Miller +# Copyright (c) 2020-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -86,6 +86,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localstatedir = @localstatedir@ diff -Nru sudo-1.9.13p3/plugins/sudoers/alias.c sudo-1.9.14p2/plugins/sudoers/alias.c --- sudo-1.9.13p3/plugins/sudoers/alias.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/alias.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2004-2005, 2007-2019 + * Copyright (c) 2004-2005, 2007-2021, 2023 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -66,7 +66,8 @@ * alias to mark it as unused. */ struct alias * -alias_get(struct sudoers_parse_tree *parse_tree, const char *name, int type) +alias_get(const struct sudoers_parse_tree *parse_tree, const char *name, + int type) { struct alias key; struct rbnode *node; @@ -197,7 +198,7 @@ * Returns true if there are no aliases in the parse_tree, else false. */ bool -no_aliases(struct sudoers_parse_tree *parse_tree) +no_aliases(const struct sudoers_parse_tree *parse_tree) { debug_decl(no_aliases, SUDOERS_DEBUG_ALIAS); debug_return_bool(parse_tree->aliases == NULL || @@ -373,5 +374,5 @@ } } - debug_return_int(errors ? false : true); + debug_return_bool(errors ? false : true); } diff -Nru sudo-1.9.13p3/plugins/sudoers/audit.c sudo-1.9.14p2/plugins/sudoers/audit.c --- sudo-1.9.13p3/plugins/sudoers/audit.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/audit.c 2023-07-15 15:37:23.000000000 +0000 @@ -227,7 +227,6 @@ case 'i': if (strncmp(*cur, "iolog_path=", sizeof("iolog_path=") - 1) == 0) { evlog->iolog_path = *cur + sizeof("iolog_path=") - 1; - evlog->iolog_file = sudo_basename(evlog->iolog_path); continue; } break; diff -Nru sudo-1.9.13p3/plugins/sudoers/auth/bsdauth.c sudo-1.9.14p2/plugins/sudoers/auth/bsdauth.c --- sudo-1.9.13p3/plugins/sudoers/auth/bsdauth.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/auth/bsdauth.c 2023-07-15 15:37:21.000000000 +0000 @@ -54,6 +54,8 @@ login_cap_t *lc; }; +static char *login_style; /* user may set style via -a option */ + int bsdauth_init(struct passwd *pw, sudo_auth *auth) { @@ -65,42 +67,42 @@ debug_return_int(AUTH_SUCCESS); /* Get login class based on auth user, which may not be invoking user. */ - if (pw->pw_class && *pw->pw_class) + if (pw->pw_class && *pw->pw_class) { state.lc = login_getclass(pw->pw_class); - else - state.lc = login_getclass(pw->pw_uid ? (char *)LOGIN_DEFCLASS : (char *)LOGIN_DEFROOTCLASS); - if (state.lc == NULL) { - log_warning(0, - N_("unable to get login class for user %s"), pw->pw_name); - debug_return_int(AUTH_FATAL); + } else { + state.lc = login_getclass( + pw->pw_uid ? (char *)LOGIN_DEFCLASS : (char *)LOGIN_DEFROOTCLASS); } - - if ((state.as = auth_open()) == NULL) { - log_warning(0, N_("unable to begin bsd authentication")); - login_close(state.lc); - debug_return_int(AUTH_FATAL); + if (state.lc == NULL) { + log_warning(0, N_("unable to get login class for user %s"), + pw->pw_name); + goto bad; } - /* XXX - maybe check the auth style earlier? */ login_style = login_getstyle(state.lc, login_style, (char *)"auth-sudo"); if (login_style == NULL) { log_warningx(0, N_("invalid authentication type")); - auth_close(state.as); - login_close(state.lc); - debug_return_int(AUTH_FATAL); + goto bad; } - if (auth_setitem(state.as, AUTHV_STYLE, login_style) < 0 || + if ((state.as = auth_open()) == NULL) { + log_warning(0, N_("unable to begin BSD authentication")); + goto bad; + } + + if (auth_setitem(state.as, AUTHV_STYLE, login_style) < 0 || auth_setitem(state.as, AUTHV_NAME, pw->pw_name) < 0 || auth_setitem(state.as, AUTHV_CLASS, login_class) < 0) { log_warningx(0, N_("unable to initialize BSD authentication")); - auth_close(state.as); - login_close(state.lc); - debug_return_int(AUTH_FATAL); + goto bad; } auth->data = (void *) &state; debug_return_int(AUTH_SUCCESS); +bad: + auth_close(state.as); + login_close(state.lc); + debug_return_int(AUTH_FATAL); } int @@ -209,4 +211,10 @@ debug_return_int(AUTH_SUCCESS); } +void +bsdauth_set_style(const char *style) +{ + login_style = (char *)style; +} + #endif /* HAVE_BSD_AUTH_H */ diff -Nru sudo-1.9.13p3/plugins/sudoers/auth/sudo_auth.h sudo-1.9.14p2/plugins/sudoers/auth/sudo_auth.h --- sudo-1.9.13p3/plugins/sudoers/auth/sudo_auth.h 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/auth/sudo_auth.h 2023-07-15 15:37:23.000000000 +0000 @@ -63,6 +63,7 @@ int bsdauth_verify(struct passwd *pw, const char *prompt, sudo_auth *auth, struct sudo_conv_callback *callback); int bsdauth_approval(struct passwd *pw, sudo_auth *auth, bool exempt); int bsdauth_cleanup(struct passwd *pw, sudo_auth *auth, bool force); +void bsdauth_set_style(const char *style); int sudo_aix_init(struct passwd *pw, sudo_auth *auth); int sudo_aix_verify(struct passwd *pw, const char *pass, sudo_auth *auth, struct sudo_conv_callback *callback); int sudo_aix_cleanup(struct passwd *pw, sudo_auth *auth, bool force); diff -Nru sudo-1.9.13p3/plugins/sudoers/canon_path.c sudo-1.9.14p2/plugins/sudoers/canon_path.c --- sudo-1.9.13p3/plugins/sudoers/canon_path.c 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/canon_path.c 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,200 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2023 Todd C. Miller + * + * 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 + +#include +#include +#include +#include +#include +#include +#include + +#include "sudoers.h" +#include "redblack.h" + +static struct rbtree *canon_cache; + +/* + * A cache_item includes storage for both the original path and the + * resolved path. The resolved path is directly embedded into the + * struct so that we can find the start of the struct cache_item + * given the value of resolved. Storage for pathname is embedded + * at the end with resolved. + */ +struct cache_item { + unsigned int refcnt; + char *pathname; + char resolved[]; +}; + +/* + * Compare function for canon_cache. + * v1 is the key to find or data to insert, v2 is in-tree data. + */ +static int +compare(const void *v1, const void *v2) +{ + const struct cache_item *ci1 = (const struct cache_item *)v1; + const struct cache_item *ci2 = (const struct cache_item *)v2; + return strcmp(ci1->pathname, ci2->pathname); +} + +/* Convert a pointer returned by canon_path() to a struct cache_item *. */ +#define resolved_to_item(_r) ((struct cache_item *)((_r) - offsetof(struct cache_item, resolved))) + +/* + * Delete a ref from item and free if the refcount reaches 0. + */ +static void +canon_path_free_item(void *v) +{ + struct cache_item *item = v; + debug_decl(canon_path_free_item, SUDOERS_DEBUG_UTIL); + + if (--item->refcnt == 0) + free(item); + + debug_return; +} + +/* + * Delete a ref from the item containing "resolved" and free if + * the refcount reaches 0. + */ +void +canon_path_free(char *resolved) +{ + debug_decl(canon_path_free, SUDOERS_DEBUG_UTIL); + if (resolved != NULL) + canon_path_free_item(resolved_to_item(resolved)); + debug_return; +} + +/* + * Free canon_cache. + * This only removes the reference for that the cache owns. + * Other references remain valid until canon_path_free() is called. + */ +void +canon_path_free_cache(void) +{ + debug_decl(canon_path_free_cache, SUDOERS_DEBUG_UTIL); + + if (canon_cache != NULL) { + rbdestroy(canon_cache, canon_path_free_item); + canon_cache = NULL; + } + + debug_return; +} + +/* + * Like realpath(3) but caches the result. Returns an entry from the + * cache on success (with an added reference) or NULL on failure. + */ +char * +canon_path(const char *inpath) +{ + size_t item_size, inlen, reslen = 0; + char *resolved, resbuf[PATH_MAX]; + struct cache_item key, *item; + struct rbnode *node = NULL; + debug_decl(canon_path, SUDOERS_DEBUG_UTIL); + + if (canon_cache == NULL) { + canon_cache = rbcreate(compare); + if (canon_cache == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + debug_return_str(NULL); + } + } else { + /* Check cache. */ + key.pathname = (char *)inpath; + if ((node = rbfind(canon_cache, &key)) != NULL) { + item = node->data; + goto done; + } + } + + /* + * Not cached, call realpath(3). + * Older realpath() doesn't support passing a NULL buffer. + * We special-case the empty string to resolve to "/". + * XXX - warn on errors other than ENOENT? + */ + if (*inpath == '\0') + resolved = (char *)"/"; + else + resolved = realpath(inpath, resbuf); + + inlen = strlen(inpath); + /* one for NULL terminator of resolved, one for NULL terminator of pathname */ + item_size = sizeof(*item) + inlen + 2; + if (resolved != NULL) { + reslen = strlen(resolved); + item_size += reslen; + } + item = malloc(item_size); + if (item == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + debug_return_str(NULL); + } + if (resolved != NULL) + memcpy(item->resolved, resolved, reslen); + item->resolved[reslen] = '\0'; + item->pathname = item->resolved + reslen + 1; + memcpy(item->pathname, inpath, inlen); + item->pathname[inlen] = '\0'; + item->refcnt = 1; + switch (rbinsert(canon_cache, item, NULL)) { + case 1: + /* should not happen */ + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "path \"%s\" already exists in the cache", inpath); + item->refcnt = 0; + break; + case -1: + /* can't cache item, just return it */ + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "can't cache path \"%s\"", inpath); + item->refcnt = 0; + break; + } +done: + if (item->refcnt != 0) { + sudo_debug_printf(SUDO_DEBUG_DEBUG, + "%s: path %s -> %s (%s)", __func__, inpath, + item->resolved[0] ? item->resolved : "NULL", + node ? "cache hit" : "cached"); + } + if (item->resolved[0] == '\0') { + /* negative result, free item if not cached */ + if (item->refcnt == 0) + free(item); + debug_return_str(NULL); + } + item->refcnt++; + debug_return_str(item->resolved); +} diff -Nru sudo-1.9.13p3/plugins/sudoers/check.h sudo-1.9.14p2/plugins/sudoers/check.h --- sudo-1.9.13p3/plugins/sudoers/check.h 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/check.h 2023-07-15 15:37:23.000000000 +0000 @@ -82,6 +82,8 @@ bool timestamp_lock(void *vcookie, struct passwd *pw); bool timestamp_update(void *vcookie, struct passwd *pw); int timestamp_status(void *vcookie, struct passwd *pw); +uid_t timestamp_get_uid(void); +void timestamp_set_owner(uid_t uid, gid_t gid); int get_starttime(pid_t pid, struct timespec *starttime); bool already_lectured(void); int set_lectured(void); diff -Nru sudo-1.9.13p3/plugins/sudoers/cvtsudoers.c sudo-1.9.14p2/plugins/sudoers/cvtsudoers.c --- sudo-1.9.13p3/plugins/sudoers/cvtsudoers.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/cvtsudoers.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2018-2021 Todd C. Miller + * Copyright (c) 2018-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -35,6 +35,7 @@ #endif /* HAVE_STRINGS_H */ #include #include +#include #include #include #ifdef HAVE_GETOPT_LONG @@ -112,7 +113,7 @@ enum sudoers_formats input_format = format_sudoers; const char *input_file = "-"; const char *output_file = "-"; - const char *conf_file = _PATH_CVTSUDOERS_CONF; + const char *conf_file = NULL; const char *grfile = NULL, *pwfile = NULL; const char *cp, *errstr; int ch, exitcode = EXIT_FAILURE; @@ -134,7 +135,7 @@ textdomain("sudoers"); /* Initialize early, before any "goto done". */ - init_parse_tree(&merged_tree, NULL, NULL); + init_parse_tree(&merged_tree, NULL, NULL, NULL); /* Read debug and plugin sections of sudo.conf. */ if (sudo_conf_read(NULL, SUDO_CONF_DEBUG|SUDO_CONF_PLUGINS) == -1) @@ -390,7 +391,7 @@ parse_tree = malloc(sizeof(*parse_tree)); if (parse_tree == NULL) sudo_fatalx("%s", U_("unable to allocate memory")); - init_parse_tree(parse_tree, lhost, shost); + init_parse_tree(parse_tree, lhost, shost, NULL); TAILQ_INSERT_TAIL(&parse_trees, parse_tree, entries); /* Setup defaults data structures. */ @@ -548,36 +549,56 @@ } static struct cvtsudoers_config * -cvtsudoers_conf_read(const char *conf_file) +cvtsudoers_conf_read(const char *path) { - char *line = NULL; + char conf_file[PATH_MAX], *line = NULL; size_t linesize = 0; - FILE *fp; + FILE *fp = NULL; + int fd = -1; debug_decl(cvtsudoers_conf_read, SUDOERS_DEBUG_UTIL); - if ((fp = fopen(conf_file, "r")) == NULL) + if (path != NULL) { + /* Empty string means use the defaults. */ + if (*path == '\0') + debug_return_ptr(&cvtsudoers_config); + if (strlcpy(conf_file, path, sizeof(conf_file)) >= sizeof(conf_file)) + errno = ENAMETOOLONG; + else + fd = open(conf_file, O_RDONLY); + } else { + fd = sudo_open_conf_path(_PATH_CVTSUDOERS_CONF, conf_file, + sizeof(conf_file), NULL); + } + if (fd != -1) + fp = fdopen(fd, "r"); + if (fp == NULL) { + if (path != NULL || errno != ENOENT) + sudo_warn("%s", conf_file); debug_return_ptr(&cvtsudoers_config); + } while (sudo_parseln(&line, &linesize, NULL, fp, 0) != -1) { - char *cp, *keyword, *value; + char *keyword, *value; + size_t len; if (*line == '\0') continue; /* skip empty line */ /* Parse keyword = value */ keyword = line; - if ((cp = strchr(line, '=')) == NULL) + if ((value = strchr(line, '=')) == NULL || value == line) continue; - value = cp-- + 1; + len = value - line; - /* Trim whitespace after keyword. */ - while (cp != line && isblank((unsigned char)cp[-1])) - cp--; - *cp = '\0'; + /* Trim whitespace after keyword and NUL-terminate. */ + while (len > 0 && isblank((unsigned char)line[len - 1])) + len--; + line[len] = '\0'; /* Trim whitespace before value. */ - while (isblank((unsigned char)*value)) + do { value++; + } while (isblank((unsigned char)*value)); /* Look up keyword in config tables */ if (!cvtsudoers_parse_keyword(conf_file, keyword, value, cvtsudoers_conf_vars)) @@ -749,7 +770,7 @@ input_file = "stdin"; } else if ((sudoersin = fopen(input_file, "r")) == NULL) sudo_fatal(U_("unable to open %s"), input_file); - init_parser(input_file, false, true); + init_parser(input_file, NULL); if (sudoersparse() && !parse_error) { sudo_warnx(U_("failed to parse %s file, unknown error"), input_file); parse_error = true; @@ -758,7 +779,7 @@ } FILE * -open_sudoers(const char *file, bool doedit, bool *keepopen) +open_sudoers(const char *file, char **outfile, bool doedit, bool *keepopen) { return fopen(file, "r"); } diff -Nru sudo-1.9.13p3/plugins/sudoers/cvtsudoers_csv.c sudo-1.9.14p2/plugins/sudoers/cvtsudoers_csv.c --- sudo-1.9.13p3/plugins/sudoers/cvtsudoers_csv.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/cvtsudoers_csv.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2021 Todd C. Miller + * Copyright (c) 2021-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -36,7 +36,7 @@ #include "cvtsudoers.h" #include -static void print_member_list_csv(FILE *fp, struct sudoers_parse_tree *parse_tree, struct member_list *members, bool negated, int alias_type, bool expand_aliases); +static void print_member_list_csv(FILE *fp, const struct sudoers_parse_tree *parse_tree, struct member_list *members, bool negated, int alias_type, bool expand_aliases); /* * Print sudoOptions from a defaults_list. @@ -206,8 +206,9 @@ * See print_member_int() in parse.c. */ static void -print_member_csv(FILE *fp, struct sudoers_parse_tree *parse_tree, char *name, - int type, bool negated, bool quoted, int alias_type, bool expand_aliases) +print_member_csv(FILE *fp, const struct sudoers_parse_tree *parse_tree, + char *name, int type, bool negated, bool quoted, int alias_type, + bool expand_aliases) { struct alias *a; char *str; @@ -258,7 +259,7 @@ * See print_member_int() in parse.c. */ static void -print_member_list_csv(FILE *fp, struct sudoers_parse_tree *parse_tree, +print_member_list_csv(FILE *fp, const struct sudoers_parse_tree *parse_tree, struct member_list *members, bool negated, int alias_type, bool expand_aliases) { @@ -287,7 +288,8 @@ * Print the binding for a Defaults entry of the specified type. */ static void -print_defaults_binding_csv(FILE *fp, struct sudoers_parse_tree *parse_tree, +print_defaults_binding_csv(FILE *fp, + const struct sudoers_parse_tree *parse_tree, struct defaults_binding *binding, int type, bool expand_aliases) { int alias_type; @@ -312,7 +314,7 @@ * and boolean flags use true/false for the value. */ static bool -print_defaults_csv(FILE *fp, struct sudoers_parse_tree *parse_tree, +print_defaults_csv(FILE *fp, const struct sudoers_parse_tree *parse_tree, bool expand_aliases) { struct defaults *def; @@ -377,8 +379,7 @@ * Callback for alias_apply() to print an alias entry. */ static int -print_alias_csv(struct sudoers_parse_tree *parse_tree, struct alias *a, void *v -) +print_alias_csv(struct sudoers_parse_tree *parse_tree, struct alias *a, void *v) { FILE *fp = v; const char *title; @@ -400,7 +401,7 @@ * Print all aliases in CSV format: */ static bool -print_aliases_csv(FILE *fp, struct sudoers_parse_tree *parse_tree) +print_aliases_csv(FILE *fp, const struct sudoers_parse_tree *parse_tree) { debug_decl(print_aliases_csv, SUDOERS_DEBUG_UTIL); @@ -410,7 +411,8 @@ /* Heading line. */ fputs("alias_type,alias_name,members\n", fp); - alias_apply(parse_tree, print_alias_csv, fp); + /* print_alias_csv() does not modify parse_tree. */ + alias_apply((struct sudoers_parse_tree *)parse_tree, print_alias_csv, fp); putc('\n', fp); debug_return_bool(true); @@ -420,7 +422,7 @@ * Print a Cmnd_Spec in CSV format. */ static void -print_cmndspec_csv(FILE *fp, struct sudoers_parse_tree *parse_tree, +print_cmndspec_csv(FILE *fp, const struct sudoers_parse_tree *parse_tree, struct cmndspec *cs, struct cmndspec **nextp, struct defaults_list *options, bool expand_aliases) { @@ -626,7 +628,7 @@ * Print a single User_Spec. */ static bool -print_userspec_csv(FILE *fp, struct sudoers_parse_tree *parse_tree, +print_userspec_csv(FILE *fp, const struct sudoers_parse_tree *parse_tree, struct userspec *us, bool expand_aliases) { struct privilege *priv; @@ -660,7 +662,7 @@ * Print User_Specs. */ static bool -print_userspecs_csv(FILE *fp, struct sudoers_parse_tree *parse_tree, +print_userspecs_csv(FILE *fp, const struct sudoers_parse_tree *parse_tree, bool expand_aliases) { struct userspec *us; @@ -683,7 +685,7 @@ * Export the parsed sudoers file in CSV format. */ bool -convert_sudoers_csv(struct sudoers_parse_tree *parse_tree, +convert_sudoers_csv(const struct sudoers_parse_tree *parse_tree, const char *output_file, struct cvtsudoers_config *conf) { bool ret = true; diff -Nru sudo-1.9.13p3/plugins/sudoers/cvtsudoers.h sudo-1.9.14p2/plugins/sudoers/cvtsudoers.h --- sudo-1.9.13p3/plugins/sudoers/cvtsudoers.h 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/cvtsudoers.h 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2018 Todd C. Miller + * Copyright (c) 2018, 2021-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -90,13 +90,13 @@ void log_warnx(const char *fmt, ...) sudo_printflike(1, 2); /* cvtsudoers_csv.c */ -bool convert_sudoers_csv(struct sudoers_parse_tree *parse_tree, const char *output_file, struct cvtsudoers_config *conf); +bool convert_sudoers_csv(const struct sudoers_parse_tree *parse_tree, const char *output_file, struct cvtsudoers_config *conf); /* cvtsudoers_json.c */ -bool convert_sudoers_json(struct sudoers_parse_tree *parse_tree, const char *output_file, struct cvtsudoers_config *conf); +bool convert_sudoers_json(const struct sudoers_parse_tree *parse_tree, const char *output_file, struct cvtsudoers_config *conf); /* cvtsudoers_ldif.c */ -bool convert_sudoers_ldif(struct sudoers_parse_tree *parse_tree, const char *output_file, struct cvtsudoers_config *conf); +bool convert_sudoers_ldif(const struct sudoers_parse_tree *parse_tree, const char *output_file, struct cvtsudoers_config *conf); /* cvtsudoers_merge.c */ struct sudoers_parse_tree *merge_sudoers(struct sudoers_parse_tree_list *parse_trees, struct sudoers_parse_tree *merged_tree); diff -Nru sudo-1.9.13p3/plugins/sudoers/cvtsudoers_json.c sudo-1.9.14p2/plugins/sudoers/cvtsudoers_json.c --- sudo-1.9.13p3/plugins/sudoers/cvtsudoers_json.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/cvtsudoers_json.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2013-2021 Todd C. Miller + * Copyright (c) 2013-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -156,8 +156,8 @@ */ static void print_member_json_int(struct json_container *jsonc, - struct sudoers_parse_tree *parse_tree, char *name, int type, bool negated, - enum word_type word_type, bool expand_aliases) + const struct sudoers_parse_tree *parse_tree, char *name, int type, + bool negated, enum word_type word_type, bool expand_aliases) { struct json_value value; const char *typestr = NULL; @@ -330,7 +330,7 @@ static void print_member_json(struct json_container *jsonc, - struct sudoers_parse_tree *parse_tree, struct member *m, + const struct sudoers_parse_tree *parse_tree, struct member *m, enum word_type word_type, bool expand_aliases) { print_member_json_int(jsonc, parse_tree, m->name, m->type, m->negated, @@ -342,7 +342,8 @@ * the type specified in the closure. */ static int -print_alias_json(struct sudoers_parse_tree *parse_tree, struct alias *a, void *v) +print_alias_json(struct sudoers_parse_tree *parse_tree, struct alias *a, + void *v) { struct json_alias_closure *closure = v; struct member *m; @@ -371,8 +372,8 @@ */ static void print_binding_json(struct json_container *jsonc, - struct sudoers_parse_tree *parse_tree, struct defaults_binding *binding, - int type, bool expand_aliases) + const struct sudoers_parse_tree *parse_tree, + struct defaults_binding *binding, int type, bool expand_aliases) { struct member *m; debug_decl(print_binding_json, SUDOERS_DEBUG_UTIL); @@ -462,7 +463,7 @@ */ static void print_defaults_json(struct json_container *jsonc, - struct sudoers_parse_tree *parse_tree, bool expand_aliases) + const struct sudoers_parse_tree *parse_tree, bool expand_aliases) { struct json_value value; struct defaults *def, *next; @@ -534,16 +535,19 @@ */ static void print_aliases_by_type_json(struct json_container *jsonc, - struct sudoers_parse_tree *parse_tree, int alias_type, const char *title) + const struct sudoers_parse_tree *parse_tree, int alias_type, + const char *title) { struct json_alias_closure closure; debug_decl(print_aliases_by_type_json, SUDOERS_DEBUG_UTIL); + /* print_alias_json() does not modify parse_tree. */ closure.jsonc = jsonc; closure.count = 0; closure.alias_type = alias_type; closure.title = title; - alias_apply(parse_tree, print_alias_json, &closure); + alias_apply((struct sudoers_parse_tree *)parse_tree, print_alias_json, + &closure); if (closure.count != 0) { sudo_json_close_array(jsonc); sudo_json_close_object(jsonc); @@ -557,7 +561,7 @@ */ static void print_aliases_json(struct json_container *jsonc, - struct sudoers_parse_tree *parse_tree) + const struct sudoers_parse_tree *parse_tree) { debug_decl(print_aliases_json, SUDOERS_DEBUG_UTIL); @@ -595,7 +599,7 @@ */ static void print_cmndspec_json(struct json_container *jsonc, - struct sudoers_parse_tree *parse_tree, struct cmndspec *cs, + const struct sudoers_parse_tree *parse_tree, struct cmndspec *cs, struct cmndspec **nextp, struct defaults_list *options, bool expand_aliases) { char timebuf[sizeof("20120727121554Z")]; @@ -814,7 +818,7 @@ */ static void print_userspec_json(struct json_container *jsonc, - struct sudoers_parse_tree *parse_tree, struct userspec *us, + const struct sudoers_parse_tree *parse_tree, struct userspec *us, bool expand_aliases) { struct privilege *priv; @@ -864,7 +868,7 @@ static void print_userspecs_json(struct json_container *jsonc, - struct sudoers_parse_tree *parse_tree, bool expand_aliases) + const struct sudoers_parse_tree *parse_tree, bool expand_aliases) { struct userspec *us; debug_decl(print_userspecs_json, SUDOERS_DEBUG_UTIL); @@ -885,7 +889,7 @@ * Export the parsed sudoers file in JSON format. */ bool -convert_sudoers_json(struct sudoers_parse_tree *parse_tree, +convert_sudoers_json(const struct sudoers_parse_tree *parse_tree, const char *output_file, struct cvtsudoers_config *conf) { struct json_container jsonc; diff -Nru sudo-1.9.13p3/plugins/sudoers/cvtsudoers_ldif.c sudo-1.9.14p2/plugins/sudoers/cvtsudoers_ldif.c --- sudo-1.9.13p3/plugins/sudoers/cvtsudoers_ldif.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/cvtsudoers_ldif.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2018-2021 Todd C. Miller + * Copyright (c) 2018-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -126,7 +126,7 @@ * Print sudoOptions from a defaults_list. */ static bool -print_options_ldif(FILE *fp, struct defaults_list *options) +print_options_ldif(FILE *fp, const struct defaults_list *options) { struct defaults *opt; char *attr_val; @@ -161,8 +161,8 @@ * Print global Defaults in a single sudoRole object. */ static bool -print_global_defaults_ldif(FILE *fp, struct sudoers_parse_tree *parse_tree, - const char *base) +print_global_defaults_ldif(FILE *fp, + const struct sudoers_parse_tree *parse_tree, const char *base) { unsigned int count = 0; struct sudo_lbuf lbuf; @@ -258,8 +258,8 @@ * See print_member_int() in parse.c. */ static void -print_member_ldif(FILE *fp, struct sudoers_parse_tree *parse_tree, char *name, - int type, bool negated, int alias_type, const char *attr_name) +print_member_ldif(FILE *fp, const struct sudoers_parse_tree *parse_tree, + char *name, int type, bool negated, int alias_type, const char *attr_name) { struct alias *a; struct member *m; @@ -313,7 +313,7 @@ * merge adjacent entries that are identical in all but the command. */ static void -print_cmndspec_ldif(FILE *fp, struct sudoers_parse_tree *parse_tree, +print_cmndspec_ldif(FILE *fp, const struct sudoers_parse_tree *parse_tree, struct cmndspec *cs, struct cmndspec **nextp, struct defaults_list *options) { char timebuf[sizeof("20120727121554Z")]; @@ -607,7 +607,7 @@ * Print a single User_Spec. */ static bool -print_userspec_ldif(FILE *fp, struct sudoers_parse_tree *parse_tree, +print_userspec_ldif(FILE *fp, const struct sudoers_parse_tree *parse_tree, struct userspec *us, struct cvtsudoers_config *conf) { struct privilege *priv; @@ -676,7 +676,7 @@ * Print User_Specs. */ static bool -print_userspecs_ldif(FILE *fp, struct sudoers_parse_tree *parse_tree, +print_userspecs_ldif(FILE *fp, const struct sudoers_parse_tree *parse_tree, struct cvtsudoers_config *conf) { struct userspec *us; @@ -693,7 +693,7 @@ * Export the parsed sudoers file in LDIF format. */ bool -convert_sudoers_ldif(struct sudoers_parse_tree *parse_tree, +convert_sudoers_ldif(const struct sudoers_parse_tree *parse_tree, const char *output_file, struct cvtsudoers_config *conf) { bool ret = true; diff -Nru sudo-1.9.13p3/plugins/sudoers/defaults.c sudo-1.9.14p2/plugins/sudoers/defaults.c --- sudo-1.9.13p3/plugins/sudoers/defaults.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/defaults.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1999-2005, 2007-2022 + * Copyright (c) 1999-2005, 2007-2023 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -539,9 +539,6 @@ #ifdef HAVE_SELINUX def_selinux = true; #endif -#ifdef HAVE_INNETGR - def_use_netgroups = true; -#endif #ifdef _PATH_SUDO_ADMIN_FLAG if ((def_admin_flag = strdup(_PATH_SUDO_ADMIN_FLAG)) == NULL) goto oom; @@ -550,6 +547,7 @@ goto oom; def_intercept_type = dso; def_intercept_verify = true; + def_use_netgroups = true; def_netgroup_tuple = false; def_sudoedit_checkdir = true; def_iolog_mode = S_IRUSR|S_IWUSR; @@ -559,6 +557,7 @@ def_log_format = sudo; def_runas_allow_unknown_id = false; def_noninteractive_auth = false; + def_use_pty = true; /* Syslog options need special care since they both strings and ints */ #if (LOGGING & SLOG_SYSLOG) @@ -800,7 +799,7 @@ * Check all defaults entries without actually setting them. */ bool -check_defaults(struct sudoers_parse_tree *parse_tree, bool quiet) +check_defaults(const struct sudoers_parse_tree *parse_tree, bool quiet) { struct defaults *d; bool ret = true; diff -Nru sudo-1.9.13p3/plugins/sudoers/defaults.h sudo-1.9.14p2/plugins/sudoers/defaults.h --- sudo-1.9.13p3/plugins/sudoers/defaults.h 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/defaults.h 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1999-2005, 2008-2022 + * Copyright (c) 1999-2005, 2008-2023 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -145,7 +145,7 @@ bool init_defaults(void); 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 check_defaults(const 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); bool cb_passprompt_regex(const char *file, int line, int column, const union sudo_defs_val *sd_un, int op); diff -Nru sudo-1.9.13p3/plugins/sudoers/digestname.c sudo-1.9.14p2/plugins/sudoers/digestname.c --- sudo-1.9.13p3/plugins/sudoers/digestname.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/digestname.c 2023-07-15 15:37:21.000000000 +0000 @@ -29,7 +29,7 @@ #include "parse.h" const char * -digest_type_to_name(int digest_type) +digest_type_to_name(unsigned int digest_type) { const char *digest_name; debug_decl(digest_type_to_name, SUDOERS_DEBUG_UTIL); diff -Nru sudo-1.9.13p3/plugins/sudoers/editor.c sudo-1.9.14p2/plugins/sudoers/editor.c --- sudo-1.9.13p3/plugins/sudoers/editor.c 2023-02-14 16:53:34.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/editor.c 2023-07-15 15:37:23.000000000 +0000 @@ -147,7 +147,7 @@ goto oom; /* 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, + if (find_path(editor, &editor_path, &user_editor_sb, getenv("PATH"), 0, allowlist) != FOUND) { errno = ENOENT; goto bad; diff -Nru sudo-1.9.13p3/plugins/sudoers/file.c sudo-1.9.14p2/plugins/sudoers/file.c --- sudo-1.9.13p3/plugins/sudoers/file.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/file.c 2023-07-15 15:37:21.000000000 +0000 @@ -27,7 +27,6 @@ #include #include "sudoers.h" -#include "parse.h" #include "sudo_lbuf.h" #include @@ -59,6 +58,7 @@ { debug_decl(sudo_file_open, SUDOERS_DEBUG_NSS); struct sudo_file_handle *handle; + char *outfile = NULL; /* Note: relies on defaults being initialized early. */ if (def_ignore_local_sudoers) @@ -72,9 +72,16 @@ handle = malloc(sizeof(*handle)); if (handle != NULL) { - handle->fp = open_sudoers(sudoers_file, false, NULL); + const struct sudoers_parser_config *conf = policy_sudoers_conf(); + handle->fp = open_sudoers(conf->sudoers_path, &outfile, false, NULL); if (handle->fp != NULL) { - init_parse_tree(&handle->parse_tree, NULL, NULL); + init_parser(NULL, policy_sudoers_conf()); + init_parse_tree(&handle->parse_tree, NULL, NULL, nss); + if (outfile != NULL) { + /* Update path to open sudoers file. */ + sudo_rcstr_delref(sudoers); + sudoers = outfile; + } } else { free(handle); handle = NULL; @@ -88,7 +95,7 @@ * Parse and return the specified sudoers file. */ static struct sudoers_parse_tree * -sudo_file_parse(struct sudo_nss *nss) +sudo_file_parse(const struct sudo_nss *nss) { debug_decl(sudo_file_close, SUDOERS_DEBUG_NSS); struct sudo_file_handle *handle = nss->handle; @@ -102,7 +109,7 @@ sudoersin = handle->fp; error = sudoersparse(); - if (error || (parse_error && !sudoers_recovery)) { + if (error || (parse_error && !sudoers_error_recovery())) { /* unrecoverable error */ debug_return_ptr(NULL); } @@ -117,7 +124,7 @@ * No need for explicit sudoers queries, the parse function handled it. */ static int -sudo_file_query(struct sudo_nss *nss, struct passwd *pw) +sudo_file_query(const struct sudo_nss *nss, struct passwd *pw) { debug_decl(sudo_file_query, SUDOERS_DEBUG_NSS); debug_return_int(0); @@ -127,7 +134,7 @@ * No need to get defaults for sudoers file, the parse function handled it. */ static int -sudo_file_getdefs(struct sudo_nss *nss) +sudo_file_getdefs(const struct sudo_nss *nss) { debug_decl(sudo_file_getdefs, SUDOERS_DEBUG_NSS); debug_return_int(0); diff -Nru sudo-1.9.13p3/plugins/sudoers/filedigest.c sudo-1.9.14p2/plugins/sudoers/filedigest.c --- sudo-1.9.13p3/plugins/sudoers/filedigest.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/filedigest.c 2023-07-15 15:37:23.000000000 +0000 @@ -34,7 +34,8 @@ #include "sudo_digest.h" unsigned char * -sudo_filedigest(int fd, const char *file, int digest_type, size_t *digest_len) +sudo_filedigest(int fd, const char *file, unsigned int digest_type, + size_t *digest_len) { unsigned char *file_digest = NULL; unsigned char buf[32 * 1024]; @@ -46,7 +47,7 @@ *digest_len = sudo_digest_getlen(digest_type); if (*digest_len == (size_t)-1) { - sudo_warnx(U_("unsupported digest type %d for %s"), digest_type, file); + sudo_warnx(U_("unsupported digest type %u for %s"), digest_type, file); goto bad; } diff -Nru sudo-1.9.13p3/plugins/sudoers/find_path.c sudo-1.9.14p2/plugins/sudoers/find_path.c --- sudo-1.9.13p3/plugins/sudoers/find_path.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/find_path.c 2023-07-15 15:37:21.000000000 +0000 @@ -43,14 +43,14 @@ * On failure, returns false. */ static bool -cmnd_allowed(char *cmnd, size_t cmnd_size, const char *runchroot, - struct stat *cmnd_sbp, char * const *allowlist) +cmnd_allowed(char *cmnd, size_t cmnd_size, struct stat *cmnd_sbp, + char * const *allowlist) { const char *cmnd_base; char * const *al; debug_decl(cmnd_allowed, SUDOERS_DEBUG_UTIL); - if (!sudo_goodpath(cmnd, runchroot, cmnd_sbp)) + if (!sudo_goodpath(cmnd, cmnd_sbp)) debug_return_bool(false); if (allowlist == NULL) @@ -67,7 +67,7 @@ if (strcmp(cmnd_base, base) != 0) continue; - if (sudo_goodpath(path, runchroot, &sb) && + if (sudo_goodpath(path, &sb) && sb.st_dev == cmnd_sbp->st_dev && sb.st_ino == cmnd_sbp->st_ino) { /* Overwrite cmnd with safe version from allowlist. */ if (strlcpy(cmnd, path, cmnd_size) < cmnd_size) @@ -87,8 +87,7 @@ */ int find_path(const char *infile, char **outfile, struct stat *sbp, - const char *path, const char *runchroot, int ignore_dot, - char * const *allowlist) + const char *path, int ignore_dot, char * const *allowlist) { char command[PATH_MAX]; const char *cp, *ep, *pathend; @@ -109,8 +108,7 @@ errno = ENAMETOOLONG; debug_return_int(NOT_FOUND_ERROR); } - found = cmnd_allowed(command, sizeof(command), runchroot, sbp, - allowlist); + found = cmnd_allowed(command, sizeof(command), sbp, allowlist); goto done; } @@ -139,8 +137,7 @@ errno = ENAMETOOLONG; debug_return_int(NOT_FOUND_ERROR); } - found = cmnd_allowed(command, sizeof(command), runchroot, - sbp, allowlist); + found = cmnd_allowed(command, sizeof(command), sbp, allowlist); if (found) break; } @@ -154,8 +151,7 @@ errno = ENAMETOOLONG; debug_return_int(NOT_FOUND_ERROR); } - found = cmnd_allowed(command, sizeof(command), runchroot, - sbp, allowlist); + found = cmnd_allowed(command, sizeof(command), sbp, allowlist); if (found && ignore_dot) debug_return_int(NOT_FOUND_DOT); } diff -Nru sudo-1.9.13p3/plugins/sudoers/fmtsudoers.c sudo-1.9.14p2/plugins/sudoers/fmtsudoers.c --- sudo-1.9.13p3/plugins/sudoers/fmtsudoers.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/fmtsudoers.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2004-2005, 2007-2021 Todd C. Miller + * Copyright (c) 2004-2005, 2007-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -40,8 +40,8 @@ */ static bool sudoers_format_member_int(struct sudo_lbuf *lbuf, - struct sudoers_parse_tree *parse_tree, char *name, int type, bool negated, - const char *separator, int alias_type) + const struct sudoers_parse_tree *parse_tree, char *name, int type, + bool negated, const char *separator, int alias_type) { struct alias *a; struct member *m; @@ -136,7 +136,7 @@ bool sudoers_format_member(struct sudo_lbuf *lbuf, - struct sudoers_parse_tree *parse_tree, struct member *m, + const struct sudoers_parse_tree *parse_tree, struct member *m, const char *separator, int alias_type) { return sudoers_format_member_int(lbuf, parse_tree, m->name, m->type, @@ -222,7 +222,7 @@ */ bool sudoers_format_cmndspec(struct sudo_lbuf *lbuf, - struct sudoers_parse_tree *parse_tree, struct cmndspec *cs, + const struct sudoers_parse_tree *parse_tree, struct cmndspec *cs, struct cmndspec *prev_cs, struct cmndtag tags, bool expand_aliases) { debug_decl(sudoers_format_cmndspec, SUDOERS_DEBUG_UTIL); @@ -259,7 +259,7 @@ char buf[sizeof("CCYYMMDDHHMMSSZ")] = ""; struct tm gmt; if (gmtime_r(&cs->notbefore, &gmt) != NULL) { - int len = strftime(buf, sizeof(buf), "%Y%m%d%H%M%SZ", &gmt); + size_t len = strftime(buf, sizeof(buf), "%Y%m%d%H%M%SZ", &gmt); if (len != 0 && buf[sizeof(buf) - 1] == '\0') sudo_lbuf_append(lbuf, "NOTBEFORE=%s ", buf); } @@ -268,7 +268,7 @@ char buf[sizeof("CCYYMMDDHHMMSSZ")] = ""; struct tm gmt; if (gmtime_r(&cs->notafter, &gmt) != NULL) { - int len = strftime(buf, sizeof(buf), "%Y%m%d%H%M%SZ", &gmt); + size_t len = strftime(buf, sizeof(buf), "%Y%m%d%H%M%SZ", &gmt); if (len != 0 && buf[sizeof(buf) - 1] == '\0') sudo_lbuf_append(lbuf, "NOTAFTER=%s ", buf); } diff -Nru sudo-1.9.13p3/plugins/sudoers/fmtsudoers_cvt.c sudo-1.9.14p2/plugins/sudoers/fmtsudoers_cvt.c --- sudo-1.9.13p3/plugins/sudoers/fmtsudoers_cvt.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/fmtsudoers_cvt.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2004-2005, 2007-2020 Todd C. Miller + * Copyright (c) 2004-2005, 2007-2021, 2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -37,7 +37,7 @@ */ bool sudoers_format_privilege(struct sudo_lbuf *lbuf, - struct sudoers_parse_tree *parse_tree, struct privilege *priv, + const struct sudoers_parse_tree *parse_tree, struct privilege *priv, bool expand_aliases) { struct cmndspec *cs, *prev_cs; @@ -100,7 +100,7 @@ */ bool sudoers_format_userspec(struct sudo_lbuf *lbuf, - struct sudoers_parse_tree *parse_tree, + const struct sudoers_parse_tree *parse_tree, struct userspec *us, bool expand_aliases) { struct privilege *priv; @@ -139,7 +139,7 @@ */ bool sudoers_format_userspecs(struct sudo_lbuf *lbuf, - struct sudoers_parse_tree *parse_tree, const char *separator, + const struct sudoers_parse_tree *parse_tree, const char *separator, bool expand_aliases, bool flush) { struct userspec *us; @@ -164,7 +164,7 @@ */ bool sudoers_format_default_line(struct sudo_lbuf *lbuf, - struct sudoers_parse_tree *parse_tree, struct defaults *d, + const struct sudoers_parse_tree *parse_tree, struct defaults *d, struct defaults **next, bool expand_aliases) { struct member *m; diff -Nru sudo-1.9.13p3/plugins/sudoers/gc.c sudo-1.9.14p2/plugins/sudoers/gc.c --- sudo-1.9.13p3/plugins/sudoers/gc.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/gc.c 2023-07-15 15:37:21.000000000 +0000 @@ -152,13 +152,3 @@ debug_return; #endif /* NO_LEAKS */ } - -#ifndef notyet -void -sudoers_gc_init(void) -{ -#ifdef NO_LEAKS - atexit(sudoers_gc_run); -#endif -} -#endif diff -Nru sudo-1.9.13p3/plugins/sudoers/getdate.c sudo-1.9.14p2/plugins/sudoers/getdate.c --- sudo-1.9.13p3/plugins/sudoers/getdate.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/getdate.c 2023-07-15 15:37:23.000000000 +0000 @@ -1976,7 +1976,7 @@ #endif { "zp6", tZONE, -HOUR(6) }, /* USSR Zone 5 */ #if 0 - /* For completeness. NST is also Newfoundland Stanard, and SST is + /* For completeness. NST is also Newfoundland Standard, and SST is * also Swedish Summer. */ { "nst", tZONE, -HOUR(6.5) },/* North Sumatra */ { "sst", tZONE, -HOUR(7) }, /* South Sumatra, USSR Zone 6 */ diff -Nru sudo-1.9.13p3/plugins/sudoers/getdate.y sudo-1.9.14p2/plugins/sudoers/getdate.y --- sudo-1.9.13p3/plugins/sudoers/getdate.y 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/getdate.y 2023-07-15 15:37:23.000000000 +0000 @@ -442,7 +442,7 @@ #endif { "zp6", tZONE, -HOUR(6) }, /* USSR Zone 5 */ #if 0 - /* For completeness. NST is also Newfoundland Stanard, and SST is + /* For completeness. NST is also Newfoundland Standard, and SST is * also Swedish Summer. */ { "nst", tZONE, -HOUR(6.5) },/* North Sumatra */ { "sst", tZONE, -HOUR(7) }, /* South Sumatra, USSR Zone 6 */ diff -Nru sudo-1.9.13p3/plugins/sudoers/goodpath.c sudo-1.9.14p2/plugins/sudoers/goodpath.c --- sudo-1.9.13p3/plugins/sudoers/goodpath.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/goodpath.c 2023-07-15 15:37:21.000000000 +0000 @@ -39,24 +39,13 @@ * Verify that path is a normal file and executable by root. */ bool -sudo_goodpath(const char *path, const char *runchroot, struct stat *sbp) +sudo_goodpath(const char *path, struct stat *sbp) { bool ret = false; + struct stat sb; debug_decl(sudo_goodpath, SUDOERS_DEBUG_UTIL); if (path != NULL) { - char pathbuf[PATH_MAX]; - struct stat sb; - - if (runchroot != NULL) { - const int len = - snprintf(pathbuf, sizeof(pathbuf), "%s%s", runchroot, path); - if (len >= ssizeof(pathbuf)) { - errno = ENAMETOOLONG; - goto done; - } - path = pathbuf; // -V507 - } if (sbp == NULL) sbp = &sb; @@ -68,6 +57,5 @@ errno = EACCES; } } -done: debug_return_bool(ret); } diff -Nru sudo-1.9.13p3/plugins/sudoers/gram.c sudo-1.9.14p2/plugins/sudoers/gram.c --- sudo-1.9.13p3/plugins/sudoers/gram.c 2023-03-04 15:50:10.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/gram.c 2023-07-15 15:37:23.000000000 +0000 @@ -85,7 +85,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1996, 1998-2005, 2007-2013, 2014-2022 + * Copyright (c) 1996, 1998-2005, 2007-2013, 2014-2023 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -131,11 +131,11 @@ /* * Globals */ -bool sudoers_warnings = true; -bool sudoers_recovery = true; -bool sudoers_strict = false; bool parse_error = false; +static struct sudoers_parser_config parser_conf = + SUDOERS_PARSER_CONFIG_INITIALIZER; + /* Optional logging function for parse errors. */ sudoers_logger_t sudoers_error_hook; @@ -164,7 +164,7 @@ static struct defaults *new_default(char *, char *, short); static struct member *new_member(char *, int); static struct sudo_command *new_command(char *, char *); -static struct command_digest *new_digest(int, char *); +static struct command_digest *new_digest(unsigned int, char *); static void alias_error(const char *name, int errnum); #line 165 "gram.c" @@ -876,22 +876,22 @@ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 202, 202, 205, 208, 209, 212, 215, 218, 225, - 232, 238, 241, 244, 247, 250, 254, 258, 262, 266, - 272, 275, 281, 284, 290, 291, 298, 307, 316, 326, - 336, 348, 349, 354, 360, 377, 381, 387, 396, 404, - 413, 422, 433, 434, 496, 566, 575, 584, 593, 604, - 605, 612, 615, 629, 633, 639, 655, 671, 676, 680, - 685, 690, 695, 700, 704, 709, 712, 717, 733, 744, - 756, 767, 785, 786, 787, 788, 789, 790, 791, 792, - 793, 794, 795, 798, 804, 807, 812, 817, 826, 835, - 847, 854, 861, 868, 875, 884, 887, 890, 893, 896, - 899, 902, 905, 908, 911, 914, 917, 920, 923, 926, - 929, 932, 937, 951, 960, 981, 1004, 1005, 1008, 1008, - 1020, 1023, 1024, 1031, 1032, 1035, 1035, 1047, 1050, 1051, - 1058, 1059, 1062, 1062, 1074, 1077, 1078, 1081, 1081, 1093, - 1096, 1097, 1104, 1108, 1114, 1123, 1131, 1140, 1149, 1160, - 1161, 1168, 1172, 1178, 1187, 1195 + 0, 202, 202, 205, 208, 209, 212, 215, 218, 226, + 234, 240, 243, 246, 249, 252, 256, 260, 264, 268, + 274, 277, 283, 286, 292, 293, 300, 309, 318, 328, + 338, 350, 351, 356, 362, 379, 383, 389, 398, 406, + 415, 424, 435, 436, 498, 568, 577, 586, 595, 606, + 607, 614, 617, 631, 635, 641, 657, 673, 678, 682, + 687, 692, 697, 702, 706, 711, 714, 719, 736, 748, + 764, 782, 801, 802, 803, 804, 805, 806, 807, 808, + 809, 810, 811, 814, 820, 823, 828, 833, 842, 851, + 863, 870, 877, 884, 891, 900, 903, 906, 909, 912, + 915, 918, 921, 924, 927, 930, 933, 936, 939, 942, + 945, 948, 953, 967, 976, 997, 1020, 1021, 1024, 1024, + 1036, 1039, 1040, 1047, 1048, 1051, 1051, 1063, 1066, 1067, + 1074, 1075, 1078, 1078, 1090, 1093, 1094, 1097, 1097, 1109, + 1112, 1113, 1120, 1124, 1130, 1139, 1147, 1156, 1165, 1176, + 1177, 1184, 1188, 1194, 1203, 1211 }; #endif @@ -1675,161 +1675,163 @@ case 8: /* entry: include */ #line 218 "gram.y" { - const bool success = push_include((yyvsp[0].string), false); + const bool success = push_include((yyvsp[0].string), + parser_conf.verbose); parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); free((yyvsp[0].string)); - if (!success && !sudoers_recovery) + if (!success && !parser_conf.recovery) YYERROR; } -#line 1679 "gram.c" +#line 1680 "gram.c" break; case 9: /* entry: includedir */ -#line 225 "gram.y" +#line 226 "gram.y" { - const bool success = push_include((yyvsp[0].string), true); + const bool success = push_includedir((yyvsp[0].string), + parser_conf.verbose); parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); free((yyvsp[0].string)); - if (!success && !sudoers_recovery) + if (!success && !parser_conf.recovery) YYERROR; } -#line 1691 "gram.c" +#line 1693 "gram.c" break; case 10: /* entry: userlist privileges '\n' */ -#line 232 "gram.y" +#line 234 "gram.y" { if (!add_userspec((yyvsp[-2].member), (yyvsp[-1].privilege))) { sudoerserror(N_("unable to allocate memory")); YYERROR; } } -#line 1702 "gram.c" +#line 1704 "gram.c" break; case 11: /* entry: USERALIAS useraliases '\n' */ -#line 238 "gram.y" +#line 240 "gram.y" { ; } -#line 1710 "gram.c" +#line 1712 "gram.c" break; case 12: /* entry: HOSTALIAS hostaliases '\n' */ -#line 241 "gram.y" +#line 243 "gram.y" { ; } -#line 1718 "gram.c" +#line 1720 "gram.c" break; case 13: /* entry: CMNDALIAS cmndaliases '\n' */ -#line 244 "gram.y" +#line 246 "gram.y" { ; } -#line 1726 "gram.c" +#line 1728 "gram.c" break; case 14: /* entry: RUNASALIAS runasaliases '\n' */ -#line 247 "gram.y" +#line 249 "gram.y" { ; } -#line 1734 "gram.c" +#line 1736 "gram.c" break; case 15: /* entry: DEFAULTS defaults_list '\n' */ -#line 250 "gram.y" +#line 252 "gram.y" { if (!add_defaults(DEFAULTS, NULL, (yyvsp[-1].defaults))) YYERROR; } -#line 1743 "gram.c" +#line 1745 "gram.c" break; case 16: /* entry: DEFAULTS_USER userlist defaults_list '\n' */ -#line 254 "gram.y" +#line 256 "gram.y" { if (!add_defaults(DEFAULTS_USER, (yyvsp[-2].member), (yyvsp[-1].defaults))) YYERROR; } -#line 1752 "gram.c" +#line 1754 "gram.c" break; case 17: /* entry: DEFAULTS_RUNAS userlist defaults_list '\n' */ -#line 258 "gram.y" +#line 260 "gram.y" { if (!add_defaults(DEFAULTS_RUNAS, (yyvsp[-2].member), (yyvsp[-1].defaults))) YYERROR; } -#line 1761 "gram.c" +#line 1763 "gram.c" break; case 18: /* entry: DEFAULTS_HOST hostlist defaults_list '\n' */ -#line 262 "gram.y" +#line 264 "gram.y" { if (!add_defaults(DEFAULTS_HOST, (yyvsp[-2].member), (yyvsp[-1].defaults))) YYERROR; } -#line 1770 "gram.c" +#line 1772 "gram.c" break; case 19: /* entry: DEFAULTS_CMND cmndlist defaults_list '\n' */ -#line 266 "gram.y" +#line 268 "gram.y" { if (!add_defaults(DEFAULTS_CMND, (yyvsp[-2].member), (yyvsp[-1].defaults))) YYERROR; } -#line 1779 "gram.c" +#line 1781 "gram.c" break; case 20: /* include: INCLUDE WORD '\n' */ -#line 272 "gram.y" +#line 274 "gram.y" { (yyval.string) = (yyvsp[-1].string); } -#line 1787 "gram.c" +#line 1789 "gram.c" break; case 21: /* include: INCLUDE WORD error '\n' */ -#line 275 "gram.y" +#line 277 "gram.y" { yyerrok; (yyval.string) = (yyvsp[-2].string); } -#line 1796 "gram.c" +#line 1798 "gram.c" break; case 22: /* includedir: INCLUDEDIR WORD '\n' */ -#line 281 "gram.y" +#line 283 "gram.y" { (yyval.string) = (yyvsp[-1].string); } -#line 1804 "gram.c" +#line 1806 "gram.c" break; case 23: /* includedir: INCLUDEDIR WORD error '\n' */ -#line 284 "gram.y" +#line 286 "gram.y" { yyerrok; (yyval.string) = (yyvsp[-2].string); } -#line 1813 "gram.c" +#line 1815 "gram.c" break; case 25: /* defaults_list: defaults_list ',' defaults_entry */ -#line 291 "gram.y" +#line 293 "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 1823 "gram.c" +#line 1825 "gram.c" break; case 26: /* defaults_entry: DEFVAR */ -#line 298 "gram.y" +#line 300 "gram.y" { (yyval.defaults) = new_default((yyvsp[0].string), NULL, true); if ((yyval.defaults) == NULL) { @@ -1839,11 +1841,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DEFAULTS, (yyval.defaults)); } -#line 1837 "gram.c" +#line 1839 "gram.c" break; case 27: /* defaults_entry: '!' DEFVAR */ -#line 307 "gram.y" +#line 309 "gram.y" { (yyval.defaults) = new_default((yyvsp[0].string), NULL, false); if ((yyval.defaults) == NULL) { @@ -1853,11 +1855,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DEFAULTS, (yyval.defaults)); } -#line 1851 "gram.c" +#line 1853 "gram.c" break; case 28: /* defaults_entry: DEFVAR '=' WORD */ -#line 316 "gram.y" +#line 318 "gram.y" { (yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), true); if ((yyval.defaults) == NULL) { @@ -1868,11 +1870,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DEFAULTS, (yyval.defaults)); } -#line 1866 "gram.c" +#line 1868 "gram.c" break; case 29: /* defaults_entry: DEFVAR '+' WORD */ -#line 326 "gram.y" +#line 328 "gram.y" { (yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), '+'); if ((yyval.defaults) == NULL) { @@ -1883,11 +1885,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DEFAULTS, (yyval.defaults)); } -#line 1881 "gram.c" +#line 1883 "gram.c" break; case 30: /* defaults_entry: DEFVAR '-' WORD */ -#line 336 "gram.y" +#line 338 "gram.y" { (yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), '-'); if ((yyval.defaults) == NULL) { @@ -1898,30 +1900,30 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DEFAULTS, (yyval.defaults)); } -#line 1896 "gram.c" +#line 1898 "gram.c" break; case 32: /* privileges: privileges ':' privilege */ -#line 349 "gram.y" +#line 351 "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 1906 "gram.c" +#line 1908 "gram.c" break; case 33: /* privileges: privileges ':' error */ -#line 354 "gram.y" +#line 356 "gram.y" { yyerrok; (yyval.privilege) = (yyvsp[-2].privilege); } -#line 1915 "gram.c" +#line 1917 "gram.c" break; case 34: /* privilege: hostlist '=' cmndspeclist */ -#line 360 "gram.y" +#line 362 "gram.y" { struct privilege *p = calloc(1, sizeof(*p)); if (p == NULL) { @@ -1937,29 +1939,29 @@ HLTQ_INIT(p, entries); (yyval.privilege) = p; } -#line 1935 "gram.c" +#line 1937 "gram.c" break; case 35: /* ophost: host */ -#line 377 "gram.y" +#line 379 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = false; } -#line 1944 "gram.c" +#line 1946 "gram.c" break; case 36: /* ophost: '!' host */ -#line 381 "gram.y" +#line 383 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = true; } -#line 1953 "gram.c" +#line 1955 "gram.c" break; case 37: /* host: ALIAS */ -#line 387 "gram.y" +#line 389 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), ALIAS); if ((yyval.member) == NULL) { @@ -1969,11 +1971,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 1967 "gram.c" +#line 1969 "gram.c" break; case 38: /* host: ALL */ -#line 396 "gram.y" +#line 398 "gram.y" { (yyval.member) = new_member(NULL, ALL); if ((yyval.member) == NULL) { @@ -1982,11 +1984,11 @@ } parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 1980 "gram.c" +#line 1982 "gram.c" break; case 39: /* host: NETGROUP */ -#line 404 "gram.y" +#line 406 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), NETGROUP); if ((yyval.member) == NULL) { @@ -1996,11 +1998,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 1994 "gram.c" +#line 1996 "gram.c" break; case 40: /* host: NTWKADDR */ -#line 413 "gram.y" +#line 415 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), NTWKADDR); if ((yyval.member) == NULL) { @@ -2010,11 +2012,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 2008 "gram.c" +#line 2010 "gram.c" break; case 41: /* host: WORD */ -#line 422 "gram.y" +#line 424 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), WORD); if ((yyval.member) == NULL) { @@ -2024,11 +2026,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 2022 "gram.c" +#line 2024 "gram.c" break; case 43: /* cmndspeclist: cmndspeclist ',' cmndspec */ -#line 434 "gram.y" +#line 436 "gram.y" { struct cmndspec *prev; prev = HLTQ_LAST((yyvsp[-2].cmndspec), cmndspec, entries); @@ -2089,11 +2091,11 @@ } (yyval.cmndspec) = (yyvsp[-2].cmndspec); } -#line 2087 "gram.c" +#line 2089 "gram.c" break; case 44: /* cmndspec: runasspec options cmndtag digcmnd */ -#line 496 "gram.y" +#line 498 "gram.y" { struct cmndspec *cs = calloc(1, sizeof(*cs)); if (cs == NULL) { @@ -2162,11 +2164,11 @@ cs->tags.setenv = IMPLIED; (yyval.cmndspec) = cs; } -#line 2160 "gram.c" +#line 2162 "gram.c" break; case 45: /* digestspec: SHA224_TOK ':' DIGEST */ -#line 566 "gram.y" +#line 568 "gram.y" { (yyval.digest) = new_digest(SUDO_DIGEST_SHA224, (yyvsp[0].string)); if ((yyval.digest) == NULL) { @@ -2176,11 +2178,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DIGEST, (yyval.digest)); } -#line 2174 "gram.c" +#line 2176 "gram.c" break; case 46: /* digestspec: SHA256_TOK ':' DIGEST */ -#line 575 "gram.y" +#line 577 "gram.y" { (yyval.digest) = new_digest(SUDO_DIGEST_SHA256, (yyvsp[0].string)); if ((yyval.digest) == NULL) { @@ -2190,11 +2192,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DIGEST, (yyval.digest)); } -#line 2188 "gram.c" +#line 2190 "gram.c" break; case 47: /* digestspec: SHA384_TOK ':' DIGEST */ -#line 584 "gram.y" +#line 586 "gram.y" { (yyval.digest) = new_digest(SUDO_DIGEST_SHA384, (yyvsp[0].string)); if ((yyval.digest) == NULL) { @@ -2204,11 +2206,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DIGEST, (yyval.digest)); } -#line 2202 "gram.c" +#line 2204 "gram.c" break; case 48: /* digestspec: SHA512_TOK ':' DIGEST */ -#line 593 "gram.y" +#line 595 "gram.y" { (yyval.digest) = new_digest(SUDO_DIGEST_SHA512, (yyvsp[0].string)); if ((yyval.digest) == NULL) { @@ -2218,29 +2220,29 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_DIGEST, (yyval.digest)); } -#line 2216 "gram.c" +#line 2218 "gram.c" break; case 50: /* digestlist: digestlist ',' digestspec */ -#line 605 "gram.y" +#line 607 "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 2226 "gram.c" +#line 2228 "gram.c" break; case 51: /* digcmnd: opcmnd */ -#line 612 "gram.y" +#line 614 "gram.y" { (yyval.member) = (yyvsp[0].member); } -#line 2234 "gram.c" +#line 2236 "gram.c" break; case 52: /* digcmnd: digestlist opcmnd */ -#line 615 "gram.y" +#line 617 "gram.y" { struct sudo_command *c = (struct sudo_command *) (yyvsp[0].member)->name; @@ -2253,29 +2255,29 @@ HLTQ_TO_TAILQ(&c->digests, (yyvsp[-1].digest), entries); (yyval.member) = (yyvsp[0].member); } -#line 2251 "gram.c" +#line 2253 "gram.c" break; case 53: /* opcmnd: cmnd */ -#line 629 "gram.y" +#line 631 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = false; } -#line 2260 "gram.c" +#line 2262 "gram.c" break; case 54: /* opcmnd: '!' cmnd */ -#line 633 "gram.y" +#line 635 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = true; } -#line 2269 "gram.c" +#line 2271 "gram.c" break; case 55: /* chdirspec: CWD '=' WORD */ -#line 639 "gram.y" +#line 641 "gram.y" { if ((yyvsp[0].string)[0] != '/' && (yyvsp[0].string)[0] != '~') { if (strcmp((yyvsp[0].string), "*") != 0) { @@ -2290,11 +2292,11 @@ } (yyval.string) = (yyvsp[0].string); } -#line 2288 "gram.c" +#line 2290 "gram.c" break; case 56: /* chrootspec: CHROOT '=' WORD */ -#line 655 "gram.y" +#line 657 "gram.y" { if ((yyvsp[0].string)[0] != '/' && (yyvsp[0].string)[0] != '~') { if (strcmp((yyvsp[0].string), "*") != 0) { @@ -2309,92 +2311,93 @@ } (yyval.string) = (yyvsp[0].string); } -#line 2307 "gram.c" +#line 2309 "gram.c" break; case 57: /* timeoutspec: CMND_TIMEOUT '=' WORD */ -#line 671 "gram.y" +#line 673 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2315 "gram.c" +#line 2317 "gram.c" break; case 58: /* notbeforespec: NOTBEFORE '=' WORD */ -#line 676 "gram.y" +#line 678 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2323 "gram.c" +#line 2325 "gram.c" break; case 59: /* notafterspec: NOTAFTER '=' WORD */ -#line 680 "gram.y" +#line 682 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2331 "gram.c" +#line 2333 "gram.c" break; case 60: /* rolespec: ROLE '=' WORD */ -#line 685 "gram.y" +#line 687 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2339 "gram.c" +#line 2341 "gram.c" break; case 61: /* typespec: TYPE '=' WORD */ -#line 690 "gram.y" +#line 692 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2347 "gram.c" +#line 2349 "gram.c" break; case 62: /* apparmor_profilespec: APPARMOR_PROFILE '=' WORD */ -#line 695 "gram.y" +#line 697 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2355 "gram.c" +#line 2357 "gram.c" break; case 63: /* privsspec: PRIVS '=' WORD */ -#line 700 "gram.y" +#line 702 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2363 "gram.c" +#line 2365 "gram.c" break; case 64: /* limitprivsspec: LIMITPRIVS '=' WORD */ -#line 704 "gram.y" +#line 706 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2371 "gram.c" +#line 2373 "gram.c" break; case 65: /* runasspec: %empty */ -#line 709 "gram.y" +#line 711 "gram.y" { (yyval.runas) = NULL; } -#line 2379 "gram.c" +#line 2381 "gram.c" break; case 66: /* runasspec: '(' runaslist ')' */ -#line 712 "gram.y" +#line 714 "gram.y" { (yyval.runas) = (yyvsp[-1].runas); } -#line 2387 "gram.c" +#line 2389 "gram.c" break; case 67: /* runaslist: %empty */ -#line 717 "gram.y" +#line 719 "gram.y" { + /* User may run command as themselves. */ (yyval.runas) = calloc(1, sizeof(struct runascontainer)); if ((yyval.runas) != NULL) { (yyval.runas)->runasusers = new_member(NULL, MYSELF); @@ -2410,12 +2413,13 @@ } parser_leak_add(LEAK_RUNAS, (yyval.runas)); } -#line 2408 "gram.c" +#line 2411 "gram.c" break; case 68: /* runaslist: userlist */ -#line 733 "gram.y" +#line 736 "gram.y" { + /* User may run command as a user in userlist. */ (yyval.runas) = calloc(1, sizeof(struct runascontainer)); if ((yyval.runas) == NULL) { sudoerserror(N_("unable to allocate memory")); @@ -2426,12 +2430,16 @@ (yyval.runas)->runasusers = (yyvsp[0].member); /* $$->runasgroups = NULL; */ } -#line 2424 "gram.c" +#line 2428 "gram.c" break; case 69: /* runaslist: userlist ':' grouplist */ -#line 744 "gram.y" +#line 748 "gram.y" { + /* + * User may run command as a user in userlist + * and optionally as a group in grouplist. + */ (yyval.runas) = calloc(1, sizeof(struct runascontainer)); if ((yyval.runas) == NULL) { sudoerserror(N_("unable to allocate memory")); @@ -2443,28 +2451,36 @@ (yyval.runas)->runasusers = (yyvsp[-2].member); (yyval.runas)->runasgroups = (yyvsp[0].member); } -#line 2441 "gram.c" +#line 2449 "gram.c" break; case 70: /* runaslist: ':' grouplist */ -#line 756 "gram.y" +#line 764 "gram.y" { + /* User may run command as a group in grouplist. */ (yyval.runas) = calloc(1, sizeof(struct runascontainer)); + if ((yyval.runas) != NULL) { + (yyval.runas)->runasusers = new_member(NULL, MYSELF); + if ((yyval.runas)->runasusers == NULL) { + free((yyval.runas)); + (yyval.runas) = NULL; + } + } if ((yyval.runas) == NULL) { sudoerserror(N_("unable to allocate memory")); YYERROR; } parser_leak_add(LEAK_RUNAS, (yyval.runas)); parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member)); - /* $$->runasusers = NULL; */ (yyval.runas)->runasgroups = (yyvsp[0].member); } -#line 2457 "gram.c" +#line 2472 "gram.c" break; case 71: /* runaslist: ':' */ -#line 767 "gram.y" +#line 782 "gram.y" { + /* User may run command as themselves. */ (yyval.runas) = calloc(1, sizeof(struct runascontainer)); if ((yyval.runas) != NULL) { (yyval.runas)->runasusers = new_member(NULL, MYSELF); @@ -2480,114 +2496,114 @@ } parser_leak_add(LEAK_RUNAS, (yyval.runas)); } -#line 2478 "gram.c" +#line 2494 "gram.c" break; case 72: /* reserved_word: ALL */ -#line 785 "gram.y" +#line 801 "gram.y" { (yyval.cstring) = "ALL"; } -#line 2484 "gram.c" +#line 2500 "gram.c" break; case 73: /* reserved_word: CHROOT */ -#line 786 "gram.y" +#line 802 "gram.y" { (yyval.cstring) = "CHROOT"; } -#line 2490 "gram.c" +#line 2506 "gram.c" break; case 74: /* reserved_word: CWD */ -#line 787 "gram.y" +#line 803 "gram.y" { (yyval.cstring) = "CWD"; } -#line 2496 "gram.c" +#line 2512 "gram.c" break; case 75: /* reserved_word: CMND_TIMEOUT */ -#line 788 "gram.y" +#line 804 "gram.y" { (yyval.cstring) = "CMND_TIMEOUT"; } -#line 2502 "gram.c" +#line 2518 "gram.c" break; case 76: /* reserved_word: NOTBEFORE */ -#line 789 "gram.y" +#line 805 "gram.y" { (yyval.cstring) = "NOTBEFORE"; } -#line 2508 "gram.c" +#line 2524 "gram.c" break; case 77: /* reserved_word: NOTAFTER */ -#line 790 "gram.y" +#line 806 "gram.y" { (yyval.cstring) = "NOTAFTER"; } -#line 2514 "gram.c" +#line 2530 "gram.c" break; case 78: /* reserved_word: ROLE */ -#line 791 "gram.y" +#line 807 "gram.y" { (yyval.cstring) = "ROLE"; } -#line 2520 "gram.c" +#line 2536 "gram.c" break; case 79: /* reserved_word: TYPE */ -#line 792 "gram.y" +#line 808 "gram.y" { (yyval.cstring) = "TYPE"; } -#line 2526 "gram.c" +#line 2542 "gram.c" break; case 80: /* reserved_word: PRIVS */ -#line 793 "gram.y" +#line 809 "gram.y" { (yyval.cstring) = "PRIVS"; } -#line 2532 "gram.c" +#line 2548 "gram.c" break; case 81: /* reserved_word: LIMITPRIVS */ -#line 794 "gram.y" +#line 810 "gram.y" { (yyval.cstring) = "LIMITPRIVS"; } -#line 2538 "gram.c" +#line 2554 "gram.c" break; case 82: /* reserved_word: APPARMOR_PROFILE */ -#line 795 "gram.y" +#line 811 "gram.y" { (yyval.cstring) = "APPARMOR_PROFILE"; } -#line 2544 "gram.c" +#line 2560 "gram.c" break; case 83: /* reserved_alias: reserved_word */ -#line 798 "gram.y" +#line 814 "gram.y" { sudoerserrorf(U_("syntax error, reserved word %s used as an alias name"), (yyvsp[0].cstring)); YYERROR; } -#line 2553 "gram.c" +#line 2569 "gram.c" break; case 84: /* options: %empty */ -#line 804 "gram.y" +#line 820 "gram.y" { init_options(&(yyval.options)); } -#line 2561 "gram.c" +#line 2577 "gram.c" break; case 85: /* options: options chdirspec */ -#line 807 "gram.y" +#line 823 "gram.y" { parser_leak_remove(LEAK_PTR, (yyval.options).runcwd); free((yyval.options).runcwd); (yyval.options).runcwd = (yyvsp[0].string); } -#line 2571 "gram.c" +#line 2587 "gram.c" break; case 86: /* options: options chrootspec */ -#line 812 "gram.y" +#line 828 "gram.y" { parser_leak_remove(LEAK_PTR, (yyval.options).runchroot); free((yyval.options).runchroot); (yyval.options).runchroot = (yyvsp[0].string); } -#line 2581 "gram.c" +#line 2597 "gram.c" break; case 87: /* options: options notbeforespec */ -#line 817 "gram.y" +#line 833 "gram.y" { (yyval.options).notbefore = parse_gentime((yyvsp[0].string)); parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); @@ -2597,11 +2613,11 @@ YYERROR; } } -#line 2595 "gram.c" +#line 2611 "gram.c" break; case 88: /* options: options notafterspec */ -#line 826 "gram.y" +#line 842 "gram.y" { (yyval.options).notafter = parse_gentime((yyvsp[0].string)); parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); @@ -2611,11 +2627,11 @@ YYERROR; } } -#line 2609 "gram.c" +#line 2625 "gram.c" break; case 89: /* options: options timeoutspec */ -#line 835 "gram.y" +#line 851 "gram.y" { (yyval.options).timeout = parse_timeout((yyvsp[0].string)); parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); @@ -2628,11 +2644,11 @@ YYERROR; } } -#line 2626 "gram.c" +#line 2642 "gram.c" break; case 90: /* options: options rolespec */ -#line 847 "gram.y" +#line 863 "gram.y" { #ifdef HAVE_SELINUX parser_leak_remove(LEAK_PTR, (yyval.options).role); @@ -2640,11 +2656,11 @@ (yyval.options).role = (yyvsp[0].string); #endif } -#line 2638 "gram.c" +#line 2654 "gram.c" break; case 91: /* options: options typespec */ -#line 854 "gram.y" +#line 870 "gram.y" { #ifdef HAVE_SELINUX parser_leak_remove(LEAK_PTR, (yyval.options).type); @@ -2652,11 +2668,11 @@ (yyval.options).type = (yyvsp[0].string); #endif } -#line 2650 "gram.c" +#line 2666 "gram.c" break; case 92: /* options: options apparmor_profilespec */ -#line 861 "gram.y" +#line 877 "gram.y" { #ifdef HAVE_APPARMOR parser_leak_remove(LEAK_PTR, (yyval.options).apparmor_profile); @@ -2664,11 +2680,11 @@ (yyval.options).apparmor_profile = (yyvsp[0].string); #endif } -#line 2662 "gram.c" +#line 2678 "gram.c" break; case 93: /* options: options privsspec */ -#line 868 "gram.y" +#line 884 "gram.y" { #ifdef HAVE_PRIV_SET parser_leak_remove(LEAK_PTR, (yyval.options).privs); @@ -2676,11 +2692,11 @@ (yyval.options).privs = (yyvsp[0].string); #endif } -#line 2674 "gram.c" +#line 2690 "gram.c" break; case 94: /* options: options limitprivsspec */ -#line 875 "gram.y" +#line 891 "gram.y" { #ifdef HAVE_PRIV_SET parser_leak_remove(LEAK_PTR, (yyval.options).limitprivs); @@ -2688,147 +2704,147 @@ (yyval.options).limitprivs = (yyvsp[0].string); #endif } -#line 2686 "gram.c" +#line 2702 "gram.c" break; case 95: /* cmndtag: %empty */ -#line 884 "gram.y" +#line 900 "gram.y" { TAGS_INIT(&(yyval.tag)); } -#line 2694 "gram.c" +#line 2710 "gram.c" break; case 96: /* cmndtag: cmndtag NOPASSWD */ -#line 887 "gram.y" +#line 903 "gram.y" { (yyval.tag).nopasswd = true; } -#line 2702 "gram.c" +#line 2718 "gram.c" break; case 97: /* cmndtag: cmndtag PASSWD */ -#line 890 "gram.y" +#line 906 "gram.y" { (yyval.tag).nopasswd = false; } -#line 2710 "gram.c" +#line 2726 "gram.c" break; case 98: /* cmndtag: cmndtag NOEXEC */ -#line 893 "gram.y" +#line 909 "gram.y" { (yyval.tag).noexec = true; } -#line 2718 "gram.c" +#line 2734 "gram.c" break; case 99: /* cmndtag: cmndtag EXEC */ -#line 896 "gram.y" +#line 912 "gram.y" { (yyval.tag).noexec = false; } -#line 2726 "gram.c" +#line 2742 "gram.c" break; case 100: /* cmndtag: cmndtag INTERCEPT */ -#line 899 "gram.y" +#line 915 "gram.y" { (yyval.tag).intercept = true; } -#line 2734 "gram.c" +#line 2750 "gram.c" break; case 101: /* cmndtag: cmndtag NOINTERCEPT */ -#line 902 "gram.y" +#line 918 "gram.y" { (yyval.tag).intercept = false; } -#line 2742 "gram.c" +#line 2758 "gram.c" break; case 102: /* cmndtag: cmndtag SETENV */ -#line 905 "gram.y" +#line 921 "gram.y" { (yyval.tag).setenv = true; } -#line 2750 "gram.c" +#line 2766 "gram.c" break; case 103: /* cmndtag: cmndtag NOSETENV */ -#line 908 "gram.y" +#line 924 "gram.y" { (yyval.tag).setenv = false; } -#line 2758 "gram.c" +#line 2774 "gram.c" break; case 104: /* cmndtag: cmndtag LOG_INPUT */ -#line 911 "gram.y" +#line 927 "gram.y" { (yyval.tag).log_input = true; } -#line 2766 "gram.c" +#line 2782 "gram.c" break; case 105: /* cmndtag: cmndtag NOLOG_INPUT */ -#line 914 "gram.y" +#line 930 "gram.y" { (yyval.tag).log_input = false; } -#line 2774 "gram.c" +#line 2790 "gram.c" break; case 106: /* cmndtag: cmndtag LOG_OUTPUT */ -#line 917 "gram.y" +#line 933 "gram.y" { (yyval.tag).log_output = true; } -#line 2782 "gram.c" +#line 2798 "gram.c" break; case 107: /* cmndtag: cmndtag NOLOG_OUTPUT */ -#line 920 "gram.y" +#line 936 "gram.y" { (yyval.tag).log_output = false; } -#line 2790 "gram.c" +#line 2806 "gram.c" break; case 108: /* cmndtag: cmndtag FOLLOWLNK */ -#line 923 "gram.y" +#line 939 "gram.y" { (yyval.tag).follow = true; } -#line 2798 "gram.c" +#line 2814 "gram.c" break; case 109: /* cmndtag: cmndtag NOFOLLOWLNK */ -#line 926 "gram.y" +#line 942 "gram.y" { (yyval.tag).follow = false; } -#line 2806 "gram.c" +#line 2822 "gram.c" break; case 110: /* cmndtag: cmndtag MAIL */ -#line 929 "gram.y" +#line 945 "gram.y" { (yyval.tag).send_mail = true; } -#line 2814 "gram.c" +#line 2830 "gram.c" break; case 111: /* cmndtag: cmndtag NOMAIL */ -#line 932 "gram.y" +#line 948 "gram.y" { (yyval.tag).send_mail = false; } -#line 2822 "gram.c" +#line 2838 "gram.c" break; case 112: /* cmnd: ALL */ -#line 937 "gram.y" +#line 953 "gram.y" { struct sudo_command *c; @@ -2843,11 +2859,11 @@ } parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 2841 "gram.c" +#line 2857 "gram.c" break; case 113: /* cmnd: ALIAS */ -#line 951 "gram.y" +#line 967 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), ALIAS); if ((yyval.member) == NULL) { @@ -2857,11 +2873,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 2855 "gram.c" +#line 2871 "gram.c" break; case 114: /* cmnd: COMMAND */ -#line 960 "gram.y" +#line 976 "gram.y" { struct sudo_command *c; @@ -2883,11 +2899,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].command).args); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 2881 "gram.c" +#line 2897 "gram.c" break; case 115: /* cmnd: WORD */ -#line 981 "gram.y" +#line 997 "gram.y" { if (strcmp((yyvsp[0].string), "list") == 0) { struct sudo_command *c; @@ -2909,20 +2925,20 @@ YYERROR; } } -#line 2907 "gram.c" +#line 2923 "gram.c" break; case 118: /* $@1: %empty */ -#line 1008 "gram.y" +#line 1024 "gram.y" { alias_line = this_lineno; alias_column = sudolinebuf.toke_start + 1; } -#line 2916 "gram.c" +#line 2932 "gram.c" break; case 119: /* hostalias: ALIAS $@1 '=' hostlist */ -#line 1011 "gram.y" +#line 1027 "gram.y" { if (!alias_add(&parsed_policy, (yyvsp[-3].string), HOSTALIAS, sudoers, alias_line, alias_column, (yyvsp[0].member))) { @@ -2932,30 +2948,30 @@ parser_leak_remove(LEAK_PTR, (yyvsp[-3].string)); parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member)); } -#line 2930 "gram.c" +#line 2946 "gram.c" break; case 122: /* hostlist: hostlist ',' ophost */ -#line 1024 "gram.y" +#line 1040 "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 2940 "gram.c" +#line 2956 "gram.c" break; case 125: /* $@2: %empty */ -#line 1035 "gram.y" +#line 1051 "gram.y" { alias_line = this_lineno; alias_column = sudolinebuf.toke_start + 1; } -#line 2949 "gram.c" +#line 2965 "gram.c" break; case 126: /* cmndalias: ALIAS $@2 '=' cmndlist */ -#line 1038 "gram.y" +#line 1054 "gram.y" { if (!alias_add(&parsed_policy, (yyvsp[-3].string), CMNDALIAS, sudoers, alias_line, alias_column, (yyvsp[0].member))) { @@ -2965,30 +2981,30 @@ parser_leak_remove(LEAK_PTR, (yyvsp[-3].string)); parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member)); } -#line 2963 "gram.c" +#line 2979 "gram.c" break; case 129: /* cmndlist: cmndlist ',' digcmnd */ -#line 1051 "gram.y" +#line 1067 "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 2973 "gram.c" +#line 2989 "gram.c" break; case 132: /* $@3: %empty */ -#line 1062 "gram.y" +#line 1078 "gram.y" { alias_line = this_lineno; alias_column = sudolinebuf.toke_start + 1; } -#line 2982 "gram.c" +#line 2998 "gram.c" break; case 133: /* runasalias: ALIAS $@3 '=' userlist */ -#line 1065 "gram.y" +#line 1081 "gram.y" { if (!alias_add(&parsed_policy, (yyvsp[-3].string), RUNASALIAS, sudoers, alias_line, alias_column, (yyvsp[0].member))) { @@ -2998,20 +3014,20 @@ parser_leak_remove(LEAK_PTR, (yyvsp[-3].string)); parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member)); } -#line 2996 "gram.c" +#line 3012 "gram.c" break; case 137: /* $@4: %empty */ -#line 1081 "gram.y" +#line 1097 "gram.y" { alias_line = this_lineno; alias_column = sudolinebuf.toke_start + 1; } -#line 3005 "gram.c" +#line 3021 "gram.c" break; case 138: /* useralias: ALIAS $@4 '=' userlist */ -#line 1084 "gram.y" +#line 1100 "gram.y" { if (!alias_add(&parsed_policy, (yyvsp[-3].string), USERALIAS, sudoers, alias_line, alias_column, (yyvsp[0].member))) { @@ -3021,39 +3037,39 @@ parser_leak_remove(LEAK_PTR, (yyvsp[-3].string)); parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member)); } -#line 3019 "gram.c" +#line 3035 "gram.c" break; case 141: /* userlist: userlist ',' opuser */ -#line 1097 "gram.y" +#line 1113 "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 3029 "gram.c" +#line 3045 "gram.c" break; case 142: /* opuser: user */ -#line 1104 "gram.y" +#line 1120 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = false; } -#line 3038 "gram.c" +#line 3054 "gram.c" break; case 143: /* opuser: '!' user */ -#line 1108 "gram.y" +#line 1124 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = true; } -#line 3047 "gram.c" +#line 3063 "gram.c" break; case 144: /* user: ALIAS */ -#line 1114 "gram.y" +#line 1130 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), ALIAS); if ((yyval.member) == NULL) { @@ -3063,11 +3079,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 3061 "gram.c" +#line 3077 "gram.c" break; case 145: /* user: ALL */ -#line 1123 "gram.y" +#line 1139 "gram.y" { (yyval.member) = new_member(NULL, ALL); if ((yyval.member) == NULL) { @@ -3076,11 +3092,11 @@ } parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 3074 "gram.c" +#line 3090 "gram.c" break; case 146: /* user: NETGROUP */ -#line 1131 "gram.y" +#line 1147 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), NETGROUP); if ((yyval.member) == NULL) { @@ -3090,11 +3106,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 3088 "gram.c" +#line 3104 "gram.c" break; case 147: /* user: USERGROUP */ -#line 1140 "gram.y" +#line 1156 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), USERGROUP); if ((yyval.member) == NULL) { @@ -3104,11 +3120,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 3102 "gram.c" +#line 3118 "gram.c" break; case 148: /* user: WORD */ -#line 1149 "gram.y" +#line 1165 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), WORD); if ((yyval.member) == NULL) { @@ -3118,39 +3134,39 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 3116 "gram.c" +#line 3132 "gram.c" break; case 150: /* grouplist: grouplist ',' opgroup */ -#line 1161 "gram.y" +#line 1177 "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 3126 "gram.c" +#line 3142 "gram.c" break; case 151: /* opgroup: group */ -#line 1168 "gram.y" +#line 1184 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = false; } -#line 3135 "gram.c" +#line 3151 "gram.c" break; case 152: /* opgroup: '!' group */ -#line 1172 "gram.y" +#line 1188 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = true; } -#line 3144 "gram.c" +#line 3160 "gram.c" break; case 153: /* group: ALIAS */ -#line 1178 "gram.y" +#line 1194 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), ALIAS); if ((yyval.member) == NULL) { @@ -3160,11 +3176,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 3158 "gram.c" +#line 3174 "gram.c" break; case 154: /* group: ALL */ -#line 1187 "gram.y" +#line 1203 "gram.y" { (yyval.member) = new_member(NULL, ALL); if ((yyval.member) == NULL) { @@ -3173,11 +3189,11 @@ } parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 3171 "gram.c" +#line 3187 "gram.c" break; case 155: /* group: WORD */ -#line 1195 "gram.y" +#line 1211 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), WORD); if ((yyval.member) == NULL) { @@ -3187,11 +3203,11 @@ parser_leak_remove(LEAK_PTR, (yyvsp[0].string)); parser_leak_add(LEAK_MEMBER, (yyval.member)); } -#line 3185 "gram.c" +#line 3201 "gram.c" break; -#line 3189 "gram.c" +#line 3205 "gram.c" default: break; } @@ -3384,7 +3400,7 @@ return yyresult; } -#line 1205 "gram.y" +#line 1221 "gram.y" /* Like yyerror() but takes a printf-style format string. */ void @@ -3399,7 +3415,7 @@ sudoers_error_hook(sudoers, this_lineno, column, fmt, ap); va_end(ap); } - if (sudoers_warnings && fmt != NULL) { + if (parser_conf.verbose > 0 && fmt != NULL) { LEXTRACE("<*> "); #ifndef TRACELEXER if (trace_print == NULL || trace_print == sudoers_trace_print) { @@ -3546,7 +3562,7 @@ } static struct command_digest * -new_digest(int digest_type, char *digest_str) +new_digest(unsigned int digest_type, char *digest_str) { struct command_digest *digest; debug_decl(new_digest, SUDOERS_DEBUG_PARSER); @@ -3921,13 +3937,15 @@ * Takes ownership of lhost and shost. */ void -init_parse_tree(struct sudoers_parse_tree *parse_tree, char *lhost, char *shost) +init_parse_tree(struct sudoers_parse_tree *parse_tree, char *lhost, char *shost, + struct sudo_nss *nss) { TAILQ_INIT(&parse_tree->userspecs); TAILQ_INIT(&parse_tree->defaults); parse_tree->aliases = NULL; parse_tree->shost = shost; parse_tree->lhost = lhost; + parse_tree->nss = nss; } /* @@ -3963,7 +3981,7 @@ * the current sudoers file to path. */ bool -init_parser(const char *path, bool quiet, bool strict) +init_parser(const char *file, const struct sudoers_parser_config *conf) { bool ret = true; debug_decl(init_parser, SUDOERS_DEBUG_PARSER); @@ -3971,10 +3989,19 @@ free_parse_tree(&parsed_policy); parser_leak_init(); init_lexer(); + parse_error = false; + + if (conf != NULL) { + parser_conf = *conf; + } else { + const struct sudoers_parser_config def_conf = + SUDOERS_PARSER_CONFIG_INITIALIZER; + parser_conf = def_conf; + } sudo_rcstr_delref(sudoers); - if (path != NULL) { - if ((sudoers = sudo_rcstr_dup(path)) == NULL) { + if (file != NULL) { + if ((sudoers = sudo_rcstr_dup(file)) == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); ret = false; } @@ -3982,13 +4009,26 @@ sudoers = NULL; } - parse_error = false; - sudoers_warnings = !quiet; - sudoers_strict = strict; + sudo_rcstr_delref(sudoers_search_path); + if (parser_conf.sudoers_path != NULL) { + sudoers_search_path = sudo_rcstr_dup(parser_conf.sudoers_path); + if (sudoers_search_path == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + ret = false; + } + } else { + sudoers_search_path = NULL; + } debug_return_bool(ret); } +bool +reset_parser(void) +{ + return init_parser(NULL, NULL); +} + /* * Initialize all options in a cmndspec. */ @@ -4013,6 +4053,36 @@ #endif } +uid_t +sudoers_file_uid(void) +{ + return parser_conf.sudoers_uid; +} + +gid_t +sudoers_file_gid(void) +{ + return parser_conf.sudoers_gid; +} + +mode_t +sudoers_file_mode(void) +{ + return parser_conf.sudoers_mode; +} + +bool +sudoers_error_recovery(void) +{ + return parser_conf.recovery; +} + +bool +sudoers_strict(void) +{ + return parser_conf.strict; +} + bool parser_leak_add(enum parser_leak_types type, void *v) { diff -Nru sudo-1.9.13p3/plugins/sudoers/gram.y sudo-1.9.14p2/plugins/sudoers/gram.y --- sudo-1.9.13p3/plugins/sudoers/gram.y 2023-03-04 15:50:10.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/gram.y 2023-07-15 15:37:23.000000000 +0000 @@ -2,7 +2,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1996, 1998-2005, 2007-2013, 2014-2022 + * Copyright (c) 1996, 1998-2005, 2007-2013, 2014-2023 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -48,11 +48,11 @@ /* * Globals */ -bool sudoers_warnings = true; -bool sudoers_recovery = true; -bool sudoers_strict = false; bool parse_error = false; +static struct sudoers_parser_config parser_conf = + SUDOERS_PARSER_CONFIG_INITIALIZER; + /* Optional logging function for parse errors. */ sudoers_logger_t sudoers_error_hook; @@ -81,7 +81,7 @@ static struct defaults *new_default(char *, char *, short); static struct member *new_member(char *, int); static struct sudo_command *new_command(char *, char *); -static struct command_digest *new_digest(int, char *); +static struct command_digest *new_digest(unsigned int, char *); static void alias_error(const char *name, int errnum); %} @@ -216,17 +216,19 @@ yyerrok; } | include { - const bool success = push_include($1, false); + const bool success = push_include($1, + parser_conf.verbose); parser_leak_remove(LEAK_PTR, $1); free($1); - if (!success && !sudoers_recovery) + if (!success && !parser_conf.recovery) YYERROR; } | includedir { - const bool success = push_include($1, true); + const bool success = push_includedir($1, + parser_conf.verbose); parser_leak_remove(LEAK_PTR, $1); free($1); - if (!success && !sudoers_recovery) + if (!success && !parser_conf.recovery) YYERROR; } | userlist privileges '\n' { @@ -715,6 +717,7 @@ ; runaslist : /* empty */ { + /* User may run command as themselves. */ $$ = calloc(1, sizeof(struct runascontainer)); if ($$ != NULL) { $$->runasusers = new_member(NULL, MYSELF); @@ -731,6 +734,7 @@ parser_leak_add(LEAK_RUNAS, $$); } | userlist { + /* User may run command as a user in userlist. */ $$ = calloc(1, sizeof(struct runascontainer)); if ($$ == NULL) { sudoerserror(N_("unable to allocate memory")); @@ -742,6 +746,10 @@ /* $$->runasgroups = NULL; */ } | userlist ':' grouplist { + /* + * User may run command as a user in userlist + * and optionally as a group in grouplist. + */ $$ = calloc(1, sizeof(struct runascontainer)); if ($$ == NULL) { sudoerserror(N_("unable to allocate memory")); @@ -754,17 +762,25 @@ $$->runasgroups = $3; } | ':' grouplist { + /* User may run command as a group in grouplist. */ $$ = calloc(1, sizeof(struct runascontainer)); + if ($$ != NULL) { + $$->runasusers = new_member(NULL, MYSELF); + if ($$->runasusers == NULL) { + free($$); + $$ = NULL; + } + } if ($$ == NULL) { sudoerserror(N_("unable to allocate memory")); YYERROR; } parser_leak_add(LEAK_RUNAS, $$); parser_leak_remove(LEAK_MEMBER, $2); - /* $$->runasusers = NULL; */ $$->runasgroups = $2; } | ':' { + /* User may run command as themselves. */ $$ = calloc(1, sizeof(struct runascontainer)); if ($$ != NULL) { $$->runasusers = new_member(NULL, MYSELF); @@ -1216,7 +1232,7 @@ sudoers_error_hook(sudoers, this_lineno, column, fmt, ap); va_end(ap); } - if (sudoers_warnings && fmt != NULL) { + if (parser_conf.verbose > 0 && fmt != NULL) { LEXTRACE("<*> "); #ifndef TRACELEXER if (trace_print == NULL || trace_print == sudoers_trace_print) { @@ -1363,7 +1379,7 @@ } static struct command_digest * -new_digest(int digest_type, char *digest_str) +new_digest(unsigned int digest_type, char *digest_str) { struct command_digest *digest; debug_decl(new_digest, SUDOERS_DEBUG_PARSER); @@ -1738,13 +1754,15 @@ * Takes ownership of lhost and shost. */ void -init_parse_tree(struct sudoers_parse_tree *parse_tree, char *lhost, char *shost) +init_parse_tree(struct sudoers_parse_tree *parse_tree, char *lhost, char *shost, + struct sudo_nss *nss) { TAILQ_INIT(&parse_tree->userspecs); TAILQ_INIT(&parse_tree->defaults); parse_tree->aliases = NULL; parse_tree->shost = shost; parse_tree->lhost = lhost; + parse_tree->nss = nss; } /* @@ -1780,7 +1798,7 @@ * the current sudoers file to path. */ bool -init_parser(const char *path, bool quiet, bool strict) +init_parser(const char *file, const struct sudoers_parser_config *conf) { bool ret = true; debug_decl(init_parser, SUDOERS_DEBUG_PARSER); @@ -1788,10 +1806,19 @@ free_parse_tree(&parsed_policy); parser_leak_init(); init_lexer(); + parse_error = false; + + if (conf != NULL) { + parser_conf = *conf; + } else { + const struct sudoers_parser_config def_conf = + SUDOERS_PARSER_CONFIG_INITIALIZER; + parser_conf = def_conf; + } sudo_rcstr_delref(sudoers); - if (path != NULL) { - if ((sudoers = sudo_rcstr_dup(path)) == NULL) { + if (file != NULL) { + if ((sudoers = sudo_rcstr_dup(file)) == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); ret = false; } @@ -1799,13 +1826,26 @@ sudoers = NULL; } - parse_error = false; - sudoers_warnings = !quiet; - sudoers_strict = strict; + sudo_rcstr_delref(sudoers_search_path); + if (parser_conf.sudoers_path != NULL) { + sudoers_search_path = sudo_rcstr_dup(parser_conf.sudoers_path); + if (sudoers_search_path == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + ret = false; + } + } else { + sudoers_search_path = NULL; + } debug_return_bool(ret); } +bool +reset_parser(void) +{ + return init_parser(NULL, NULL); +} + /* * Initialize all options in a cmndspec. */ @@ -1830,6 +1870,36 @@ #endif } +uid_t +sudoers_file_uid(void) +{ + return parser_conf.sudoers_uid; +} + +gid_t +sudoers_file_gid(void) +{ + return parser_conf.sudoers_gid; +} + +mode_t +sudoers_file_mode(void) +{ + return parser_conf.sudoers_mode; +} + +bool +sudoers_error_recovery(void) +{ + return parser_conf.recovery; +} + +bool +sudoers_strict(void) +{ + return parser_conf.strict; +} + bool parser_leak_add(enum parser_leak_types type, void *v) { diff -Nru sudo-1.9.13p3/plugins/sudoers/iolog.c sudo-1.9.14p2/plugins/sudoers/iolog.c --- sudo-1.9.13p3/plugins/sudoers/iolog.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/iolog.c 2023-07-15 15:37:23.000000000 +0000 @@ -399,7 +399,6 @@ evlog->iolog_path = strdup(*cur + sizeof("iolog_path=") - 1); if (evlog->iolog_path == NULL) goto oom; - evlog->iolog_file = sudo_basename(evlog->iolog_path); continue; } if (strncmp(*cur, "iolog_stdin=", sizeof("iolog_stdin=") - 1) == 0) { diff -Nru sudo-1.9.13p3/plugins/sudoers/ldap.c sudo-1.9.14p2/plugins/sudoers/ldap.c --- sudo-1.9.13p3/plugins/sudoers/ldap.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/ldap.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2003-2022 Todd C. Miller + * Copyright (c) 2003-2023 Todd C. Miller * * This code is derived from software contributed by Aaron Spangler. * @@ -67,14 +67,6 @@ #include "sudo_ldap_conf.h" #include "sudo_dso.h" -#ifndef LDAP_OPT_RESULT_CODE -# define LDAP_OPT_RESULT_CODE LDAP_OPT_ERROR_NUMBER -#endif - -#ifndef LDAP_OPT_SUCCESS -# define LDAP_OPT_SUCCESS LDAP_SUCCESS -#endif - #if defined(HAVE_LDAP_SASL_INTERACTIVE_BIND_S) && !defined(LDAP_SASL_QUIET) # define LDAP_SASL_QUIET 0 #endif @@ -83,21 +75,6 @@ #define ldap_unbind_ext_s(a, b, c) ldap_unbind_s(a) #endif -#ifndef HAVE_LDAP_SEARCH_EXT_S -# ifdef HAVE_LDAP_SEARCH_ST -# define ldap_search_ext_s(a, b, c, d, e, f, g, h, i, j, k) \ - ldap_search_st(a, b, c, d, e, f, i, k) -# else -# define ldap_search_ext_s(a, b, c, d, e, f, g, h, i, j, k) \ - ldap_search_s(a, b, c, d, e, f, k) -# endif -#endif - -#define LDAP_FOREACH(var, ld, res) \ - for ((var) = ldap_first_entry((ld), (res)); \ - (var) != NULL; \ - (var) = ldap_next_entry((ld), (var))) - /* The TIMEFILTER_LENGTH is the length of the filter when timed entries are used. The length is computed as follows: 81 for the filter itself @@ -249,7 +226,7 @@ ldapssl_err2string(ret)); if (ldap_conf.tls_certfile == NULL) sudo_warnx(U_("you must set TLS_CERT in %s to use SSL"), - path_ldap_conf); + policy_path_ldap_conf()); goto done; } @@ -305,7 +282,7 @@ bval = ldap_get_values_len(ld, entry, attr); if (bval == NULL) { - int optrc = ldap_get_option(ld, LDAP_OPT_RESULT_CODE, rc); + const int optrc = ldap_get_option(ld, LDAP_OPT_RESULT_CODE, rc); if (optrc != LDAP_OPT_SUCCESS) *rc = optrc; } else { @@ -320,8 +297,11 @@ * A matching entry that is negated will always return false. */ static int -sudo_ldap_check_non_unix_group(LDAP *ld, LDAPMessage *entry, struct passwd *pw) +sudo_ldap_check_non_unix_group(const struct sudo_nss *nss, LDAPMessage *entry, + struct passwd *pw) { + struct sudo_ldap_handle *handle = nss->handle; + LDAP *ld = handle->ld; struct berval **bv, **p; bool ret = false; int rc; @@ -341,14 +321,15 @@ /* walk through values */ for (p = bv; *p != NULL && !ret; p++) { bool negated = false; - char *val = (*p)->bv_val; + const char *val = (*p)->bv_val; if (*val == '!') { val++; negated = true; } if (*val == '+') { - if (netgr_matches(val, def_netgroup_tuple ? user_runhost : NULL, + if (netgr_matches(nss, val, + def_netgroup_tuple ? user_runhost : NULL, def_netgroup_tuple ? user_srunhost : NULL, pw->pw_name)) ret = true; DPRINTF2("ldap sudoUser netgroup '%s%s' ... %s", @@ -555,122 +536,6 @@ } /* - * Determine length of query value after escaping characters - * as per RFC 4515. - */ -static size_t -sudo_ldap_value_len(const char *value) -{ - const char *s; - size_t len = 0; - - for (s = value; *s != '\0'; s++) { - switch (*s) { - case '\\': - case '(': - case ')': - case '*': - len += 2; - break; - } - } - len += (size_t)(s - value); - return len; -} - -/* - * Like strlcat() but escapes characters as per RFC 4515. - */ -static size_t -sudo_ldap_value_cat(char *dst, const char *src, size_t size) -{ - char *d = dst; - const char *s = src; - size_t n = size; - size_t dlen; - - /* Find the end of dst and adjust bytes left but don't go past end */ - while (n-- != 0 && *d != '\0') - d++; - dlen = d - dst; - n = size - dlen; - - if (n == 0) - return dlen + strlen(s); - while (*s != '\0') { - switch (*s) { - case '\\': - if (n < 3) - goto done; - *d++ = '\\'; - *d++ = '5'; - *d++ = 'c'; - n -= 3; - break; - case '(': - if (n < 3) - goto done; - *d++ = '\\'; - *d++ = '2'; - *d++ = '8'; - n -= 3; - break; - case ')': - if (n < 3) - goto done; - *d++ = '\\'; - *d++ = '2'; - *d++ = '9'; - n -= 3; - break; - case '*': - if (n < 3) - goto done; - *d++ = '\\'; - *d++ = '2'; - *d++ = 'a'; - n -= 3; - break; - default: - if (n < 1) - goto done; - *d++ = *s; - n--; - break; - } - s++; - } -done: - *d = '\0'; - while (*s != '\0') - s++; - return dlen + (s - src); /* count does not include NUL */ -} - -/* - * Like strdup() but escapes characters as per RFC 4515. - */ -static char * -sudo_ldap_value_dup(const char *src) -{ - char *dst; - size_t size; - - size = sudo_ldap_value_len(src) + 1; - dst = malloc(size); - if (dst == NULL) - return NULL; - - *dst = '\0'; - if (sudo_ldap_value_cat(dst, src, size) >= size) { - /* Should not be possible... */ - free(dst); - dst = NULL; - } - return dst; -} - -/* * Check the netgroups list beginning at "start" for nesting. * Parent nodes with a memberNisNetgroup that match one of the * netgroups are added to the list and checked for further nesting. @@ -992,7 +857,7 @@ } /* Add space for user netgroups if netgroup_base specified. */ - if (!STAILQ_EMPTY(&ldap_conf.netgroup_base)) { + if (ldap_conf.netgroup_query) { DPRINTF1("Looking up netgroups for %s", pw->pw_name); if (sudo_netgroup_lookup(ld, pw, &netgroups)) { STAILQ_FOREACH(ng, &netgroups, entries) { @@ -1161,9 +1026,17 @@ int len; debug_decl(sudo_ldap_build_pass2, SUDOERS_DEBUG_LDAP); - /* No need to query netgroups if using netgroup_base. */ - if (!STAILQ_EMPTY(&ldap_conf.netgroup_base)) + /* + * If we can query nisNetgroupTriple using netgroup_base, there is + * no need to match all netgroups in pass 2. If netgroups are not + * natively supported, netgroup_base must be set. + */ + if (ldap_conf.netgroup_query) + query_netgroups = false; +#ifndef HAVE_INNETGR + else if (STAILQ_EMPTY(&ldap_conf.netgroup_base)) query_netgroups = false; +#endif /* Short circuit if no netgroups and no non-Unix groups. */ if (!query_netgroups && !def_group_plugin) { @@ -1766,7 +1639,7 @@ } handle->ld = ld; /* handle->pw = NULL; */ - init_parse_tree(&handle->parse_tree, NULL, NULL); + init_parse_tree(&handle->parse_tree, NULL, NULL, nss); nss->handle = handle; done: @@ -1774,7 +1647,7 @@ } static int -sudo_ldap_getdefs(struct sudo_nss *nss) +sudo_ldap_getdefs(const struct sudo_nss *nss) { struct sudo_ldap_handle *handle = nss->handle; struct timeval tv, *tvp = NULL; @@ -1921,7 +1794,7 @@ * freeing the result with sudo_ldap_result_free(). */ static struct ldap_result * -sudo_ldap_result_get(struct sudo_nss *nss, struct passwd *pw) +sudo_ldap_result_get(const struct sudo_nss *nss, struct passwd *pw) { struct sudo_ldap_handle *handle = nss->handle; struct ldap_config_str *base; @@ -1982,7 +1855,7 @@ LDAP_FOREACH(entry, ld, result) { if (pass != 0) { /* Check non-unix group in 2nd pass. */ - switch (sudo_ldap_check_non_unix_group(ld, entry, pw)) { + switch (sudo_ldap_check_non_unix_group(nss, entry, pw)) { case -1: goto oom; case false: @@ -1997,7 +1870,6 @@ DPRINTF1("result now has %d entries", lres->nentries); } free(filt); - filt = NULL; } else if (errno != ENOENT) { /* Out of memory? */ goto oom; @@ -2024,7 +1896,7 @@ * parse tree. */ static int -sudo_ldap_query(struct sudo_nss *nss, struct passwd *pw) +sudo_ldap_query(const struct sudo_nss *nss, struct passwd *pw) { struct sudo_ldap_handle *handle = nss->handle; struct ldap_result *lres = NULL; @@ -2078,7 +1950,7 @@ * The contents will be populated by the getdefs() and query() functions. */ static struct sudoers_parse_tree * -sudo_ldap_parse(struct sudo_nss *nss) +sudo_ldap_parse(const struct sudo_nss *nss) { struct sudo_ldap_handle *handle = nss->handle; debug_decl(sudo_ldap_parse, SUDOERS_DEBUG_LDAP); @@ -2092,6 +1964,14 @@ debug_return_ptr(&handle->parse_tree); } +static int +sudo_ldap_innetgr(const struct sudo_nss *nss, const char *netgr, + const char *host, const char *user, const char *domain) +{ + const struct sudo_ldap_handle *handle = nss->handle; + return sudo_ldap_innetgr_int(handle->ld, netgr, host, user, domain); +} + #if 0 /* * Create an ldap_result from an LDAP search result. @@ -2150,5 +2030,6 @@ sudo_ldap_close, sudo_ldap_parse, sudo_ldap_query, - sudo_ldap_getdefs + sudo_ldap_getdefs, + sudo_ldap_innetgr }; diff -Nru sudo-1.9.13p3/plugins/sudoers/ldap_conf.c sudo-1.9.14p2/plugins/sudoers/ldap_conf.c --- sudo-1.9.13p3/plugins/sudoers/ldap_conf.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/ldap_conf.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2003-2020 Todd C. Miller + * Copyright (c) 2003-2023 Todd C. Miller * * This code is derived from software contributed by Aaron Spangler. * @@ -59,10 +59,6 @@ # define LDAP_OPT_NETWORK_TIMEOUT LDAP_OPT_CONNECT_TIMEOUT #endif -#ifndef LDAP_OPT_SUCCESS -# define LDAP_OPT_SUCCESS LDAP_SUCCESS -#endif - #ifndef LDAPS_PORT # define LDAPS_PORT 636 #endif @@ -138,6 +134,7 @@ { "sudoers_search_filter", CONF_STR, -1, &ldap_conf.search_filter }, { "netgroup_base", CONF_LIST_STR, -1, &ldap_conf.netgroup_base }, { "netgroup_search_filter", CONF_STR, -1, &ldap_conf.netgroup_search_filter }, + { "netgroup_query", CONF_BOOL, -1, &ldap_conf.netgroup_query }, #ifdef HAVE_LDAP_SASL_INTERACTIVE_BIND_S { "use_sasl", CONF_BOOL, -1, &ldap_conf.use_sasl }, { "sasl_mech", CONF_STR, -1, &ldap_conf.sasl_mech }, @@ -358,7 +355,7 @@ ssize_t len; debug_decl(sudo_ldap_read_secret, SUDOERS_DEBUG_LDAP); - if ((fp = fopen(path_ldap_secret, "r")) != NULL) { + if ((fp = fopen(policy_path_ldap_secret(), "r")) != NULL) { len = getdelim(&line, &linesize, '\n', fp); if (len != -1) { /* trim newline */ @@ -432,7 +429,7 @@ &errstr); if (errstr != NULL) { sudo_warnx(U_("%s: %s: %s: %s"), - path_ldap_conf, keyword, value, U_(errstr)); + policy_path_ldap_conf(), keyword, value, U_(errstr)); } break; case CONF_STR: @@ -455,7 +452,7 @@ if (len > 0) { head = (struct ldap_config_str_list *)cur->valp; - if ((str = malloc(sizeof(*str) + len)) == NULL) { + if ((str = malloc(sizeof(*str) + len + 1)) == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); debug_return_bool(false); } @@ -556,6 +553,7 @@ ldap_conf.deref = -1; ldap_conf.search_filter = strdup(DEFAULT_SEARCH_FILTER); ldap_conf.netgroup_search_filter = strdup(DEFAULT_NETGROUP_SEARCH_FILTER); + ldap_conf.netgroup_query = true; STAILQ_INIT(&ldap_conf.uri); STAILQ_INIT(&ldap_conf.base); STAILQ_INIT(&ldap_conf.netgroup_base); @@ -565,7 +563,7 @@ debug_return_bool(false); } - if ((fp = fopen(path_ldap_conf, "r")) == NULL) + if ((fp = fopen(policy_path_ldap_conf(), "r")) == NULL) debug_return_bool(false); while (sudo_parseln(&line, &linesize, NULL, fp, PARSELN_COMM_BOL|PARSELN_CONT_IGN) != -1) { @@ -598,6 +596,8 @@ debug_return_bool(false); } } + if (!STAILQ_EMPTY(&ldap_conf.netgroup_base)) + ldap_conf.netgroup_query = false; DPRINTF1("LDAP Config Summary"); DPRINTF1("==================="); @@ -626,6 +626,8 @@ STAILQ_FOREACH(conf_str, &ldap_conf.netgroup_base, entries) { DPRINTF1("netgroup_base %s", conf_str->val); } + DPRINTF1("netgroup_query %s", + ldap_conf.netgroup_query ? "(yes)" : "(no)"); } else { DPRINTF1("netgroup_base %s", "(NONE: will use nsswitch)"); } @@ -781,7 +783,7 @@ /* If rootbinddn set, read in /etc/ldap.secret if it exists. */ if (ldap_conf.rootbinddn) { - sudo_ldap_read_secret(path_ldap_secret); + sudo_ldap_read_secret(policy_path_ldap_secret()); } else if (ldap_conf.bindpw) { cp = sudo_ldap_decode_secret(ldap_conf.bindpw); if (cp != NULL) { diff -Nru sudo-1.9.13p3/plugins/sudoers/ldap_innetgr.c sudo-1.9.14p2/plugins/sudoers/ldap_innetgr.c --- sudo-1.9.13p3/plugins/sudoers/ldap_innetgr.c 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/ldap_innetgr.c 2023-07-15 15:37:23.000000000 +0000 @@ -0,0 +1,264 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2023 Todd C. Miller + * + * 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 + +#include +#include +#include +#include +#include +#ifdef HAVE_STRINGS_H +# include +#endif /* HAVE_STRINGS_H */ +#include +#include +#ifdef HAVE_LBER_H +# include +#endif +#include + +#include "sudoers.h" +#include "sudo_ldap.h" +#include "sudo_ldap_conf.h" + +/* + * Compare str to netgroup string ngstr of length nglen where str is a + * NUL-terminated string and ngstr is part of a netgroup triple string. + * Uses innetgr(3)-style matching rules. + * Returns true if the strings match, else false. + */ +static bool +sudo_ldap_netgroup_match_str(const char *str, const char *ngstr, size_t nglen, + bool ignore_case) +{ + debug_decl(sudo_ldap_netgroup_match_str, SUDOERS_DEBUG_LDAP); + + /* Skip leading whitespace. */ + while (isspace((unsigned char)*ngstr) && nglen > 0) { + ngstr++; + nglen--; + } + /* Skip trailing whitespace. */ + while (nglen > 0 && isspace((unsigned char)ngstr[nglen - 1])) { + nglen--; + } + + sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s: compare \"%s\" to \"%.*s\"", + __func__, str ? str : "", (int)nglen, ngstr); + + if (nglen == 0 || str == NULL) { + /* An empty string is a wildcard. */ + debug_return_bool(true); + } + if (*ngstr == '-' && nglen == 1) { + /* '-' means no valid value. */ + debug_return_bool(false); + } + if (ignore_case) { + if (strncasecmp(str, ngstr, nglen) == 0 && str[nglen] == '\0') + debug_return_bool(true); + } else { + if (strncmp(str, ngstr, nglen) == 0 && str[nglen] == '\0') + debug_return_bool(true); + } + debug_return_bool(false); +} + +/* + * Match the specified netgroup triple using the given host, + * user and domain. Matching rules as per innetgr(3). + * Returns 1 on match, else 0. + */ +static int +sudo_ldap_match_netgroup(const char *triple, const char *host, + const char *user, const char *domain) +{ + const char *cp, *ep; + debug_decl(sudo_ldap_match_netgroup, SUDOERS_DEBUG_LDAP); + + /* Trim leading space, check for opening paren. */ + while (isspace((unsigned char)*triple)) + triple++; + if (*triple != '(') { + sudo_debug_printf(SUDO_DEBUG_ERROR, "%s: invalid triple: %s", + __func__, triple); + debug_return_int(0); + } + sudo_debug_printf(SUDO_DEBUG_INFO, "%s: matching (%s,%s,%s) against %s", + __func__, host ? host : "", user ? user : "", domain ? domain : "", + triple); + + /* Parse host. */ + cp = triple + 1; + ep = strchr(cp, ','); + if (ep == NULL || !sudo_ldap_netgroup_match_str(host, cp, ep - cp, true)) + debug_return_int(0); + + /* Parse user. */ + cp = ep + 1; + ep = strchr(cp, ','); + if (ep == NULL || !sudo_ldap_netgroup_match_str(user, cp, ep - cp, def_case_insensitive_user)) + debug_return_int(0); + + /* Parse domain. */ + cp = ep + 1; + ep = strchr(cp, ')'); + if (ep == NULL || !sudo_ldap_netgroup_match_str(domain, cp, ep - cp, true)) + debug_return_int(0); + + debug_return_int(1); +} + +#define MAX_NETGROUP_DEPTH 128 +struct netgroups_seen { + const char *groups[MAX_NETGROUP_DEPTH]; + size_t len; +}; + +static int +sudo_ldap_innetgr_base(LDAP *ld, const char *base, + struct timeval *timeout, const char *netgr, const char *host, + const char *user, const char *domain, struct netgroups_seen *seen) +{ + char *escaped_netgr = NULL, *filt = NULL; + LDAPMessage *entry, *result = NULL; + int rc, ret = 0; + size_t n; + debug_decl(sudo_ldap_innetgr_base, SUDOERS_DEBUG_LDAP); + + /* Cycle detection. */ + for (n = 0; n < seen->len; n++) { + if (strcmp(netgr, seen->groups[n]) == 0) { + DPRINTF1("%s: cycle in netgroups", netgr); + goto done; + } + } + if (seen->len + 1 > MAX_NETGROUP_DEPTH) { + DPRINTF1("%s: too many nested netgroups", netgr); + goto done; + } + seen->groups[seen->len++] = netgr; + + /* Escape the netgroup name per RFC 4515. */ + if ((escaped_netgr = sudo_ldap_value_dup(netgr)) == NULL) + goto done; + + /* Build nisNetgroup query. */ + rc = asprintf(&filt, "(&%s(cn=%s))", + ldap_conf.netgroup_search_filter, escaped_netgr); + if (rc == -1) + goto done; + DPRINTF1("ldap netgroup search filter: '%s'", filt); + + /* Perform an LDAP query for nisNetgroup. */ + DPRINTF1("searching from netgroup_base '%s'", base); + rc = ldap_search_ext_s(ld, base, LDAP_SCOPE_SUBTREE, filt, + NULL, 0, NULL, NULL, timeout, 0, &result); + free(filt); + if (rc != LDAP_SUCCESS) { + DPRINTF1("ldap netgroup search failed: %s", ldap_err2string(rc)); + goto done; + } + + LDAP_FOREACH(entry, ld, result) { + struct berval **bv, **p; + + /* Check all nisNetgroupTriple entries. */ + bv = ldap_get_values_len(ld, entry, "nisNetgroupTriple"); + if (bv == NULL) { + const int optrc = ldap_get_option(ld, LDAP_OPT_RESULT_CODE, &rc); + if (optrc != LDAP_OPT_SUCCESS || rc == LDAP_NO_MEMORY) + goto done; + } else { + for (p = bv; *p != NULL && !ret; p++) { + char *val = (*p)->bv_val; + if (sudo_ldap_match_netgroup(val, host, user, domain)) { + ret = 1; + break; + } + } + ldap_value_free_len(bv); + if (ret == 1) + break; + } + + /* Handle nested netgroups. */ + bv = ldap_get_values_len(ld, entry, "memberNisNetgroup"); + if (bv == NULL) { + const int optrc = ldap_get_option(ld, LDAP_OPT_RESULT_CODE, &rc); + if (optrc != LDAP_OPT_SUCCESS || rc == LDAP_NO_MEMORY) + goto done; + } else { + for (p = bv; *p != NULL && !ret; p++) { + const char *val = (*p)->bv_val; + const size_t saved_len = seen->len; + ret = sudo_ldap_innetgr_base(ld, base, timeout, val, host, + user, domain, seen); + /* Restore seen state to avoid use-after-free. */ + seen->len = saved_len; + } + ldap_value_free_len(bv); + } + } + +done: + ldap_msgfree(result); + free(escaped_netgr); + + debug_return_int(ret); +} + +int +sudo_ldap_innetgr_int(void *v, const char *netgr, const char *host, + const char *user, const char *domain) +{ + LDAP *ld = v; + struct timeval tv, *tvp = NULL; + struct ldap_config_str *base; + struct netgroups_seen seen; + int ret = 0; + debug_decl(sudo_ldap_innetgr, SUDOERS_DEBUG_LDAP); + + if (STAILQ_EMPTY(&ldap_conf.netgroup_base)) { + /* LDAP netgroups not configured. */ + debug_return_int(-1); + } + + if (ldap_conf.timeout > 0) { + tv.tv_sec = ldap_conf.timeout; + tv.tv_usec = 0; + tvp = &tv; + } + + /* Perform an LDAP query for nisNetgroup. */ + STAILQ_FOREACH(base, &ldap_conf.netgroup_base, entries) { + seen.len = 0; + ret = sudo_ldap_innetgr_base(ld, base->val, tvp, netgr, host, + user, domain, &seen); + if (ret != 0) + break; + } + + debug_return_int(ret); +} diff -Nru sudo-1.9.13p3/plugins/sudoers/ldap_util.c sudo-1.9.14p2/plugins/sudoers/ldap_util.c --- sudo-1.9.13p3/plugins/sudoers/ldap_util.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/ldap_util.c 2023-07-15 15:37:23.000000000 +0000 @@ -632,3 +632,119 @@ m->type = ALL; debug_return_ptr(m); } + +/* + * Determine length of query value after escaping characters + * as per RFC 4515. + */ +size_t +sudo_ldap_value_len(const char *value) +{ + const char *s; + size_t len = 0; + + for (s = value; *s != '\0'; s++) { + switch (*s) { + case '\\': + case '(': + case ')': + case '*': + len += 2; + break; + } + } + len += (size_t)(s - value); + return len; +} + +/* + * Like strlcat() but escapes characters as per RFC 4515. + */ +size_t +sudo_ldap_value_cat(char *dst, const char *src, size_t size) +{ + char *d = dst; + const char *s = src; + size_t n = size; + size_t dlen; + + /* Find the end of dst and adjust bytes left but don't go past end */ + while (n-- != 0 && *d != '\0') + d++; + dlen = d - dst; + n = size - dlen; + + if (n == 0) + return dlen + strlen(s); + while (*s != '\0') { + switch (*s) { + case '\\': + if (n < 3) + goto done; + *d++ = '\\'; + *d++ = '5'; + *d++ = 'c'; + n -= 3; + break; + case '(': + if (n < 3) + goto done; + *d++ = '\\'; + *d++ = '2'; + *d++ = '8'; + n -= 3; + break; + case ')': + if (n < 3) + goto done; + *d++ = '\\'; + *d++ = '2'; + *d++ = '9'; + n -= 3; + break; + case '*': + if (n < 3) + goto done; + *d++ = '\\'; + *d++ = '2'; + *d++ = 'a'; + n -= 3; + break; + default: + if (n < 1) + goto done; + *d++ = *s; + n--; + break; + } + s++; + } +done: + *d = '\0'; + while (*s != '\0') + s++; + return dlen + (s - src); /* count does not include NUL */ +} + +/* + * Like strdup() but escapes characters as per RFC 4515. + */ +char * +sudo_ldap_value_dup(const char *src) +{ + char *dst; + size_t size; + + size = sudo_ldap_value_len(src) + 1; + dst = malloc(size); + if (dst == NULL) + return NULL; + + *dst = '\0'; + if (sudo_ldap_value_cat(dst, src, size) >= size) { + /* Should not be possible... */ + free(dst); + dst = NULL; + } + return dst; +} diff -Nru sudo-1.9.13p3/plugins/sudoers/log_client.c sudo-1.9.14p2/plugins/sudoers/log_client.c --- sudo-1.9.13p3/plugins/sudoers/log_client.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/log_client.c 2023-07-15 15:37:23.000000000 +0000 @@ -732,13 +732,19 @@ /* Resize buffer as needed. */ if (len > buf->size) { + const unsigned int new_size = sudo_pow2_roundup(len); + if (new_size < len) { + /* overflow */ + errno = ENOMEM; + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + goto done; + } free(buf->data); - buf->size = sudo_pow2_roundup(len); - if ((buf->data = malloc(buf->size)) == NULL) { + if ((buf->data = malloc(new_size)) == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - buf->size = 0; goto done; } + buf->size = new_size; } memcpy(buf->data, &msg_len, sizeof(msg_len)); @@ -911,9 +917,9 @@ fill_str("submithost", evlog->submithost); /* TODO - submituid */ fill_str("submituser", evlog->submituser); -// if (evlog->ttyname != NULL) { + if (evlog->ttyname != NULL) { fill_str("ttyname", evlog->ttyname); - // } + } /* Free unused structs. */ while (info_msgs_size > n) @@ -1633,16 +1639,19 @@ if (buf->size < needed) { /* Expand buffer. */ - needed = sudo_pow2_roundup(needed); - if ((newdata = malloc(needed)) == NULL) { - sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - debug_return_bool(false); + const unsigned int newsize = sudo_pow2_roundup(needed); + if (newsize < needed) { + /* overflow */ + errno = ENOMEM; + goto oom; } + if ((newdata = malloc(needed)) == NULL) + goto oom; if (buf->off > 0) memcpy(newdata, buf->data + buf->off, buf->len - buf->off); free(buf->data); buf->data = newdata; - buf->size = needed; + buf->size = newsize; } else { /* Just reset existing buffer. */ if (buf->off > 0) { @@ -1654,6 +1663,9 @@ buf->off = 0; debug_return_bool(true); +oom: + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + debug_return_bool(false); } /* diff -Nru sudo-1.9.13p3/plugins/sudoers/logging.c sudo-1.9.14p2/plugins/sudoers/logging.c --- sudo-1.9.13p3/plugins/sudoers/logging.c 2023-03-04 15:50:12.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/logging.c 2023-07-15 15:37:23.000000000 +0000 @@ -638,6 +638,24 @@ } /* + * Add message to the parse error journal, which takes ownership of it. + * The message will be freed once the journal is processed. + */ +static bool +journal_parse_error(char *message) +{ + struct parse_error *pe; + debug_decl(journal_parse_error, SUDOERS_DEBUG_LOGGING); + + pe = malloc(sizeof(*pe)); + if (pe == NULL) + debug_return_bool(false); + pe->errstr = message; + STAILQ_INSERT_TAIL(&parse_error_list, pe, entries); + debug_return_bool(false); +} + +/* * Perform logging for log_warning()/log_warningx(). */ static bool @@ -702,8 +720,27 @@ } sudoers_to_eventlog(&evlog, safe_cmnd, NewArgv, env_get(), sudo_user.uuid_str); - eventlog_alert(&evlog, evl_flags, &now, message, errstr); - log_server_alert(&evlog, &now, message, errstr); + if (!eventlog_alert(&evlog, evl_flags, &now, message, errstr)) + ret = false; + if (!log_server_alert(&evlog, &now, message, errstr)) + ret = false; + } + + if (ISSET(flags, SLOG_PARSE_ERROR)) { + char *copy; + + /* Journal parse error for later mailing. */ + if (errstr != NULL) { + if (asprintf(©, U_("%s: %s"), message, errstr) == -1) + copy = NULL; + } else { + copy = strdup(message); + } + if (copy != NULL) { + /* journal_parse_error() takes ownership of copy. */ + if (!journal_parse_error(copy)) + ret = false; + } } /* @@ -838,10 +875,10 @@ va_list args) { const int flags = SLOG_RAW_MSG|SLOG_NO_STDERR; - char *tofree = NULL; + char *message, *tofree = NULL; const char *errstr; - struct parse_error *pe; bool ret; + int len; debug_decl(log_parse_error, SUDOERS_DEBUG_LOGGING); if (fmt == NULL) { @@ -863,21 +900,15 @@ } /* Journal parse error for later mailing. */ - pe = malloc(sizeof(*pe)); - if (pe != NULL) { - int len; - - if (line > 0) { - len = asprintf(&pe->errstr, _("%s:%d:%d: %s"), file, line, column, - errstr); - } else { - len = asprintf(&pe->errstr, _("%s: %s"), file, errstr); - } - if (len != -1) { - STAILQ_INSERT_TAIL(&parse_error_list, pe, entries); - } else { - free(pe); - } + if (line > 0) { + len = asprintf(&message, _("%s:%d:%d: %s"), file, line, column, errstr); + } else { + len = asprintf(&message, _("%s: %s"), file, errstr); + } + if (len != -1) { + journal_parse_error(message); + } else { + ret = false; } free(tofree); diff -Nru sudo-1.9.13p3/plugins/sudoers/logging.h sudo-1.9.14p2/plugins/sudoers/logging.h --- sudo-1.9.13p3/plugins/sudoers/logging.h 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/logging.h 2023-07-15 15:37:23.000000000 +0000 @@ -56,6 +56,7 @@ #define SLOG_NO_STDERR 0x10 /* do not log via stderr */ #define SLOG_NO_LOG 0x20 /* do not log via file or syslog */ #define SLOG_AUDIT 0x40 /* send message to audit as well */ +#define SLOG_PARSE_ERROR 0x80 /* format as a parse error */ typedef bool (*sudoers_logger_t)(const char *file, int line, int column, const char *fmt, va_list args); diff -Nru sudo-1.9.13p3/plugins/sudoers/Makefile.in sudo-1.9.14p2/plugins/sudoers/Makefile.in --- sudo-1.9.13p3/plugins/sudoers/Makefile.in 2023-03-04 15:50:11.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/Makefile.in 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 1996, 1998-2005, 2007-2022 +# Copyright (c) 1996, 1998-2005, 2007-2023 # Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any @@ -72,8 +72,8 @@ # C preprocessor defines CPPDEFS = -DLIBDIR=\"$(libdir)\" -DLOCALEDIR=\"$(localedir)\" \ - -D_PATH_SUDOERS=\"$(sysconfdir)/sudoers\" \ - -D_PATH_CVTSUDOERS_CONF=\"$(sysconfdir)/cvtsudoers.conf\" \ + -D_PATH_SUDOERS=\"@sudoers_path@\" \ + -D_PATH_CVTSUDOERS_CONF=\"@cvtsudoers_conf@\" \ -DSUDOERS_UID=$(sudoers_uid) -DSUDOERS_GID=$(sudoers_gid) \ -DSUDOERS_MODE=$(sudoers_mode) @@ -120,6 +120,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localedir = @localedir@ @@ -173,22 +174,23 @@ AUTH_OBJS = sudo_auth.lo @AUTH_OBJS@ -LIBPARSESUDOERS_OBJS = alias.lo b64_decode.lo defaults.lo digestname.lo \ - exptilde.lo filedigest.lo gentime.lo gram.lo \ - match.lo match_addr.lo match_command.lo \ +LIBPARSESUDOERS_OBJS = alias.lo b64_decode.lo canon_path.lo defaults.lo \ + digestname.lo exptilde.lo filedigest.lo gentime.lo \ + gram.lo match.lo match_addr.lo match_command.lo \ match_digest.lo pwutil.lo pwutil_impl.lo \ redblack.lo strlist.lo sudoers_debug.lo timeout.lo \ timestr.lo toke.lo toke_util.lo LIBPARSESUDOERS_IOBJS = $(LIBPARSESUDOERS_OBJS:.lo=.i) passwd.i -SUDOERS_OBJS = $(AUTH_OBJS) audit.lo boottime.lo check.lo editor.lo env.lo \ - sudoers_hooks.lo env_pattern.lo file.lo find_path.lo \ - fmtsudoers.lo gc.lo goodpath.lo group_plugin.lo interfaces.lo \ - iolog.lo iolog_path_escapes.lo locale.lo log_client.lo \ - logging.lo parse.lo policy.lo prompt.lo serialize_list.lo \ - set_perms.lo starttime.lo strlcpy_unesc.lo strvec_join.lo \ - sudo_nss.lo sudoers.lo timestamp.lo unesc_str.lo @SUDOERS_OBJS@ +SUDOERS_OBJS = $(AUTH_OBJS) audit.lo boottime.lo check.lo editor.lo \ + env.lo sudoers_hooks.lo env_pattern.lo file.lo \ + find_path.lo fmtsudoers.lo gc.lo goodpath.lo group_plugin.lo \ + interfaces.lo iolog.lo iolog_path_escapes.lo locale.lo \ + log_client.lo logging.lo parse.lo pivot.lo policy.lo \ + prompt.lo serialize_list.lo set_perms.lo starttime.lo \ + strlcpy_unesc.lo strvec_join.lo sudo_nss.lo sudoers.lo \ + timestamp.lo unesc_str.lo @SUDOERS_OBJS@ SUDOERS_IOBJS = $(SUDOERS_OBJS:.lo=.i) @@ -914,6 +916,30 @@ $(CC) -E -o $@ $(CPPFLAGS) $< bsm_audit.plog: bsm_audit.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/bsm_audit.c --i-file $< --output-file $@ +canon_path.lo: $(srcdir)/canon_path.c $(devdir)/def_data.h \ + $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ + $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \ + $(srcdir)/redblack.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ + $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ + $(top_builddir)/pathnames.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/canon_path.c +canon_path.i: $(srcdir)/canon_path.c $(devdir)/def_data.h \ + $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ + $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \ + $(srcdir)/redblack.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ + $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ + $(top_builddir)/pathnames.h + $(CC) -E -o $@ $(CPPFLAGS) $< +canon_path.plog: canon_path.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/canon_path.c --i-file $< --output-file $@ check.lo: $(srcdir)/check.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ @@ -1662,7 +1688,8 @@ $(incdir)/sudo_debug.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)/check.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(srcdir)/auth/sudo_auth.h $(srcdir)/check.h \ $(srcdir)/defaults.h $(srcdir)/interfaces.h $(srcdir)/logging.h \ $(srcdir)/parse.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ @@ -1674,7 +1701,8 @@ $(incdir)/sudo_debug.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)/check.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(srcdir)/auth/sudo_auth.h $(srcdir)/check.h \ $(srcdir)/defaults.h $(srcdir)/interfaces.h $(srcdir)/logging.h \ $(srcdir)/parse.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ @@ -1687,7 +1715,7 @@ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h $(srcdir)/check.h \ $(srcdir)/defaults.h $(srcdir)/interfaces.h $(srcdir)/logging.h \ $(srcdir)/parse.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ @@ -1698,7 +1726,7 @@ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h $(srcdir)/check.h \ $(srcdir)/defaults.h $(srcdir)/interfaces.h $(srcdir)/logging.h \ $(srcdir)/parse.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ @@ -2050,6 +2078,32 @@ $(CC) -E -o $@ $(CPPFLAGS) $< ldap_conf.plog: ldap_conf.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/ldap_conf.c --i-file $< --output-file $@ +ldap_innetgr.lo: $(srcdir)/ldap_innetgr.c $(devdir)/def_data.h \ + $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ + $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \ + $(srcdir)/sudo_ldap.h $(srcdir)/sudo_ldap_conf.h \ + $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ + $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ + $(top_builddir)/pathnames.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/ldap_innetgr.c +ldap_innetgr.i: $(srcdir)/ldap_innetgr.c $(devdir)/def_data.h \ + $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ + $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \ + $(srcdir)/sudo_ldap.h $(srcdir)/sudo_ldap_conf.h \ + $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ + $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ + $(top_builddir)/pathnames.h + $(CC) -E -o $@ $(CPPFLAGS) $< +ldap_innetgr.plog: ldap_innetgr.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/ldap_innetgr.c --i-file $< --output-file $@ ldap_util.lo: $(srcdir)/ldap_util.c $(devdir)/def_data.h $(devdir)/gram.h \ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ @@ -2378,27 +2432,47 @@ $(CC) -E -o $@ $(CPPFLAGS) $< passwd.plog: passwd.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(authdir)/passwd.c --i-file $< --output-file $@ +pivot.lo: $(srcdir)/pivot.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h $(srcdir)/defaults.h \ + $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \ + $(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/pivot.c +pivot.i: $(srcdir)/pivot.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ + $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h $(srcdir)/defaults.h \ + $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \ + $(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h + $(CC) -E -o $@ $(CPPFLAGS) $< +pivot.plog: pivot.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/pivot.c --i-file $< --output-file $@ policy.lo: $(srcdir)/policy.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ - $(incdir)/sudo_util.h $(srcdir)/defaults.h $(srcdir)/interfaces.h \ - $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \ - $(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \ - $(srcdir)/sudoers_version.h $(top_builddir)/config.h \ - $(top_builddir)/pathnames.h + $(incdir)/sudo_util.h $(srcdir)/auth/sudo_auth.h \ + $(srcdir)/defaults.h $(srcdir)/interfaces.h $(srcdir)/logging.h \ + $(srcdir)/parse.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ + $(srcdir)/sudoers_debug.h $(srcdir)/sudoers_version.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/policy.c policy.i: $(srcdir)/policy.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ - $(incdir)/sudo_util.h $(srcdir)/defaults.h $(srcdir)/interfaces.h \ - $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \ - $(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \ - $(srcdir)/sudoers_version.h $(top_builddir)/config.h \ - $(top_builddir)/pathnames.h + $(incdir)/sudo_util.h $(srcdir)/auth/sudo_auth.h \ + $(srcdir)/defaults.h $(srcdir)/interfaces.h $(srcdir)/logging.h \ + $(srcdir)/parse.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ + $(srcdir)/sudoers_debug.h $(srcdir)/sudoers_version.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h $(CC) -E -o $@ $(CPPFLAGS) $< policy.plog: policy.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/policy.c --i-file $< --output-file $@ @@ -2591,7 +2665,7 @@ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h $(srcdir)/check.h \ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ @@ -2602,7 +2676,7 @@ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ + $(incdir)/sudo_queue.h $(incdir)/sudo_util.h $(srcdir)/check.h \ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ @@ -2925,8 +2999,9 @@ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_event.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)/logging.h \ + $(incdir)/sudo_iolog.h $(incdir)/sudo_lbuf.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_util.h $(srcdir)/logging.h \ $(top_builddir)/config.h $(top_builddir)/pathnames.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/sudoreplay.c sudoreplay.i: $(srcdir)/sudoreplay.c $(incdir)/compat/getopt.h \ @@ -2934,8 +3009,9 @@ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ $(incdir)/sudo_event.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)/logging.h \ + $(incdir)/sudo_iolog.h $(incdir)/sudo_lbuf.h \ + $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ + $(incdir)/sudo_util.h $(srcdir)/logging.h \ $(top_builddir)/config.h $(top_builddir)/pathnames.h $(CC) -E -o $@ $(CPPFLAGS) $< sudoreplay.plog: sudoreplay.i diff -Nru sudo-1.9.13p3/plugins/sudoers/match.c sudo-1.9.14p2/plugins/sudoers/match.c --- sudo-1.9.13p3/plugins/sudoers/match.c 2023-03-04 15:50:14.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/match.c 2023-07-15 15:39:55.000000000 +0000 @@ -58,15 +58,13 @@ #include "sudoers.h" #include -static struct member_list empty = TAILQ_HEAD_INITIALIZER(empty); - /* * Check whether user described by pw matches member. * Returns ALLOW, DENY or UNSPEC. */ int -user_matches(struct sudoers_parse_tree *parse_tree, const struct passwd *pw, - const struct member *m) +user_matches(const struct sudoers_parse_tree *parse_tree, + const struct passwd *pw, const struct member *m) { const char *lhost = parse_tree->lhost ? parse_tree->lhost : user_runhost; const char *shost = parse_tree->shost ? parse_tree->shost : user_srunhost; @@ -79,7 +77,7 @@ matched = !m->negated; break; case NETGROUP: - if (netgr_matches(m->name, + if (netgr_matches(parse_tree->nss, m->name, def_netgroup_tuple ? lhost : NULL, def_netgroup_tuple ? shost : NULL, pw->pw_name)) matched = !m->negated; @@ -111,8 +109,8 @@ * Returns ALLOW, DENY or UNSPEC. */ int -userlist_matches(struct sudoers_parse_tree *parse_tree, const struct passwd *pw, - const struct member_list *list) +userlist_matches(const struct sudoers_parse_tree *parse_tree, + const struct passwd *pw, const struct member_list *list) { struct member *m; int matched = UNSPEC; @@ -142,137 +140,174 @@ } /* - * Check for user described by pw in a list of members. - * If both lists are empty compare against def_runas_default. + * Check whether the requested runas user matches user_list, the + * user portion of a sudoers runaslist. If user_list is NULL, a + * list containing runas_default is used. * Returns ALLOW, DENY or UNSPEC. */ -int -runaslist_matches(struct sudoers_parse_tree *parse_tree, - const struct member_list *user_list, const struct member_list *group_list, - struct member **matching_user, struct member **matching_group) +static int +runas_userlist_matches(const struct sudoers_parse_tree *parse_tree, + const struct member_list *user_list, struct member **matching_user) { const char *lhost = parse_tree->lhost ? parse_tree->lhost : user_runhost; const char *shost = parse_tree->shost ? parse_tree->shost : user_srunhost; int user_matched = UNSPEC; - int group_matched = UNSPEC; struct member *m; struct alias *a; - int rc; - debug_decl(runaslist_matches, SUDOERS_DEBUG_MATCH); - - if (ISSET(sudo_user.flags, RUNAS_USER_SPECIFIED) || !ISSET(sudo_user.flags, RUNAS_GROUP_SPECIFIED)) { - /* If no runas user or runas group listed in sudoers, use default. */ - if (user_list == NULL && group_list == NULL) { - debug_return_int(userpw_matches(def_runas_default, - runas_pw->pw_name, runas_pw)); - } + debug_decl(runas_userlist_matches, SUDOERS_DEBUG_MATCH); - if (user_list != NULL) { - TAILQ_FOREACH_REVERSE(m, user_list, member_list, entries) { - switch (m->type) { - case ALL: - user_matched = !m->negated; - break; - case NETGROUP: - if (netgr_matches(m->name, - def_netgroup_tuple ? lhost : NULL, - def_netgroup_tuple ? shost : NULL, - runas_pw->pw_name)) - user_matched = !m->negated; - break; - case USERGROUP: - if (usergr_matches(m->name, runas_pw->pw_name, runas_pw)) - user_matched = !m->negated; - break; - case ALIAS: - a = alias_get(parse_tree, m->name, RUNASALIAS); - if (a != NULL) { - rc = runaslist_matches(parse_tree, &a->members, - &empty, matching_user, NULL); - if (rc != UNSPEC) - user_matched = m->negated ? !rc : rc; - alias_put(a); - break; - } - FALLTHROUGH; - case WORD: - if (userpw_matches(m->name, runas_pw->pw_name, runas_pw)) - user_matched = !m->negated; - break; - case MYSELF: - if (!ISSET(sudo_user.flags, RUNAS_USER_SPECIFIED) || - strcmp(user_name, runas_pw->pw_name) == 0) - user_matched = !m->negated; - break; - } - if (user_matched != UNSPEC) { - if (matching_user != NULL && m->type != ALIAS) - *matching_user = m; + TAILQ_FOREACH_REVERSE(m, user_list, member_list, entries) { + switch (m->type) { + case ALL: + user_matched = !m->negated; + break; + case NETGROUP: + if (netgr_matches(parse_tree->nss, m->name, + def_netgroup_tuple ? lhost : NULL, + def_netgroup_tuple ? shost : NULL, + runas_pw->pw_name)) + user_matched = !m->negated; + break; + case USERGROUP: + if (usergr_matches(m->name, runas_pw->pw_name, runas_pw)) + user_matched = !m->negated; + break; + case ALIAS: + a = alias_get(parse_tree, m->name, RUNASALIAS); + if (a != NULL) { + const int rc = runas_userlist_matches(parse_tree, + &a->members, matching_user); + if (rc != UNSPEC) + user_matched = m->negated ? !rc : rc; + alias_put(a); break; } - } + FALLTHROUGH; + case WORD: + if (userpw_matches(m->name, runas_pw->pw_name, runas_pw)) + user_matched = !m->negated; + break; + case MYSELF: + /* + * Only match a rule with an empty runas user if a group + * was specified on the command line without a user _or_ + * the user specified their own name on the command line. + */ + if ((!ISSET(sudo_user.flags, RUNAS_USER_SPECIFIED) && + ISSET(sudo_user.flags, RUNAS_GROUP_SPECIFIED)) || + strcmp(user_name, runas_pw->pw_name) == 0) + user_matched = !m->negated; + break; + } + if (user_matched != UNSPEC) { + if (matching_user != NULL && m->type != ALIAS) + *matching_user = m; + break; } } + debug_return_int(user_matched); +} - /* - * Skip checking runas group if none was specified. - */ - if (ISSET(sudo_user.flags, RUNAS_GROUP_SPECIFIED)) { - if (user_matched == UNSPEC) { - if (strcmp(user_name, runas_pw->pw_name) == 0) - user_matched = ALLOW; /* only changing group */ - } - if (group_list != NULL) { - TAILQ_FOREACH_REVERSE(m, group_list, member_list, entries) { - switch (m->type) { - case ALL: - group_matched = !m->negated; - break; - case ALIAS: - a = alias_get(parse_tree, m->name, RUNASALIAS); - if (a != NULL) { - rc = runaslist_matches(parse_tree, &empty, - &a->members, NULL, matching_group); - if (rc != UNSPEC) - group_matched = m->negated ? !rc : rc; - alias_put(a); - break; - } - FALLTHROUGH; - case WORD: - if (group_matches(m->name, runas_gr)) - group_matched = !m->negated; +/* + * Check whether the requested runas group matches group_list, the + * group portion of a sudoers runaslist, or the runas user's groups. + * Returns ALLOW, DENY or UNSPEC. + */ +static int +runas_grouplist_matches(const struct sudoers_parse_tree *parse_tree, + const struct member_list *group_list, struct member **matching_group) +{ + int group_matched = UNSPEC; + struct member *m; + struct alias *a; + debug_decl(runas_grouplist_matches, SUDOERS_DEBUG_MATCH); + + if (group_list != NULL) { + TAILQ_FOREACH_REVERSE(m, group_list, member_list, entries) { + switch (m->type) { + case ALL: + group_matched = !m->negated; + break; + case ALIAS: + a = alias_get(parse_tree, m->name, RUNASALIAS); + if (a != NULL) { + const int rc = runas_grouplist_matches(parse_tree, + &a->members, matching_group); + if (rc != UNSPEC) + group_matched = m->negated ? !rc : rc; + alias_put(a); break; - } - if (group_matched != UNSPEC) { - if (matching_group != NULL && m->type != ALIAS) - *matching_group = m; + } + FALLTHROUGH; + case WORD: + if (group_matches(m->name, runas_gr)) + group_matched = !m->negated; break; - } + } + if (group_matched != UNSPEC) { + if (matching_group != NULL && m->type != ALIAS) + *matching_group = m; + break; } } - if (group_matched == UNSPEC) { - struct gid_list *runas_groups; - /* - * The runas group was not explicitly allowed by sudoers. - * Check whether it is one of the target user's groups. - */ - if (runas_pw->pw_gid == runas_gr->gr_gid) { - group_matched = ALLOW; /* runas group matches passwd db */ - } else if ((runas_groups = runas_getgroups()) != NULL) { - int i; - - for (i = 0; i < runas_groups->ngids; i++) { - if (runas_groups->gids[i] == runas_gr->gr_gid) { - group_matched = ALLOW; /* matched aux group vector */ - break; - } + } + if (group_matched == UNSPEC) { + struct gid_list *runas_groups; + /* + * The runas group was not explicitly allowed by sudoers. + * Check whether it is one of the target user's groups. + */ + if (runas_pw->pw_gid == runas_gr->gr_gid) { + group_matched = ALLOW; /* runas group matches passwd db */ + } else if ((runas_groups = runas_getgroups()) != NULL) { + int i; + + for (i = 0; i < runas_groups->ngids; i++) { + if (runas_groups->gids[i] == runas_gr->gr_gid) { + group_matched = ALLOW; /* matched aux group vector */ + break; } - sudo_gidlist_delref(runas_groups); } + sudo_gidlist_delref(runas_groups); } } + debug_return_int(group_matched); +} + +/* + * Check whether the sudoers runaslist, composed of user_list and + * group_list, matches the runas user/group requested by the user. + * Either (or both) user_list and group_list may be NULL. + * If user_list is NULL, a list containing runas_default is used. + * Returns ALLOW, DENY or UNSPEC. + */ +int +runaslist_matches(const struct sudoers_parse_tree *parse_tree, + const struct member_list *user_list, const struct member_list *group_list, + struct member **matching_user, struct member **matching_group) +{ + struct member_list _user_list = TAILQ_HEAD_INITIALIZER(_user_list); + int user_matched, group_matched = UNSPEC; + struct member m_user; + debug_decl(runaslist_matches, SUDOERS_DEBUG_MATCH); + + /* If no runas user listed in sudoers, use the default value. */ + if (user_list == NULL) { + m_user.name = def_runas_default; + m_user.type = WORD; + m_user.negated = false; + TAILQ_INSERT_HEAD(&_user_list, &m_user, entries); + user_list = &_user_list; + matching_user = NULL; + } + + user_matched = runas_userlist_matches(parse_tree, user_list, matching_user); + if (ISSET(sudo_user.flags, RUNAS_GROUP_SPECIFIED)) { + group_matched = runas_grouplist_matches(parse_tree, group_list, + matching_group); + } + if (user_matched == DENY || group_matched == DENY) debug_return_int(DENY); if (user_matched == group_matched || runas_gr == NULL) @@ -285,7 +320,7 @@ * Returns ALLOW, DENY or UNSPEC. */ static int -hostlist_matches_int(struct sudoers_parse_tree *parse_tree, +hostlist_matches_int(const struct sudoers_parse_tree *parse_tree, const struct passwd *pw, const char *lhost, const char *shost, const struct member_list *list) { @@ -306,8 +341,8 @@ * Returns ALLOW, DENY or UNSPEC. */ int -hostlist_matches(struct sudoers_parse_tree *parse_tree, const struct passwd *pw, - const struct member_list *list) +hostlist_matches(const struct sudoers_parse_tree *parse_tree, + const struct passwd *pw, const struct member_list *list) { const char *lhost = parse_tree->lhost ? parse_tree->lhost : user_runhost; const char *shost = parse_tree->shost ? parse_tree->shost : user_srunhost; @@ -320,8 +355,9 @@ * Returns ALLOW, DENY or UNSPEC. */ int -host_matches(struct sudoers_parse_tree *parse_tree, const struct passwd *pw, - const char *lhost, const char *shost, const struct member *m) +host_matches(const struct sudoers_parse_tree *parse_tree, + const struct passwd *pw, const char *lhost, const char *shost, + const struct member *m) { struct alias *a; int matched = UNSPEC; @@ -332,7 +368,7 @@ matched = !m->negated; break; case NETGROUP: - if (netgr_matches(m->name, lhost, shost, + if (netgr_matches(parse_tree->nss, m->name, lhost, shost, def_netgroup_tuple ? pw->pw_name : NULL)) matched = !m->negated; break; @@ -369,7 +405,7 @@ * Returns ALLOW, DENY or UNSPEC. */ int -cmndlist_matches(struct sudoers_parse_tree *parse_tree, +cmndlist_matches(const struct sudoers_parse_tree *parse_tree, const struct member_list *list, const char *runchroot, struct cmnd_info *info) { @@ -390,8 +426,8 @@ * Returns ALLOW, DENY or UNSPEC. */ int -cmnd_matches(struct sudoers_parse_tree *parse_tree, const struct member *m, - const char *runchroot, struct cmnd_info *info) +cmnd_matches(const struct sudoers_parse_tree *parse_tree, + const struct member *m, const char *runchroot, struct cmnd_info *info) { struct alias *a; struct sudo_command *c; @@ -423,8 +459,8 @@ * Returns ALLOW, DENY or UNSPEC. */ int -cmnd_matches_all(struct sudoers_parse_tree *parse_tree, const struct member *m, - const char *runchroot, struct cmnd_info *info) +cmnd_matches_all(const struct sudoers_parse_tree *parse_tree, + const struct member *m, const char *runchroot, struct cmnd_info *info) { const bool negated = m->negated; struct sudo_command *c; @@ -670,11 +706,10 @@ * in which case that argument is not checked... */ bool -netgr_matches(const char *netgr, const char *lhost, const char *shost, const char *user) +netgr_matches(const struct sudo_nss *nss, const char *netgr, + const char *lhost, const char *shost, const char *user) { -#ifdef HAVE_INNETGR const char *domain; -#endif bool rc = false; debug_decl(netgr_matches, SUDOERS_DEBUG_MATCH); @@ -683,7 +718,6 @@ debug_return_bool(false); } -#ifdef HAVE_INNETGR /* make sure we have a valid netgroup, sudo style */ if (*netgr++ != '+') { sudo_debug_printf(SUDO_DEBUG_DIAG, "netgroup %s has no leading '+'", @@ -694,16 +728,42 @@ /* get the domain name (if any) */ domain = sudo_getdomainname(); - if (innetgr(netgr, lhost, user, domain)) - rc = true; - else if (lhost != shost && innetgr(netgr, shost, user, domain)) + /* Use nss-specific innetgr() function if available. */ + if (nss != NULL && nss->innetgr != NULL) { + switch (nss->innetgr(nss, netgr, lhost, user, domain)) { + case 0: + if (lhost != shost) { + if (nss->innetgr(nss, netgr, shost, user, domain) == 1) + rc = true; + } + goto done; + case 1: + rc = true; + goto done; + default: + /* Not supported, use system innetgr(3). */ + break; + } + } + +#ifdef HAVE_INNETGR + /* Use system innetgr() function. */ + if (innetgr(netgr, lhost, user, domain) == 1) { rc = true; + } else if (lhost != shost) { + if (innetgr(netgr, shost, user, domain) == 1) + rc = true; + } +#else + sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO, + "%s: no system netgroup support", __func__); +#endif /* HAVE_INNETGR */ +done: sudo_debug_printf(SUDO_DEBUG_DEBUG|SUDO_DEBUG_LINENO, "netgroup %s matches (%s|%s, %s, %s): %s", netgr, lhost ? lhost : "", shost ? shost : "", user ? user : "", domain ? domain : "", rc ? "true" : "false"); -#endif /* HAVE_INNETGR */ debug_return_bool(rc); } diff -Nru sudo-1.9.13p3/plugins/sudoers/match_command.c sudo-1.9.14p2/plugins/sudoers/match_command.c --- sudo-1.9.13p3/plugins/sudoers/match_command.c 2023-02-25 18:22:35.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/match_command.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1996, 1998-2005, 2007-2022 + * Copyright (c) 1996, 1998-2005, 2007-2023 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -116,25 +116,14 @@ * 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, struct stat *sb) { - char pathbuf[PATH_MAX]; bool ret; debug_decl(do_stat, SUDOERS_DEBUG_MATCH); 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; - } ret = stat(path, sb) == 0; } debug_return_bool(ret); @@ -174,7 +163,7 @@ if (magic[0] == '#' && magic[1] == '!') ret = true; } - debug_return_int(ret); + debug_return_bool(ret); } /* @@ -182,28 +171,15 @@ * Returns false on error, else true. */ static bool -open_cmnd(const char *path, const char *runchroot, - const struct command_digest_list *digests, int *fdp) +open_cmnd(const char *path, const struct command_digest_list *digests, int *fdp) { int fd; - char pathbuf[PATH_MAX]; debug_decl(open_cmnd, SUDOERS_DEBUG_MATCH); /* Only open the file for fdexec or for digest matching. */ if (def_fdexec != always && TAILQ_EMPTY(digests)) debug_return_bool(true); - /* 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; - } - fd = open(path, O_RDONLY|O_NONBLOCK); # ifdef O_EXEC if (fd == -1 && errno == EACCES && TAILQ_EMPTY(digests)) { @@ -222,7 +198,7 @@ } static void -set_cmnd_fd(int fd) +set_cmnd_fd(int fd, int rootfd) { debug_decl(set_cmnd_fd, SUDOERS_DEBUG_MATCH); @@ -237,11 +213,19 @@ } else if (is_script(fd)) { char fdpath[PATH_MAX]; struct stat sb; - int flags; + int error, flags; /* We can only use fexecve() on a script if /dev/fd/N exists. */ - (void)snprintf(fdpath, sizeof(fdpath), "/dev/fd/%d", fd); - if (stat(fdpath, &sb) != 0) { + if (rootfd != -1) { + /* Path relative to old root directory. */ + (void)snprintf(fdpath, sizeof(fdpath), "dev/fd/%d", fd); + error = fstatat(rootfd, fdpath, &sb, 0); + } else { + /* Absolute path. */ + (void)snprintf(fdpath, sizeof(fdpath), "/dev/fd/%d", fd); + error = stat(fdpath, &sb); + } + if (error != 0) { /* Missing /dev/fd file, can't use fexecve(). */ close(fd); fd = -1; @@ -266,94 +250,64 @@ * Return true if user_cmnd names one of the inodes in dir, else false. */ static bool -command_matches_dir(const char *sudoers_dir, size_t dlen, const char *runchroot, +command_matches_dir(const char *sudoers_dir, size_t dlen, int rootfd, bool intercepted, const struct command_digest_list *digests) { - char buf[PATH_MAX], sdbuf[PATH_MAX]; struct stat sudoers_stat; - struct dirent *dent; - size_t chrootlen = 0; - int fd = -1; - DIR *dirp; + char path[PATH_MAX]; + int len, fd = -1; + bool ret = false; debug_decl(command_matches_dir, SUDOERS_DEBUG_MATCH); - /* Make sudoers_dir relative to the new root, if any. */ - if (runchroot != NULL) { - const int len = - snprintf(sdbuf, sizeof(sdbuf), "%s%s", runchroot, sudoers_dir); - if (len >= ssizeof(sdbuf)) { - errno = ENAMETOOLONG; - debug_return_bool(false); + /* Compare the canonicalized directories, if possible. */ + if (user_cmnd_dir != NULL) { + char *resolved = canon_path(sudoers_dir); + if (resolved != NULL) { + if (strcmp(resolved, user_cmnd_dir) != 0) { + canon_path_free(resolved); + goto done; + } + canon_path_free(resolved); } - sudoers_dir = sdbuf; - chrootlen = strlen(runchroot); } - /* - * Grot through directory entries, looking for user_base. - */ - dirp = opendir(sudoers_dir); - if (dirp == NULL) - debug_return_bool(false); - - if (strlcpy(buf, sudoers_dir, sizeof(buf)) >= sizeof(buf)) { - closedir(dirp); - debug_return_bool(false); - } - while ((dent = readdir(dirp)) != NULL) { - if (fd != -1) { - close(fd); - fd = -1; - } + /* Check for command in sudoers_dir. */ + len = snprintf(path, sizeof(path), "%s/%s", sudoers_dir, user_base); + if (len < 0 || len >= ssizeof(path)) + goto done; - /* ignore paths > PATH_MAX (XXX - log) */ - buf[dlen] = '\0'; - if (strlcat(buf, dent->d_name, sizeof(buf)) >= sizeof(buf)) - continue; - - /* only stat if basenames are the same */ - if (strcmp(user_base, dent->d_name) != 0) - continue; + /* Open the file for fdexec or for digest matching. */ + if (!open_cmnd(path, digests, &fd)) + goto done; + if (!do_stat(fd, path, &sudoers_stat)) + goto done; + if (!intercept_ok(path, intercepted, &sudoers_stat)) + goto done; - /* 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)) - continue; - if (!intercept_ok(buf, intercepted, &sudoers_stat)) - continue; - - if (user_stat == NULL || - (user_stat->st_dev == sudoers_stat.st_dev && - user_stat->st_ino == sudoers_stat.st_ino)) { - /* buf is already relative to runchroot */ - if (!digest_matches(fd, buf, NULL, digests)) - continue; - free(safe_cmnd); - if ((safe_cmnd = strdup(buf + chrootlen)) == NULL) { - sudo_warnx(U_("%s: %s"), __func__, - U_("unable to allocate memory")); - dent = NULL; - } - break; + if (user_stat == NULL || + (user_stat->st_dev == sudoers_stat.st_dev && + user_stat->st_ino == sudoers_stat.st_ino)) { + if (!digest_matches(fd, path, digests)) + goto done; + free(safe_cmnd); + if ((safe_cmnd = strdup(path)) == NULL) { + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); } + ret = true; } - closedir(dirp); - if (dent != NULL) { - set_cmnd_fd(fd); - debug_return_bool(true); - } +done: if (fd != -1) close(fd); - debug_return_bool(false); + debug_return_bool(ret); } #else /* SUDOERS_NAME_MATCH */ /* * Return true if user_cmnd names one of the inodes in dir, else false. */ static bool -command_matches_dir(const char *sudoers_dir, size_t dlen, const char *runchroot, +command_matches_dir(const char *sudoers_dir, size_t dlen, int rootfd, bool intercepted, const struct command_digest_list *digests) { int fd = -1; @@ -368,11 +322,11 @@ goto bad; /* Open the file for fdexec or for digest matching. */ - if (!open_cmnd(user_cmnd, runchroot, digests, &fd)) + if (!open_cmnd(user_cmnd, digests, &fd)) goto bad; - if (!digest_matches(fd, user_cmnd, runchroot, digests)) + if (!digest_matches(fd, user_cmnd, digests)) goto bad; - set_cmnd_fd(fd); + set_cmnd_fd(fd, rootfd); debug_return_bool(true); bad: @@ -383,8 +337,8 @@ #endif /* SUDOERS_NAME_MATCH */ static bool -command_matches_all(const char *runchroot, - bool intercepted, const struct command_digest_list *digests) +command_matches_all(int rootfd, bool intercepted, + const struct command_digest_list *digests) { #ifndef SUDOERS_NAME_MATCH struct stat sb; @@ -392,13 +346,13 @@ int fd = -1; debug_decl(command_matches_all, SUDOERS_DEBUG_MATCH); - if (user_cmnd[0] == '/') { + if (strchr(user_cmnd, '/') != NULL) { #ifndef SUDOERS_NAME_MATCH /* Open the file for fdexec or for digest matching. */ - bool open_error = !open_cmnd(user_cmnd, runchroot, digests, &fd); + bool open_error = !open_cmnd(user_cmnd, digests, &fd); /* A non-existent file is not an error for "sudo ALL". */ - if (do_stat(fd, user_cmnd, runchroot, &sb)) { + if (do_stat(fd, user_cmnd, &sb)) { if (open_error) { /* File exists but we couldn't open it above? */ goto bad; @@ -408,14 +362,14 @@ } #else /* Open the file for fdexec or for digest matching. */ - (void)open_cmnd(user_cmnd, runchroot, digests, &fd); + (void)open_cmnd(user_cmnd, digests, &fd); #endif } /* Check digest of user_cmnd since we have no sudoers_cmnd for ALL. */ - if (!digest_matches(fd, user_cmnd, runchroot, digests)) + if (!digest_matches(fd, user_cmnd, digests)) goto bad; - set_cmnd_fd(fd); + set_cmnd_fd(fd, rootfd); /* No need to set safe_cmnd for ALL. */ debug_return_bool(true); @@ -427,42 +381,53 @@ static bool command_matches_fnmatch(const char *sudoers_cmnd, const char *sudoers_args, - const char *runchroot, bool intercepted, - const struct command_digest_list *digests) + int rootfd, bool intercepted, const struct command_digest_list *digests) { + const char *cmnd = user_cmnd; + char buf[PATH_MAX]; + int len, fd = -1; #ifndef SUDOERS_NAME_MATCH struct stat sb; #endif - int fd = -1; debug_decl(command_matches_fnmatch, SUDOERS_DEBUG_MATCH); + /* A relative user_cmnd will not match, try canonicalized version. */ + if (user_cmnd[0] != '/') { + if (user_cmnd_dir == NULL) + debug_return_bool(false); + len = snprintf(buf, sizeof(buf), "%s/%s", user_cmnd_dir, + user_base); + if (len < 0 || len >= ssizeof(buf)) + debug_return_bool(false); + cmnd = buf; + } + /* * Return true if fnmatch(3) succeeds AND * a) there are no args in sudoers OR * b) there are no args on command line and none required by sudoers OR * c) there are args in sudoers and on command line and they match * else return false. - * - * Neither sudoers_cmnd nor user_cmnd are relative to runchroot. */ - if (fnmatch(sudoers_cmnd, user_cmnd, FNM_PATHNAME) != 0) + if (fnmatch(sudoers_cmnd, cmnd, FNM_PATHNAME) != 0) debug_return_bool(false); + if (command_args_match(sudoers_cmnd, sudoers_args)) { /* Open the file for fdexec or for digest matching. */ - if (!open_cmnd(user_cmnd, runchroot, digests, &fd)) + if (!open_cmnd(cmnd, digests, &fd)) goto bad; #ifndef SUDOERS_NAME_MATCH - if (!do_stat(fd, user_cmnd, runchroot, &sb)) + if (!do_stat(fd, cmnd, &sb)) goto bad; - if (!intercept_ok(user_cmnd, intercepted, &sb)) + if (!intercept_ok(cmnd, intercepted, &sb)) goto bad; #endif - /* Check digest of user_cmnd since sudoers_cmnd is a pattern. */ - if (!digest_matches(fd, user_cmnd, runchroot, digests)) + /* Check digest of cmnd since sudoers_cmnd is a pattern. */ + if (!digest_matches(fd, cmnd, digests)) goto bad; - set_cmnd_fd(fd); + set_cmnd_fd(fd, rootfd); - /* No need to set safe_cmnd since user_cmnd matches sudoers_cmnd */ + /* No need to set safe_cmnd since cmnd matches sudoers_cmnd */ debug_return_bool(true); bad: if (fd != -1) @@ -474,43 +439,53 @@ static bool command_matches_regex(const char *sudoers_cmnd, const char *sudoers_args, - const char *runchroot, bool intercepted, - const struct command_digest_list *digests) + int rootfd, bool intercepted, const struct command_digest_list *digests) { + const char *cmnd = user_cmnd; + char buf[PATH_MAX]; + int len, fd = -1; #ifndef SUDOERS_NAME_MATCH struct stat sb; #endif - int fd = -1; debug_decl(command_matches_regex, SUDOERS_DEBUG_MATCH); + /* A relative user_cmnd will not match, try canonicalized version. */ + if (user_cmnd[0] != '/') { + if (user_cmnd_dir == NULL) + debug_return_bool(false); + len = snprintf(buf, sizeof(buf), "%s/%s", user_cmnd_dir, + user_base); + if (len < 0 || len >= ssizeof(buf)) + debug_return_bool(false); + cmnd = buf; + } + /* - * Return true if sudoers_cmnd regex matches user_cmnd AND + * Return true if sudoers_cmnd regex matches cmnd AND * a) there are no args in sudoers OR * b) there are no args on command line and none required by sudoers OR * c) there are args in sudoers and on command line and they match * else return false. - * - * Neither sudoers_cmnd nor user_cmnd are relative to runchroot. */ - if (!regex_matches(sudoers_cmnd, user_cmnd)) + if (!regex_matches(sudoers_cmnd, cmnd)) debug_return_bool(false); if (command_args_match(sudoers_cmnd, sudoers_args)) { /* Open the file for fdexec or for digest matching. */ - if (!open_cmnd(user_cmnd, runchroot, digests, &fd)) + if (!open_cmnd(cmnd, digests, &fd)) goto bad; #ifndef SUDOERS_NAME_MATCH - if (!do_stat(fd, user_cmnd, runchroot, &sb)) + if (!do_stat(fd, cmnd, &sb)) goto bad; - if (!intercept_ok(user_cmnd, intercepted, &sb)) + if (!intercept_ok(cmnd, intercepted, &sb)) goto bad; #endif - /* Check digest of user_cmnd since sudoers_cmnd is a pattern. */ - if (!digest_matches(fd, user_cmnd, runchroot, digests)) + /* Check digest of cmnd since sudoers_cmnd is a pattern. */ + if (!digest_matches(fd, cmnd, digests)) goto bad; - set_cmnd_fd(fd); + set_cmnd_fd(fd, rootfd); - /* No need to set safe_cmnd since user_cmnd matches sudoers_cmnd */ + /* No need to set safe_cmnd since cmnd matches sudoers_cmnd */ debug_return_bool(true); bad: if (fd != -1) @@ -523,15 +498,13 @@ #ifndef SUDOERS_NAME_MATCH static bool command_matches_glob(const char *sudoers_cmnd, const char *sudoers_args, - const char *runchroot, bool intercepted, - const struct command_digest_list *digests) + int rootfd, bool intercepted, const struct command_digest_list *digests) { struct stat sudoers_stat; bool bad_digest = false; char **ap, *base, *cp; - char pathbuf[PATH_MAX]; int fd = -1; - size_t dlen, chrootlen = 0; + size_t dlen; glob_t gl; debug_decl(command_matches_glob, SUDOERS_DEBUG_MATCH); @@ -547,18 +520,6 @@ debug_return_bool(false); } - /* Make sudoers_cmnd relative to the new root, if any. */ - if (runchroot != NULL) { - const int len = - snprintf(pathbuf, sizeof(pathbuf), "%s%s", runchroot, sudoers_cmnd); - if (len >= ssizeof(pathbuf)) { - errno = ENAMETOOLONG; - debug_return_bool(false); - } - sudoers_cmnd = pathbuf; - chrootlen = strlen(runchroot); - } - /* * Return true if we find a match in the glob(3) results AND * a) there are no args in sudoers OR @@ -570,6 +531,7 @@ globfree(&gl); debug_return_bool(false); } + /* If user_cmnd is fully-qualified, check for an exact match. */ if (user_cmnd[0] == '/') { for (ap = gl.gl_pathv; (cp = *ap) != NULL; ap++) { @@ -577,15 +539,13 @@ close(fd); fd = -1; } - /* Remove the runchroot, if any. */ - cp += chrootlen; if (strcmp(cp, user_cmnd) != 0) continue; /* Open the file for fdexec or for digest matching. */ - if (!open_cmnd(cp, runchroot, digests, &fd)) + if (!open_cmnd(cp, digests, &fd)) continue; - if (!do_stat(fd, cp, runchroot, &sudoers_stat)) + if (!do_stat(fd, cp, &sudoers_stat)) continue; if (!intercept_ok(cp, intercepted, &sudoers_stat)) continue; @@ -593,7 +553,7 @@ (user_stat->st_dev == sudoers_stat.st_dev && user_stat->st_ino == sudoers_stat.st_ino)) { /* There could be multiple matches, check digest early. */ - if (!digest_matches(fd, cp, runchroot, digests)) { + if (!digest_matches(fd, cp, digests)) { bad_digest = true; continue; } @@ -610,7 +570,7 @@ goto done; } } - /* No exact match, compare basename, st_dev and st_ino. */ + /* No exact match, compare basename, user_cmnd_dir, st_dev and st_ino. */ if (!bad_digest) { for (ap = gl.gl_pathv; (cp = *ap) != NULL; ap++) { if (fd != -1) { @@ -618,13 +578,10 @@ fd = -1; } - /* Remove the runchroot, if any. */ - cp += chrootlen; - /* If it ends in '/' it is a directory spec. */ dlen = strlen(cp); if (cp[dlen - 1] == '/') { - if (command_matches_dir(cp, dlen, runchroot, intercepted, digests)) { + if (command_matches_dir(cp, dlen, rootfd, intercepted, digests)) { globfree(&gl); debug_return_bool(true); } @@ -636,17 +593,35 @@ if (strcmp(user_base, base) != 0) continue; + /* Compare the canonicalized parent directories, if possible. */ + if (user_cmnd_dir != NULL) { + char *slash = strchr(cp, '/'); + if (slash != NULL) { + char *resolved; + *slash = '\0'; + resolved = canon_path(cp); + *slash = '/'; + if (resolved != NULL) { + /* Canonicalized directories must match. */ + int result = strcmp(resolved, user_cmnd_dir); + canon_path_free(resolved); + if (result != 0) + continue; + } + } + } + /* Open the file for fdexec or for digest matching. */ - if (!open_cmnd(cp, runchroot, digests, &fd)) + if (!open_cmnd(cp, digests, &fd)) continue; - if (!do_stat(fd, cp, runchroot, &sudoers_stat)) + if (!do_stat(fd, cp, &sudoers_stat)) continue; if (!intercept_ok(cp, intercepted, &sudoers_stat)) continue; if (user_stat == NULL || (user_stat->st_dev == sudoers_stat.st_dev && user_stat->st_ino == sudoers_stat.st_ino)) { - if (!digest_matches(fd, cp, runchroot, digests)) + if (!digest_matches(fd, cp, digests)) continue; free(safe_cmnd); if ((safe_cmnd = strdup(cp)) == NULL) { @@ -663,7 +638,7 @@ if (cp != NULL) { if (command_args_match(sudoers_cmnd, sudoers_args)) { /* safe_cmnd was set above. */ - set_cmnd_fd(fd); + set_cmnd_fd(fd, rootfd); debug_return_bool(true); } } @@ -674,8 +649,7 @@ static bool command_matches_normal(const char *sudoers_cmnd, const char *sudoers_args, - const char *runchroot, bool intercepted, - const struct command_digest_list *digests) + int rootfd, bool intercepted, const struct command_digest_list *digests) { struct stat sudoers_stat; const char *base; @@ -686,7 +660,7 @@ /* If it ends in '/' it is a directory spec. */ dlen = strlen(sudoers_cmnd); if (sudoers_cmnd[dlen - 1] == '/') { - debug_return_bool(command_matches_dir(sudoers_cmnd, dlen, runchroot, + debug_return_bool(command_matches_dir(sudoers_cmnd, dlen, rootfd, intercepted, digests)); } @@ -695,8 +669,30 @@ if (strcmp(user_base, base) != 0) debug_return_bool(false); + /* Compare the canonicalized parent directories, if possible. */ + if (user_cmnd_dir != NULL) { + const char *slash = strrchr(sudoers_cmnd, '/'); + if (slash != NULL) { + char sudoers_cmnd_dir[PATH_MAX], *resolved; + const size_t len = slash - sudoers_cmnd; + if (len >= sizeof(sudoers_cmnd_dir)) + goto bad; + if (len != 0) + memcpy(sudoers_cmnd_dir, sudoers_cmnd, len); + sudoers_cmnd_dir[len] = '\0'; + resolved = canon_path(sudoers_cmnd_dir); + if (resolved != NULL) { + if (strcmp(resolved, user_cmnd_dir) != 0) { + canon_path_free(resolved); + goto bad; + } + canon_path_free(resolved); + } + } + } + /* Open the file for fdexec or for digest matching. */ - if (!open_cmnd(sudoers_cmnd, runchroot, digests, &fd)) + if (!open_cmnd(sudoers_cmnd, digests, &fd)) goto bad; /* @@ -706,7 +702,7 @@ * 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, &sudoers_stat)) { if (!intercept_ok(sudoers_cmnd, intercepted, &sudoers_stat)) goto bad; if (user_stat->st_dev != sudoers_stat.st_dev || @@ -719,7 +715,7 @@ } if (!command_args_match(sudoers_cmnd, sudoers_args)) goto bad; - if (!digest_matches(fd, sudoers_cmnd, runchroot, digests)) { + if (!digest_matches(fd, sudoers_cmnd, digests)) { /* XXX - log functions not available but we should log very loudly */ goto bad; } @@ -728,7 +724,7 @@ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto bad; } - set_cmnd_fd(fd); + set_cmnd_fd(fd, rootfd); debug_return_bool(true); bad: if (fd != -1) @@ -738,17 +734,15 @@ #else /* SUDOERS_NAME_MATCH */ static bool command_matches_glob(const char *sudoers_cmnd, const char *sudoers_args, - const char *runchroot, bool intercepted, - const struct command_digest_list *digests) + int rootfd, bool intercepted, const struct command_digest_list *digests) { - return command_matches_fnmatch(sudoers_cmnd, sudoers_args, runchroot, + return command_matches_fnmatch(sudoers_cmnd, sudoers_args, rootfd, intercepted, digests); } static bool command_matches_normal(const char *sudoers_cmnd, const char *sudoers_args, - const char *runchroot, bool intercepted, - const struct command_digest_list *digests) + int rootfd, bool intercepted, const struct command_digest_list *digests) { size_t dlen; int fd = -1; @@ -757,16 +751,16 @@ /* If it ends in '/' it is a directory spec. */ dlen = strlen(sudoers_cmnd); if (sudoers_cmnd[dlen - 1] == '/') { - debug_return_bool(command_matches_dir(sudoers_cmnd, dlen, runchroot, + debug_return_bool(command_matches_dir(sudoers_cmnd, dlen, rootfd, intercepted, digests)); } if (strcmp(user_cmnd, sudoers_cmnd) == 0) { if (command_args_match(sudoers_cmnd, sudoers_args)) { /* Open the file for fdexec or for digest matching. */ - if (!open_cmnd(user_cmnd, runchroot, digests, &fd)) + if (!open_cmnd(user_cmnd, digests, &fd)) goto bad; - if (!digest_matches(fd, user_cmnd, runchroot, digests)) + if (!digest_matches(fd, user_cmnd, digests)) goto bad; /* Successful match. */ @@ -776,7 +770,7 @@ U_("unable to allocate memory")); goto bad; } - set_cmnd_fd(fd); + set_cmnd_fd(fd, rootfd); debug_return_bool(true); } } @@ -797,8 +791,10 @@ const struct command_digest_list *digests) { const bool intercepted = info ? info->intercepted : false; + int pivot_fds[2] = { -1, -1 }; char *saved_user_cmnd = NULL; struct stat saved_user_stat; + bool reset_cmnd = false; bool rc = false; debug_decl(command_matches, SUDOERS_DEBUG_MATCH); @@ -815,7 +811,18 @@ if (def_runchroot != NULL && strcmp(def_runchroot, "*") != '\0') runchroot = def_runchroot; } else { - /* Rule-specific runchroot, reset user_cmnd and user_stat. */ + /* Rule-specific runchroot, must reset user_cmnd and user_stat. */ + reset_cmnd = true; + } + + /* Pivot root. */ + if (runchroot != NULL) { + if (!pivot_root(runchroot, pivot_fds)) + goto done; + } + + if (reset_cmnd) { + /* Rule-specific runchroot, set user_cmnd and user_stat after pivot. */ int status; /* Save old user_cmnd first, set_cmnd_path() will free it. */ @@ -823,7 +830,7 @@ user_cmnd = NULL; if (user_stat != NULL) saved_user_stat = *user_stat; - status = set_cmnd_path(runchroot); + status = set_cmnd_path(NULL); if (status != FOUND) { user_cmnd = saved_user_cmnd; saved_user_cmnd = NULL; @@ -834,13 +841,13 @@ if (sudoers_cmnd == NULL) { sudoers_cmnd = "ALL"; - rc = command_matches_all(runchroot, intercepted, digests); + rc = command_matches_all(pivot_fds[0], intercepted, digests); goto done; } /* Check for regular expressions first. */ if (sudoers_cmnd[0] == '^') { - rc = command_matches_regex(sudoers_cmnd, sudoers_args, runchroot, + rc = command_matches_regex(sudoers_cmnd, sudoers_args, pivot_fds[0], intercepted, digests); goto done; } @@ -870,19 +877,25 @@ * use glob(3) and/or fnmatch(3) to do the matching. */ if (def_fast_glob) { - rc = command_matches_fnmatch(sudoers_cmnd, sudoers_args, runchroot, - intercepted, digests); + rc = command_matches_fnmatch(sudoers_cmnd, sudoers_args, + pivot_fds[0], intercepted, digests); } else { - rc = command_matches_glob(sudoers_cmnd, sudoers_args, runchroot, + rc = command_matches_glob(sudoers_cmnd, sudoers_args, pivot_fds[0], intercepted, digests); } } else { - rc = command_matches_normal(sudoers_cmnd, sudoers_args, runchroot, + rc = command_matches_normal(sudoers_cmnd, sudoers_args, pivot_fds[0], intercepted, digests); } done: + /* Restore root. */ + if (runchroot != NULL) + (void)unpivot_root(pivot_fds); + + /* Restore user_cmnd and user_stat. */ if (saved_user_cmnd != NULL) { if (info != NULL) { + free(info->cmnd_path); info->cmnd_path = user_cmnd; if (user_stat != NULL) info->cmnd_stat = *user_stat; diff -Nru sudo-1.9.13p3/plugins/sudoers/match_digest.c sudo-1.9.14p2/plugins/sudoers/match_digest.c --- sudo-1.9.13p3/plugins/sudoers/match_digest.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/match_digest.c 2023-07-15 15:37:23.000000000 +0000 @@ -39,7 +39,7 @@ #include bool -digest_matches(int fd, const char *path, const char *runchroot, +digest_matches(int fd, const char *path, const struct command_digest_list *digests) { unsigned int digest_type = SUDO_DIGEST_INVALID; @@ -47,7 +47,6 @@ unsigned char *sudoers_digest = NULL; struct command_digest *digest; size_t digest_len = (size_t)-1; - char pathbuf[PATH_MAX]; bool matched = false; debug_decl(digest_matches, SUDOERS_DEBUG_MATCH); @@ -61,16 +60,6 @@ goto done; } - 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; - } - TAILQ_FOREACH(digest, digests, entries) { /* Compute file digest if needed. */ if (digest->digest_type != digest_type) { diff -Nru sudo-1.9.13p3/plugins/sudoers/parse.c sudo-1.9.14p2/plugins/sudoers/parse.c --- sudo-1.9.13p3/plugins/sudoers/parse.c 2023-03-04 15:50:14.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/parse.c 2023-07-15 15:37:23.000000000 +0000 @@ -57,8 +57,7 @@ * list, verify and kill. */ static int -sudoers_lookup_pseudo(struct sudo_nss_list *snl, struct passwd *pw, - int validated, int pwflag) +sudoers_lookup_pseudo(struct sudo_nss_list *snl, struct passwd *pw, int pwflag) { char *saved_runchroot; struct passwd *root_pw = NULL; @@ -68,14 +67,13 @@ struct userspec *us; struct defaults *def; int cmnd_match, nopass, match = DENY; + int validated = 0; enum def_tuple pwcheck; debug_decl(sudoers_lookup_pseudo, SUDOERS_DEBUG_PARSER); pwcheck = (pwflag == -1) ? never : sudo_defs_table[pwflag].sd_un.tuple; nopass = (pwcheck == never || pwcheck == all) ? true : false; - CLR(validated, FLAG_NO_USER); - CLR(validated, FLAG_NO_HOST); if (list_pw != NULL) { root_pw = sudo_getpwuid(ROOT_UID); if (root_pw == NULL) @@ -468,7 +466,7 @@ * Special case checking the "validate", "list" and "kill" pseudo-commands. */ if (pwflag) - debug_return_int(sudoers_lookup_pseudo(snl, pw, validated, pwflag)); + debug_return_int(sudoers_lookup_pseudo(snl, pw, pwflag)); /* Need to be runas user while stat'ing things. */ if (!set_perms(PERM_RUNAS)) diff -Nru sudo-1.9.13p3/plugins/sudoers/parse.h sudo-1.9.14p2/plugins/sudoers/parse.h --- sudo-1.9.13p3/plugins/sudoers/parse.h 2023-03-04 15:50:14.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/parse.h 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1996, 1998-2000, 2004, 2007-2022 + * Copyright (c) 1996, 1998-2000, 2004, 2007-2023 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -302,12 +302,14 @@ /* * Parsed sudoers policy. */ +struct sudo_nss; struct sudoers_parse_tree { TAILQ_ENTRY(sudoers_parse_tree) entries; struct userspec_list userspecs; struct defaults_list defaults; struct rbtree *aliases; char *shost, *lhost; + struct sudo_nss *nss; }; /* @@ -321,6 +323,28 @@ }; /* + * Parse configuration settings, passed to init_parser(). + */ +struct sudoers_parser_config { + const char *sudoers_path; + bool strict; + bool recovery; + int verbose; + mode_t sudoers_mode; + uid_t sudoers_uid; + gid_t sudoers_gid; +}; +#define SUDOERS_PARSER_CONFIG_INITIALIZER { \ + NULL, /* sudoers_path */ \ + false, /* strict */ \ + true, /* recovery */ \ + 1, /* verbose level 1 */ \ + SUDOERS_MODE, \ + SUDOERS_UID, \ + SUDOERS_GID \ +} + +/* * The parser passes pointers to data structures that are not stored anywhere. * We add them to the leak list at allocation time and remove them from * the list when they are stored in another data structure. @@ -351,13 +375,15 @@ }; SLIST_HEAD(parser_leak_list, parser_leak_entry); +#define YY_DECL int sudoerslex(void) + /* alias.c */ struct rbtree *alloc_aliases(void); void free_aliases(struct rbtree *aliases); -bool no_aliases(struct sudoers_parse_tree *parse_tree); +bool no_aliases(const struct sudoers_parse_tree *parse_tree); bool alias_add(struct sudoers_parse_tree *parse_tree, char *name, int type, char *file, int line, int column, struct member *members); const char *alias_type_to_string(int alias_type); -struct alias *alias_get(struct sudoers_parse_tree *parse_tree, const char *name, int type); +struct alias *alias_get(const struct sudoers_parse_tree *parse_tree, const char *name, int type); struct alias *alias_remove(struct sudoers_parse_tree *parse_tree, const char *name, int type); bool alias_find_used(struct sudoers_parse_tree *parse_tree, struct rbtree *used_aliases); void alias_apply(struct sudoers_parse_tree *parse_tree, int (*func)(struct sudoers_parse_tree *, struct alias *, void *), void *cookie); @@ -368,9 +394,10 @@ int check_aliases(struct sudoers_parse_tree *parse_tree, bool strict, bool quiet, int (*cb_unused)(struct sudoers_parse_tree *, struct alias *, void *)); /* gram.y */ +extern bool parse_error; extern struct sudoers_parse_tree parsed_policy; extern bool (*sudoers_error_hook)(const char *file, int line, int column, const char *fmt, va_list args); -bool init_parser(const char *path, bool quiet, bool strict); +bool reset_parser(void); void free_member(struct member *m); void free_members(struct member_list *members); void free_cmndspec(struct cmndspec *cs, struct cmndspec_list *csl); @@ -380,12 +407,19 @@ void free_userspecs(struct userspec_list *usl); void free_default(struct defaults *def); void free_defaults(struct defaults_list *defs); -void init_parse_tree(struct sudoers_parse_tree *parse_tree, char *lhost, char *shost); +bool init_parser(const char *file, const struct sudoers_parser_config *conf); +void init_parse_tree(struct sudoers_parse_tree *parse_tree, char *lhost, char *shost, struct sudo_nss *nss); void free_parse_tree(struct sudoers_parse_tree *parse_tree); -void reparent_parse_tree(struct sudoers_parse_tree *new_tree); bool parser_leak_add(enum parser_leak_types type, void *v); bool parser_leak_remove(enum parser_leak_types type, void *v); void parser_leak_init(void); +void reparent_parse_tree(struct sudoers_parse_tree *new_tree); +int sudoersparse(void); +uid_t sudoers_file_uid(void); +gid_t sudoers_file_gid(void); +mode_t sudoers_file_mode(void); +bool sudoers_error_recovery(void); +bool sudoers_strict(void); /* match_addr.c */ bool addr_matches(char *n); @@ -394,29 +428,32 @@ bool command_matches(const char *sudoers_cmnd, const char *sudoers_args, const char *runchroot, struct cmnd_info *info, const struct command_digest_list *digests); /* match_digest.c */ -bool digest_matches(int fd, const char *path, const char *runchroot, const struct command_digest_list *digests); +bool digest_matches(int fd, const char *path, const struct command_digest_list *digests); /* match.c */ struct group; struct passwd; bool group_matches(const char *sudoers_group, const struct group *gr); bool hostname_matches(const char *shost, const char *lhost, const char *pattern); -bool netgr_matches(const char *netgr, const char *lhost, const char *shost, const char *user); +bool netgr_matches(const struct sudo_nss *nss, const char *netgr, const char *lhost, const char *shost, const char *user); bool usergr_matches(const char *group, const char *user, const struct passwd *pw); bool userpw_matches(const char *sudoers_user, const char *user, const struct passwd *pw); -int cmnd_matches(struct sudoers_parse_tree *parse_tree, const struct member *m, const char *runchroot, struct cmnd_info *info); -int cmnd_matches_all(struct sudoers_parse_tree *parse_tree, const struct member *m, const char *runchroot, struct cmnd_info *info); -int cmndlist_matches(struct sudoers_parse_tree *parse_tree, const struct member_list *list, const char *runchroot, struct cmnd_info *info); -int host_matches(struct sudoers_parse_tree *parse_tree, const struct passwd *pw, const char *host, const char *shost, const struct member *m); -int hostlist_matches(struct sudoers_parse_tree *parse_tree, const struct passwd *pw, const struct member_list *list); -int runaslist_matches(struct sudoers_parse_tree *parse_tree, const struct member_list *user_list, const struct member_list *group_list, struct member **matching_user, struct member **matching_group); -int user_matches(struct sudoers_parse_tree *parse_tree, const struct passwd *pw, const struct member *m); -int userlist_matches(struct sudoers_parse_tree *parse_tree, const struct passwd *pw, const struct member_list *list); +int cmnd_matches(const struct sudoers_parse_tree *parse_tree, const struct member *m, const char *runchroot, struct cmnd_info *info); +int cmnd_matches_all(const struct sudoers_parse_tree *parse_tree, const struct member *m, const char *runchroot, struct cmnd_info *info); +int cmndlist_matches(const struct sudoers_parse_tree *parse_tree, const struct member_list *list, const char *runchroot, struct cmnd_info *info); +int host_matches(const struct sudoers_parse_tree *parse_tree, const struct passwd *pw, const char *host, const char *shost, const struct member *m); +int hostlist_matches(const struct sudoers_parse_tree *parse_tree, const struct passwd *pw, const struct member_list *list); +int runaslist_matches(const struct sudoers_parse_tree *parse_tree, const struct member_list *user_list, const struct member_list *group_list, struct member **matching_user, struct member **matching_group); +int user_matches(const struct sudoers_parse_tree *parse_tree, const struct passwd *pw, const struct member *m); +int userlist_matches(const struct sudoers_parse_tree *parse_tree, const struct passwd *pw, const struct member_list *list); const char *sudo_getdomainname(void); struct gid_list *runas_getgroups(void); -/* toke.c */ -void init_lexer(void); +/* toke.l */ +YY_DECL; +void sudoersrestart(FILE *); +extern FILE *sudoersin; +extern char *sudoers; /* base64.c */ size_t base64_decode(const char *str, unsigned char *dst, size_t dsize); @@ -429,10 +466,10 @@ time_t parse_gentime(const char *expstr); /* filedigest.c */ -unsigned char *sudo_filedigest(int fd, const char *file, int digest_type, size_t *digest_len); +unsigned char *sudo_filedigest(int fd, const char *file, unsigned int digest_type, size_t *digest_len); /* digestname.c */ -const char *digest_type_to_name(int digest_type); +const char *digest_type_to_name(unsigned int digest_type); /* parse.c */ struct sudo_nss_list; @@ -445,14 +482,16 @@ /* fmtsudoers.c */ struct sudo_lbuf; -bool sudoers_format_cmndspec(struct sudo_lbuf *lbuf, struct sudoers_parse_tree *parse_tree, struct cmndspec *cs, struct cmndspec *prev_cs, struct cmndtag tags, bool expand_aliases); +bool sudoers_format_cmndspec(struct sudo_lbuf *lbuf, const struct sudoers_parse_tree *parse_tree, struct cmndspec *cs, struct cmndspec *prev_cs, struct cmndtag tags, bool expand_aliases); bool sudoers_format_default(struct sudo_lbuf *lbuf, struct defaults *d); -bool sudoers_format_default_line(struct sudo_lbuf *lbuf, struct sudoers_parse_tree *parse_tree, struct defaults *d, struct defaults **next, bool expand_aliases); -bool sudoers_format_member(struct sudo_lbuf *lbuf, struct sudoers_parse_tree *parse_tree, struct member *m, const char *separator, int alias_type); -bool sudoers_format_privilege(struct sudo_lbuf *lbuf, struct sudoers_parse_tree *parse_tree, struct privilege *priv, bool expand_aliases); -bool sudoers_format_userspec(struct sudo_lbuf *lbuf, struct sudoers_parse_tree *parse_tree, struct userspec *us, bool expand_aliases); -bool sudoers_format_userspecs(struct sudo_lbuf *lbuf, struct sudoers_parse_tree *parse_tree, const char *separator, bool expand_aliases, bool flush); +bool sudoers_format_member(struct sudo_lbuf *lbuf, const struct sudoers_parse_tree *parse_tree, struct member *m, const char *separator, int alias_type); bool sudoers_defaults_to_tags(const char *var, const char *val, int op, struct cmndtag *tags); bool sudoers_defaults_list_to_tags(struct defaults_list *defs, struct cmndtag *tags); +/* fmtsudoers_cvt.c */ +bool sudoers_format_privilege(struct sudo_lbuf *lbuf, const struct sudoers_parse_tree *parse_tree, struct privilege *priv, bool expand_aliases); +bool sudoers_format_userspec(struct sudo_lbuf *lbuf, const struct sudoers_parse_tree *parse_tree, struct userspec *us, bool expand_aliases); +bool sudoers_format_userspecs(struct sudo_lbuf *lbuf, const struct sudoers_parse_tree *parse_tree, const char *separator, bool expand_aliases, bool flush); +bool sudoers_format_default_line(struct sudo_lbuf *lbuf, const struct sudoers_parse_tree *parse_tree, struct defaults *d, struct defaults **next, bool expand_aliases); + #endif /* SUDOERS_PARSE_H */ diff -Nru sudo-1.9.13p3/plugins/sudoers/pivot.c sudo-1.9.14p2/plugins/sudoers/pivot.c --- sudo-1.9.13p3/plugins/sudoers/pivot.c 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/pivot.c 2023-07-15 15:37:21.000000000 +0000 @@ -0,0 +1,90 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2023 Todd C. Miller + * + * 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 + +#include +#include +#include + +#include "sudoers.h" + +#define OLD_ROOT 0 +#define OLD_CWD 1 + +/* + * Pivot to a new root directory, storing the old root and old cwd + * in fds[2]. Changes current working directory to the new root. + * Returns true on success, else false. + */ +bool +pivot_root(const char *new_root, int fds[2]) +{ + debug_decl(pivot_root, SUDOERS_DEBUG_UTIL); + + fds[OLD_ROOT] = open("/", O_RDONLY); + fds[OLD_CWD] = open(".", O_RDONLY); + if (fds[OLD_ROOT] == -1 || fds[OLD_CWD] == -1 || chroot(new_root) == -1) { + if (fds[OLD_ROOT] != -1) { + close(fds[OLD_ROOT]); + fds[OLD_ROOT] = -1; + } + if (fds[OLD_CWD] != -1) { + close(fds[OLD_CWD]); + fds[OLD_CWD] = -1; + } + debug_return_bool(false); + } + debug_return_bool(chdir("/") == 0); +} + +/* + * Pivot back to the stored root directory and restore the old cwd. + * Returns true on success, else false. + */ +bool +unpivot_root(int fds[2]) +{ + bool ret = true; + debug_decl(unpivot_root, SUDOERS_DEBUG_UTIL); + + /* Order is important: restore old root, *then* change cwd. */ + if (fds[OLD_ROOT] != -1) { + if (fchdir(fds[OLD_ROOT]) == -1 || chroot(".") == -1) { + sudo_warn("%s", U_("unable to restore root directory")); + ret = false; + } + close(fds[OLD_ROOT]); + fds[OLD_ROOT] = -1; + } + if (fds[OLD_CWD] != -1) { + if (fchdir(fds[OLD_CWD]) == -1) { + sudo_warn("%s", U_("unable to restore current working directory")); + ret = false; + } + close(fds[OLD_CWD]); + fds[OLD_CWD] = -1; + } + + debug_return_bool(ret); +} Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/plugins/sudoers/po/cs.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/plugins/sudoers/po/cs.mo differ diff -Nru sudo-1.9.13p3/plugins/sudoers/po/cs.po sudo-1.9.14p2/plugins/sudoers/po/cs.po --- sudo-1.9.13p3/plugins/sudoers/po/cs.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/po/cs.po 2023-07-15 15:37:21.000000000 +0000 @@ -10,10 +10,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.13b2\n" +"Project-Id-Version: sudoers 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-26 21:43+01:00\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-08 21:01+02:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" @@ -23,7 +23,7 @@ "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:1220 plugins/sudoers/logging.c:866 +#: confstr.sh:1 gram.y:1240 plugins/sudoers/logging.c:885 msgid "syntax error" msgstr "chyba syntaxe" @@ -47,34 +47,34 @@ msgid "Sorry, try again." msgstr "Je nám líto, zkuste to znovu." -#: gram.y:237 gram.y:304 gram.y:313 gram.y:322 gram.y:332 gram.y:342 -#: gram.y:366 gram.y:393 gram.y:402 gram.y:410 gram.y:419 gram.y:428 -#: gram.y:502 gram.y:512 gram.y:524 gram.y:572 gram.y:581 gram.y:590 -#: gram.y:599 gram.y:731 gram.y:739 gram.y:750 gram.y:762 gram.y:781 -#: gram.y:944 gram.y:949 gram.y:957 gram.y:971 gram.y:977 gram.y:1099 -#: gram.y:1108 gram.y:1116 gram.y:1125 gram.y:1134 gram.y:1163 gram.y:1172 -#: gram.y:1180 gram.y:1280 gram.y:1410 gram.y:1777 gram.y:1827 -#: lib/eventlog/eventlog.c:235 lib/eventlog/eventlog.c:312 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:834 -#: lib/eventlog/eventlog.c:1135 lib/iolog/iolog_filter.c:142 +#: gram.y:236 gram.y:303 gram.y:312 gram.y:321 gram.y:331 gram.y:341 +#: gram.y:365 gram.y:392 gram.y:401 gram.y:409 gram.y:418 gram.y:427 +#: gram.y:501 gram.y:511 gram.y:523 gram.y:571 gram.y:580 gram.y:589 +#: gram.y:598 gram.y:730 gram.y:738 gram.y:749 gram.y:761 gram.y:780 +#: gram.y:943 gram.y:948 gram.y:956 gram.y:970 gram.y:976 gram.y:988 +#: gram.y:994 gram.y:1119 gram.y:1128 gram.y:1136 gram.y:1145 gram.y:1154 +#: gram.y:1183 gram.y:1192 gram.y:1200 gram.y:1300 gram.y:1430 gram.y:1808 +#: gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:313 lib/eventlog/eventlog.c:755 +#: lib/eventlog/eventlog.c:832 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:472 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 #: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:233 -#: lib/iolog/iolog_json.c:150 lib/iolog/iolog_json.c:382 -#: lib/iolog/iolog_json.c:412 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:212 -#: logsrvd/iolog_writer.c:95 logsrvd/iolog_writer.c:100 -#: logsrvd/iolog_writer.c:134 logsrvd/iolog_writer.c:182 -#: logsrvd/iolog_writer.c:215 logsrvd/iolog_writer.c:225 -#: logsrvd/iolog_writer.c:254 logsrvd/iolog_writer.c:275 -#: logsrvd/iolog_writer.c:287 logsrvd/iolog_writer.c:297 -#: logsrvd/iolog_writer.c:307 logsrvd/iolog_writer.c:317 -#: logsrvd/iolog_writer.c:329 logsrvd/iolog_writer.c:364 -#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:377 -#: logsrvd/iolog_writer.c:383 logsrvd/iolog_writer.c:567 -#: logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 logsrvd/logsrvd.c:310 -#: logsrvd/logsrvd.c:1050 logsrvd/logsrvd.c:1113 logsrvd/logsrvd.c:1582 -#: logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 logsrvd/logsrvd.c:1988 +#: 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:212 logsrvd/iolog_writer.c:95 +#: logsrvd/iolog_writer.c:100 logsrvd/iolog_writer.c:134 +#: logsrvd/iolog_writer.c:182 logsrvd/iolog_writer.c:215 +#: logsrvd/iolog_writer.c:225 logsrvd/iolog_writer.c:254 +#: logsrvd/iolog_writer.c:275 logsrvd/iolog_writer.c:287 +#: logsrvd/iolog_writer.c:297 logsrvd/iolog_writer.c:307 +#: logsrvd/iolog_writer.c:317 logsrvd/iolog_writer.c:329 +#: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 +#: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:1058 logsrvd/logsrvd.c:1121 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 #: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 #: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 #: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 @@ -89,29 +89,31 @@ #: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1743 #: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:216 #: logsrvd/logsrvd_journal.c:217 logsrvd/logsrvd_journal.c:273 -#: logsrvd/logsrvd_journal.c:433 logsrvd/logsrvd_journal.c:435 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:216 -#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:279 -#: logsrvd/logsrvd_local.c:417 logsrvd/logsrvd_local.c:466 -#: logsrvd/logsrvd_local.c:467 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:473 logsrvd/logsrvd_queue.c:159 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/logsrvd_relay.c:444 logsrvd/logsrvd_relay.c:743 -#: logsrvd/logsrvd_relay.c:850 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 -#: logsrvd/sendlog.c:291 logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 -#: logsrvd/sendlog.c:1801 plugins/sudoers/audit.c:116 -#: plugins/sudoers/auth/bsdauth.c:150 plugins/sudoers/auth/kerb5.c:121 +#: logsrvd/logsrvd_journal.c:278 logsrvd/logsrvd_journal.c:438 +#: logsrvd/logsrvd_journal.c:440 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:216 logsrvd/logsrvd_local.c:278 +#: logsrvd/logsrvd_local.c:279 logsrvd/logsrvd_local.c:417 +#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:467 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:473 +#: logsrvd/logsrvd_queue.c:159 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/logsrvd_relay.c:446 +#: logsrvd/logsrvd_relay.c:745 logsrvd/logsrvd_relay.c:852 +#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:292 +#: logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 logsrvd/sendlog.c:624 +#: logsrvd/sendlog.c:1810 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/bsdauth.c:152 plugins/sudoers/auth/kerb5.c:121 #: plugins/sudoers/auth/kerb5.c:148 plugins/sudoers/auth/pam.c:687 #: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:175 plugins/sudoers/cvtsudoers.c:192 -#: plugins/sudoers/cvtsudoers.c:203 plugins/sudoers/cvtsudoers.c:333 -#: plugins/sudoers/cvtsudoers.c:372 plugins/sudoers/cvtsudoers.c:392 -#: plugins/sudoers/cvtsudoers.c:537 plugins/sudoers/cvtsudoers.c:670 -#: plugins/sudoers/cvtsudoers.c:688 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:870 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:246 +#: plugins/sudoers/canon_path.c:129 plugins/sudoers/canon_path.c:160 +#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:132 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:193 +#: plugins/sudoers/cvtsudoers.c:204 plugins/sudoers/cvtsudoers.c:334 +#: plugins/sudoers/cvtsudoers.c:373 plugins/sudoers/cvtsudoers.c:393 +#: plugins/sudoers/cvtsudoers.c:538 plugins/sudoers/cvtsudoers.c:691 +#: plugins/sudoers/cvtsudoers.c:709 plugins/sudoers/cvtsudoers.c:883 +#: plugins/sudoers/cvtsudoers.c:891 plugins/sudoers/cvtsudoers.c:1386 +#: plugins/sudoers/cvtsudoers.c:1390 plugins/sudoers/cvtsudoers.c:1492 +#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:247 #: 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:376 @@ -129,143 +131,152 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1158 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:212 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:689 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:691 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:294 plugins/sudoers/ldap_util.c:301 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:402 -#: plugins/sudoers/log_client.c:715 plugins/sudoers/log_client.c:736 -#: plugins/sudoers/log_client.c:1415 plugins/sudoers/log_client.c:1536 -#: plugins/sudoers/log_client.c:1636 plugins/sudoers/log_client.c:1972 -#: plugins/sudoers/log_client.c:2031 plugins/sudoers/logging.c:110 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/match_command.c:335 plugins/sudoers/match_command.c:603 -#: plugins/sudoers/match_command.c:654 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:776 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:267 plugins/sudoers/parse.c:284 -#: plugins/sudoers/parse.c:303 plugins/sudoers/parse.c:322 -#: plugins/sudoers/parse.c:339 plugins/sudoers/parse.c:362 -#: plugins/sudoers/parse.c:373 plugins/sudoers/parse_ldif.c:153 -#: plugins/sudoers/parse_ldif.c:184 plugins/sudoers/parse_ldif.c:253 -#: plugins/sudoers/parse_ldif.c:261 plugins/sudoers/parse_ldif.c:266 -#: plugins/sudoers/parse_ldif.c:342 plugins/sudoers/parse_ldif.c:353 -#: plugins/sudoers/parse_ldif.c:380 plugins/sudoers/parse_ldif.c:397 -#: plugins/sudoers/parse_ldif.c:409 plugins/sudoers/parse_ldif.c:413 -#: plugins/sudoers/parse_ldif.c:427 plugins/sudoers/parse_ldif.c:484 -#: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:628 -#: plugins/sudoers/parse_ldif.c:653 plugins/sudoers/parse_ldif.c:711 -#: plugins/sudoers/parse_ldif.c:728 plugins/sudoers/parse_ldif.c:756 -#: plugins/sudoers/parse_ldif.c:763 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 -#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 -#: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 -#: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 -#: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:185 -#: plugins/sudoers/sssd.c:414 plugins/sudoers/sssd.c:479 -#: plugins/sudoers/sssd.c:505 plugins/sudoers/sssd.c:568 -#: plugins/sudoers/sssd.c:761 plugins/sudoers/strvec_join.c:53 -#: plugins/sudoers/stubs.c:112 plugins/sudoers/stubs.c:120 -#: plugins/sudoers/sudoers.c:354 plugins/sudoers/sudoers.c:380 -#: plugins/sudoers/sudoers.c:447 plugins/sudoers/sudoers.c:464 -#: plugins/sudoers/sudoers.c:505 plugins/sudoers/sudoers.c:849 -#: plugins/sudoers/sudoers.c:902 plugins/sudoers/sudoers.c:1054 -#: plugins/sudoers/sudoers.c:1114 plugins/sudoers/sudoers.c:1369 +#: plugins/sudoers/log_client.c:717 plugins/sudoers/log_client.c:739 +#: plugins/sudoers/log_client.c:744 plugins/sudoers/log_client.c:1423 +#: plugins/sudoers/log_client.c:1544 plugins/sudoers/log_client.c:1667 +#: plugins/sudoers/log_client.c:1986 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:846 plugins/sudoers/match_command.c:295 +#: plugins/sudoers/match_command.c:563 plugins/sudoers/match_command.c:629 +#: plugins/sudoers/match_command.c:724 plugins/sudoers/match_command.c:770 +#: plugins/sudoers/match_digest.c:82 plugins/sudoers/parse.c:279 +#: plugins/sudoers/parse.c:296 plugins/sudoers/parse.c:315 +#: plugins/sudoers/parse.c:334 plugins/sudoers/parse.c:351 +#: plugins/sudoers/parse.c:374 plugins/sudoers/parse.c:385 +#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 +#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:261 +#: plugins/sudoers/parse_ldif.c:266 plugins/sudoers/parse_ldif.c:342 +#: plugins/sudoers/parse_ldif.c:353 plugins/sudoers/parse_ldif.c:380 +#: plugins/sudoers/parse_ldif.c:397 plugins/sudoers/parse_ldif.c:409 +#: plugins/sudoers/parse_ldif.c:413 plugins/sudoers/parse_ldif.c:427 +#: plugins/sudoers/parse_ldif.c:484 plugins/sudoers/parse_ldif.c:598 +#: plugins/sudoers/parse_ldif.c:628 plugins/sudoers/parse_ldif.c:653 +#: plugins/sudoers/parse_ldif.c:711 plugins/sudoers/parse_ldif.c:728 +#: plugins/sudoers/parse_ldif.c:756 plugins/sudoers/parse_ldif.c:763 +#: plugins/sudoers/policy.c:622 plugins/sudoers/policy.c:1050 +#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:199 +#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 +#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:587 +#: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:857 +#: plugins/sudoers/pwutil.c:945 plugins/sudoers/pwutil.c:993 +#: plugins/sudoers/pwutil.c:1052 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 +#: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1325 plugins/sudoers/sudoers.c:1513 #: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 #: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 #: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 -#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 -#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:588 -#: plugins/sudoers/timestamp.c:451 plugins/sudoers/timestamp.c:495 -#: plugins/sudoers/timestamp.c:1017 plugins/sudoers/timestamp.c:1146 -#: plugins/sudoers/toke_util.c:78 plugins/sudoers/toke_util.c:106 -#: plugins/sudoers/toke_util.c:131 plugins/sudoers/toke_util.c:161 -#: plugins/sudoers/toke_util.c:200 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:150 plugins/sudoers/visudo.c:385 -#: plugins/sudoers/visudo.c:391 plugins/sudoers/visudo.c:502 -#: plugins/sudoers/visudo.c:1056 toke.l:1031 toke.l:1163 toke.l:1234 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 +#: plugins/sudoers/toke_util.c:161 plugins/sudoers/toke_util.c:200 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1087 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1299 msgid "unable to allocate memory" msgstr "nelze alokovat paměť" -#: gram.y:623 +#: gram.y:622 msgid "a digest requires a path name" msgstr "kontrolní součet vyžaduje název cesty" -#: gram.y:645 +#: gram.y:644 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "hodnoty „CWD“ musí začínat na „/“, „~“ nebo „*“" -#: gram.y:651 +#: gram.y:650 msgid "\"CWD\" path too long" msgstr "cesta „CWD“ je příliš dlouhá" -#: gram.y:661 +#: gram.y:660 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "hodnoty „CHROOT“ musí začínat na „/“, „~“ nebo „*“" -#: gram.y:667 +#: gram.y:666 msgid "\"CHROOT\" path too long" msgstr "cesta „CHROOT“ je příliš dlouhá" -#: gram.y:802 +#: gram.y:801 #, 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:825 +#: gram.y:824 msgid "invalid notbefore value" msgstr "neplatná hodnota notbefore (začátek platnosti)" -#: gram.y:834 +#: gram.y:833 msgid "invalid notafter value" msgstr "neplatná hodnota notafter (konec platnosti)" -#: gram.y:844 plugins/sudoers/policy.c:385 +#: gram.y:843 plugins/sudoers/policy.c:381 msgid "timeout value too large" msgstr "hodnota časového limitu je příliš velká" -#: gram.y:846 plugins/sudoers/policy.c:387 +#: gram.y:845 plugins/sudoers/policy.c:383 msgid "invalid timeout value" msgstr "neplatná hodnota časového limitu" -#: gram.y:967 plugins/sudoers/sudoers.c:1072 +#: gram.y:966 plugins/sudoers/sudoers.c:1192 msgid "command too long" msgstr "příkaz je příliš dlouhý" -#: gram.y:1224 plugins/sudoers/check_aliases.c:96 -#: plugins/sudoers/defaults.c:1276 +#: gram.y:1000 +msgid "expected a fully-qualified path name" +msgstr "očekává se plně kvalifikovaná cesta" + +#: gram.y:1244 plugins/sudoers/check_aliases.c:96 +#: plugins/sudoers/defaults.c:1275 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1278 +#: gram.y:1298 #, c-format msgid "Alias \"%s\" already defined" msgstr "Alias „%s“ je již definován" -#: gram.y:1777 gram.y:1827 lib/eventlog/eventlog.c:235 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:830 -#: lib/eventlog/eventlog.c:833 lib/eventlog/eventlog.c:1135 -#: lib/iolog/iolog_filter.c:142 lib/iolog/iolog_filter.c:202 -#: lib/iolog/iolog_filter.c:232 lib/iolog/iolog_json.c:150 -#: lib/iolog/iolog_json.c:381 lib/iolog/iolog_json.c:412 +#: gram.y:1808 gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:755 lib/eventlog/eventlog.c:828 +#: lib/eventlog/eventlog.c:831 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:471 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 +#: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:232 #: 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 @@ -280,55 +291,56 @@ #: logsrvd/iolog_writer.c:316 logsrvd/iolog_writer.c:328 #: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 #: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 -#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 -#: logsrvd/logsrvd.c:310 logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:490 -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:611 -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:732 -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1439 logsrvd/logsrvd.c:1446 -#: logsrvd/logsrvd.c:1582 logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 -#: logsrvd/logsrvd.c:1988 logsrvd/logsrvd_conf.c:357 -#: logsrvd/logsrvd_conf.c:370 logsrvd/logsrvd_conf.c:511 -#: logsrvd/logsrvd_conf.c:534 logsrvd/logsrvd_conf.c:538 -#: logsrvd/logsrvd_conf.c:556 logsrvd/logsrvd_conf.c:626 -#: logsrvd/logsrvd_conf.c:649 logsrvd/logsrvd_conf.c:678 -#: logsrvd/logsrvd_conf.c:692 logsrvd/logsrvd_conf.c:706 -#: logsrvd/logsrvd_conf.c:720 logsrvd/logsrvd_conf.c:734 -#: logsrvd/logsrvd_conf.c:748 logsrvd/logsrvd_conf.c:829 -#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1053 -#: logsrvd/logsrvd_conf.c:1448 logsrvd/logsrvd_conf.c:1595 -#: logsrvd/logsrvd_conf.c:1621 logsrvd/logsrvd_conf.c:1633 -#: logsrvd/logsrvd_conf.c:1640 logsrvd/logsrvd_conf.c:1646 -#: logsrvd/logsrvd_conf.c:1742 logsrvd/logsrvd_journal.c:76 -#: logsrvd/logsrvd_journal.c:125 logsrvd/logsrvd_journal.c:216 -#: logsrvd/logsrvd_journal.c:246 logsrvd/logsrvd_journal.c:250 -#: logsrvd/logsrvd_journal.c:258 logsrvd/logsrvd_journal.c:281 -#: logsrvd/logsrvd_journal.c:285 logsrvd/logsrvd_journal.c:433 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:278 -#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:491 logsrvd/logsrvd_queue.c:158 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:291 -#: logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 logsrvd/sendlog.c:1503 -#: logsrvd/sendlog.c:1510 logsrvd/sendlog.c:1733 logsrvd/sendlog.c:1801 -#: logsrvd/tls_init.c:305 logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 -#: plugins/sudoers/audit.c:116 plugins/sudoers/auth/pam.c:502 -#: plugins/sudoers/auth/pam.c:687 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:174 plugins/sudoers/cvtsudoers.c:191 -#: plugins/sudoers/cvtsudoers.c:202 plugins/sudoers/cvtsudoers.c:332 -#: plugins/sudoers/cvtsudoers.c:536 plugins/sudoers/cvtsudoers.c:669 -#: plugins/sudoers/cvtsudoers.c:687 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:869 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:182 plugins/sudoers/cvtsudoers_csv.c:245 -#: 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:375 -#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:437 -#: plugins/sudoers/cvtsudoers_ldif.c:448 plugins/sudoers/cvtsudoers_ldif.c:455 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:480 -#: plugins/sudoers/cvtsudoers_ldif.c:488 plugins/sudoers/cvtsudoers_ldif.c:635 -#: plugins/sudoers/cvtsudoers_merge.c:47 plugins/sudoers/cvtsudoers_merge.c:51 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:530 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:668 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:1132 +#: logsrvd/logsrvd.c:1447 logsrvd/logsrvd.c:1454 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 +#: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 +#: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 +#: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 +#: logsrvd/logsrvd_conf.c:626 logsrvd/logsrvd_conf.c:649 +#: logsrvd/logsrvd_conf.c:678 logsrvd/logsrvd_conf.c:692 +#: logsrvd/logsrvd_conf.c:706 logsrvd/logsrvd_conf.c:720 +#: logsrvd/logsrvd_conf.c:734 logsrvd/logsrvd_conf.c:748 +#: logsrvd/logsrvd_conf.c:829 logsrvd/logsrvd_conf.c:1036 +#: logsrvd/logsrvd_conf.c:1053 logsrvd/logsrvd_conf.c:1448 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1621 +#: logsrvd/logsrvd_conf.c:1633 logsrvd/logsrvd_conf.c:1640 +#: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1742 +#: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:125 +#: logsrvd/logsrvd_journal.c:216 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:250 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:290 +#: logsrvd/logsrvd_journal.c:438 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:466 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:491 +#: logsrvd/logsrvd_queue.c:158 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 +#: logsrvd/sendlog.c:292 logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 +#: logsrvd/sendlog.c:624 logsrvd/sendlog.c:1512 logsrvd/sendlog.c:1519 +#: logsrvd/sendlog.c:1742 logsrvd/sendlog.c:1810 logsrvd/tls_init.c:305 +#: logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/pam.c:502 plugins/sudoers/auth/pam.c:687 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/canon_path.c:129 +#: plugins/sudoers/canon_path.c:160 plugins/sudoers/check_aliases.c:168 +#: plugins/sudoers/cvtsudoers.c:132 plugins/sudoers/cvtsudoers.c:175 +#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:203 +#: plugins/sudoers/cvtsudoers.c:333 plugins/sudoers/cvtsudoers.c:537 +#: plugins/sudoers/cvtsudoers.c:690 plugins/sudoers/cvtsudoers.c:708 +#: plugins/sudoers/cvtsudoers.c:883 plugins/sudoers/cvtsudoers.c:890 +#: plugins/sudoers/cvtsudoers.c:1386 plugins/sudoers/cvtsudoers.c:1390 +#: plugins/sudoers/cvtsudoers.c:1492 plugins/sudoers/cvtsudoers_csv.c:182 +#: plugins/sudoers/cvtsudoers_csv.c:246 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:375 plugins/sudoers/cvtsudoers_ldif.c:429 +#: plugins/sudoers/cvtsudoers_ldif.c:437 plugins/sudoers/cvtsudoers_ldif.c:448 +#: plugins/sudoers/cvtsudoers_ldif.c:455 plugins/sudoers/cvtsudoers_ldif.c:467 +#: plugins/sudoers/cvtsudoers_ldif.c:480 plugins/sudoers/cvtsudoers_ldif.c:488 +#: plugins/sudoers/cvtsudoers_ldif.c:635 plugins/sudoers/cvtsudoers_merge.c:47 +#: plugins/sudoers/cvtsudoers_merge.c:51 #: plugins/sudoers/cvtsudoers_merge.c:353 #: plugins/sudoers/cvtsudoers_merge.c:399 #: plugins/sudoers/cvtsudoers_merge.c:445 @@ -340,42 +352,43 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1157 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:211 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:688 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:690 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:293 plugins/sudoers/ldap_util.c:300 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:228 #: plugins/sudoers/log_client.c:250 plugins/sudoers/log_client.c:264 -#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:715 -#: plugins/sudoers/log_client.c:736 plugins/sudoers/log_client.c:1415 -#: plugins/sudoers/log_client.c:1536 plugins/sudoers/log_client.c:1636 -#: plugins/sudoers/log_client.c:1972 plugins/sudoers/log_client.c:2031 -#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:188 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/logging.c:880 plugins/sudoers/logging.c:892 -#: plugins/sudoers/match_command.c:334 plugins/sudoers/match_command.c:602 -#: plugins/sudoers/match_command.c:653 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:775 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:266 plugins/sudoers/parse.c:283 -#: plugins/sudoers/parse.c:302 plugins/sudoers/parse.c:321 -#: plugins/sudoers/parse.c:338 plugins/sudoers/parse.c:361 -#: plugins/sudoers/parse.c:372 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:717 +#: plugins/sudoers/log_client.c:739 plugins/sudoers/log_client.c:744 +#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1544 +#: plugins/sudoers/log_client.c:1667 plugins/sudoers/log_client.c:1986 +#: plugins/sudoers/log_client.c:2045 plugins/sudoers/logging.c:110 +#: plugins/sudoers/logging.c:188 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:734 plugins/sudoers/logging.c:846 +#: plugins/sudoers/logging.c:899 plugins/sudoers/logging.c:906 +#: plugins/sudoers/match_command.c:294 plugins/sudoers/match_command.c:562 +#: plugins/sudoers/match_command.c:628 plugins/sudoers/match_command.c:724 +#: plugins/sudoers/match_command.c:769 plugins/sudoers/match_digest.c:82 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:295 +#: plugins/sudoers/parse.c:314 plugins/sudoers/parse.c:333 +#: plugins/sudoers/parse.c:350 plugins/sudoers/parse.c:373 +#: plugins/sudoers/parse.c:384 plugins/sudoers/parse_ldif.c:152 #: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 #: plugins/sudoers/parse_ldif.c:260 plugins/sudoers/parse_ldif.c:265 #: plugins/sudoers/parse_ldif.c:341 plugins/sudoers/parse_ldif.c:352 @@ -385,56 +398,60 @@ #: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:627 #: plugins/sudoers/parse_ldif.c:652 plugins/sudoers/parse_ldif.c:710 #: plugins/sudoers/parse_ldif.c:727 plugins/sudoers/parse_ldif.c:755 -#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:154 -#: plugins/sudoers/policy.c:163 plugins/sudoers/policy.c:172 -#: plugins/sudoers/policy.c:201 plugins/sudoers/policy.c:370 -#: plugins/sudoers/policy.c:385 plugins/sudoers/policy.c:387 -#: plugins/sudoers/policy.c:425 plugins/sudoers/policy.c:434 -#: plugins/sudoers/policy.c:482 plugins/sudoers/policy.c:492 -#: plugins/sudoers/policy.c:501 plugins/sudoers/policy.c:510 -#: plugins/sudoers/policy.c:519 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:166 +#: plugins/sudoers/policy.c:196 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:381 plugins/sudoers/policy.c:383 +#: plugins/sudoers/policy.c:421 plugins/sudoers/policy.c:430 +#: plugins/sudoers/policy.c:478 plugins/sudoers/policy.c:488 +#: plugins/sudoers/policy.c:497 plugins/sudoers/policy.c:506 +#: plugins/sudoers/policy.c:515 plugins/sudoers/policy.c:622 +#: plugins/sudoers/policy.c:1050 plugins/sudoers/prompt.c:93 #: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 #: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 #: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 #: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 #: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 plugins/sudoers/sssd.c:144 #: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 #: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 -#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:761 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:112 -#: plugins/sudoers/stubs.c:120 plugins/sudoers/sudoers.c:354 -#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:447 -#: plugins/sudoers/sudoers.c:464 plugins/sudoers/sudoers.c:505 -#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:902 -#: plugins/sudoers/sudoers.c:1054 plugins/sudoers/sudoers.c:1114 -#: plugins/sudoers/sudoers.c:1369 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:562 plugins/sudoers/sudoreplay.c:1278 -#: plugins/sudoers/sudoreplay.c:1334 plugins/sudoers/sudoreplay.c:1530 -#: plugins/sudoers/sudoreplay.c:1534 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:588 plugins/sudoers/timestamp.c:451 -#: plugins/sudoers/timestamp.c:495 plugins/sudoers/timestamp.c:1017 -#: plugins/sudoers/timestamp.c:1146 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1324 plugins/sudoers/sudoers.c:1513 +#: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 +#: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 #: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 #: plugins/sudoers/toke_util.c:160 plugins/sudoers/toke_util.c:200 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:150 -#: plugins/sudoers/visudo.c:385 plugins/sudoers/visudo.c:391 -#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:1056 toke.l:1031 -#: toke.l:1163 toke.l:1226 toke.l:1234 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1086 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1288 toke.l:1299 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:303 +#: lib/eventlog/eventlog.c:304 #, c-format msgid "unable to dup stdin: %m" msgstr "nelze zdvojit standardní vstup: %m" -#: lib/eventlog/eventlog.c:345 +#: lib/eventlog/eventlog.c:346 #, c-format msgid "unable to execute %s: %m" msgstr "nelze spustit %s: %m" @@ -453,96 +470,96 @@ msgid "unable to open pipe: %m" msgstr "nelze otevřít rouru: %m" -#: lib/eventlog/eventlog.c:960 +#: lib/eventlog/eventlog.c:958 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:989 +#: lib/eventlog/eventlog.c:987 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (příkaz pokračuje) %s" -#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1242 -#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 -#, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "neplatný regulární výraz „%s“: %s" - -#: lib/iolog/iolog_json.c:140 +#: lib/eventlog/parse_json.c:175 #, c-format msgid "expected JSON_STRING, got %d" msgstr "očekáván JSON_STRING, obdrženo %d" -#: lib/iolog/iolog_json.c:145 +#: lib/eventlog/parse_json.c:180 msgid "JSON_ARRAY too large" msgstr "JSON_ARRAY je příliš velké" -#: lib/iolog/iolog_json.c:404 +#: lib/eventlog/parse_json.c:494 msgid "missing double quote in name" msgstr "v názvu chybí dvojitá uvozovka" -#: lib/iolog/iolog_json.c:511 +#: lib/eventlog/parse_json.c:612 msgid "missing JSON_OBJECT" msgstr "chybí JSON_OBJECT" -#: lib/iolog/iolog_json.c:515 +#: lib/eventlog/parse_json.c:616 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "očekáván JSON_OBJECT, obdrženo %d" -#: lib/iolog/iolog_json.c:632 +#: lib/eventlog/parse_json.c:750 #, c-format msgid "json stack exhausted (max %u frames)" msgstr "jsonový zásobník vyčerpán (nejvýše %u rámců)" -#: lib/iolog/iolog_json.c:706 +#: lib/eventlog/parse_json.c:828 msgid "objects must consist of name:value pairs" msgstr "objekty musí sestávat z dvojic název:hodnota" -#: lib/iolog/iolog_json.c:711 lib/iolog/iolog_json.c:742 -#: lib/iolog/iolog_json.c:786 lib/iolog/iolog_json.c:808 -#: lib/iolog/iolog_json.c:830 lib/iolog/iolog_json.c:852 -#: lib/iolog/iolog_json.c:874 +#: lib/eventlog/parse_json.c:833 lib/eventlog/parse_json.c:864 +#: lib/eventlog/parse_json.c:908 lib/eventlog/parse_json.c:930 +#: lib/eventlog/parse_json.c:952 lib/eventlog/parse_json.c:974 +#: lib/eventlog/parse_json.c:996 msgid "missing separator between values" msgstr "chybí oddělovač mezí hodnotami" -#: lib/iolog/iolog_json.c:726 lib/iolog/iolog_json.c:900 +#: lib/eventlog/parse_json.c:848 lib/eventlog/parse_json.c:1022 msgid "unmatched close brace" msgstr "neodpovídající uzavírací složená závorka" -#: lib/iolog/iolog_json.c:737 +#: lib/eventlog/parse_json.c:859 msgid "unexpected array" msgstr "nečekané pole" -#: lib/iolog/iolog_json.c:757 lib/iolog/iolog_json.c:903 +#: lib/eventlog/parse_json.c:879 lib/eventlog/parse_json.c:1025 msgid "unmatched close bracket" msgstr "neodpovídající uzavírající hranatá závorka" -#: lib/iolog/iolog_json.c:768 +#: lib/eventlog/parse_json.c:890 msgid "unexpected string" msgstr "nečekaný řetězec" -#: lib/iolog/iolog_json.c:779 +#: lib/eventlog/parse_json.c:901 msgid "missing colon after name" msgstr "za názvem chybí dvojtečka" -#: lib/iolog/iolog_json.c:800 lib/iolog/iolog_json.c:822 +#: lib/eventlog/parse_json.c:922 lib/eventlog/parse_json.c:944 msgid "unexpected boolean" msgstr "nečekaná pravdivostní hodnota" -#: lib/iolog/iolog_json.c:844 +#: lib/eventlog/parse_json.c:966 msgid "unexpected null" msgstr "nečekaná hodnota null" -#: lib/iolog/iolog_json.c:865 +#: lib/eventlog/parse_json.c:987 msgid "unexpected number" msgstr "nečekané číslo" -#: lib/iolog/iolog_json.c:912 +#: lib/eventlog/parse_json.c:1033 msgid "parse error" msgstr "chyba rozboru" +#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1241 +#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "neplatný regulární výraz „%s“: %s" + #: lib/iolog/iolog_legacy.c:65 #, c-format msgid "%s: invalid log file" @@ -579,13 +596,13 @@ msgstr "%s existuje, ale nejedná se o adresář (0%o)" #: lib/iolog/iolog_mkdirs.c:123 lib/iolog/iolog_mkdtemp.c:79 -#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:209 +#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:234 #, c-format msgid "unable to mkdir %s" msgstr "nelze vytvořit adresář %s" -#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:757 -#: plugins/sudoers/visudo.c:791 plugins/sudoers/visudo.c:797 +#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:760 +#: plugins/sudoers/visudo.c:794 plugins/sudoers/visudo.c:800 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "nelze změnit práva %s na 0%o" @@ -617,8 +634,8 @@ msgid "%s: protocol error: NULL value found in %s" msgstr "%s: chyba protokolu: nalezena hodnota NULL v %s" -#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:980 -#: plugins/sudoers/policy.c:593 +#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:993 +#: plugins/sudoers/policy.c:589 msgid "unable to generate UUID" msgstr "nelze vytvořit UUID" @@ -670,26 +687,26 @@ 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:763 logsrvd/logsrvd_journal.c:385 +#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:390 #, c-format msgid "%s: unable to find resume point [%lld, %ld]" msgstr "%s: nelze nalézt bod obnovy [%lld, %ld]" -#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:428 +#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:433 #: logsrvd/logsrvd_queue.c:115 logsrvd/tls_init.c:256 -#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:730 -#: plugins/sudoers/cvtsudoers.c:751 plugins/sudoers/cvtsudoers.c:1431 -#: plugins/sudoers/cvtsudoers_csv.c:695 plugins/sudoers/cvtsudoers_json.c:898 -#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1152 -#: plugins/sudoers/sudoers.c:1182 plugins/sudoers/sudoreplay.c:1496 -#: plugins/sudoers/timestamp.c:460 plugins/sudoers/tsdump.c:128 -#: plugins/sudoers/visudo.c:975 +#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:751 +#: plugins/sudoers/cvtsudoers.c:772 plugins/sudoers/cvtsudoers.c:1452 +#: plugins/sudoers/cvtsudoers_csv.c:697 plugins/sudoers/cvtsudoers_json.c:902 +#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1310 +#: plugins/sudoers/sudoers.c:1334 plugins/sudoers/sudoreplay.c:1496 +#: plugins/sudoers/timestamp.c:485 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:982 #, c-format msgid "unable to open %s" msgstr "nelze otevřít %s" -#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:105 -#: logsrvd/logsrv_util.c:112 plugins/sudoers/sudoreplay.c:355 +#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:111 +#: logsrvd/logsrv_util.c:118 plugins/sudoers/sudoreplay.c:355 #: plugins/sudoers/sudoreplay.c:361 #, c-format msgid "unable to open %s/%s" @@ -705,17 +722,17 @@ msgid "unable to rename %s to %s" msgstr "%s nelze přejmenovat na %s" -#: logsrvd/logsrv_util.c:147 logsrvd/logsrv_util.c:176 +#: logsrvd/logsrv_util.c:153 logsrvd/logsrv_util.c:182 #, c-format msgid "%s/%s: unable to find resume point [%lld, %ld]" msgstr "%s/%s: nelze nalézt bod obnovy [%lld, %ld]" -#: logsrvd/logsrv_util.c:159 +#: logsrvd/logsrv_util.c:165 #, c-format msgid "missing I/O log file %s/%s" msgstr "chybí vstupně-výstupní soubor s protokolem %s/%s" -#: logsrvd/logsrv_util.c:166 +#: logsrvd/logsrv_util.c:172 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: nelze skočit vpřed o %zu" @@ -724,31 +741,31 @@ msgid "unable to connect to relay" msgstr "k relayi se nelze připojit" -#: logsrvd/logsrvd.c:330 logsrvd/logsrvd_relay.c:842 +#: logsrvd/logsrvd.c:338 logsrvd/logsrvd_relay.c:844 #, c-format msgid "server message too large: %zu" msgstr "správa od serveru je příliš velká: %zu" -#: logsrvd/logsrvd.c:422 logsrvd/logsrvd.c:545 logsrvd/logsrvd.c:631 -#: logsrvd/logsrvd.c:873 logsrvd/logsrvd.c:887 logsrvd/logsrvd.c:1049 -#: logsrvd/logsrvd.c:1174 logsrvd/logsrvd.c:1347 logsrvd/logsrvd.c:1365 -#: logsrvd/logsrvd.c:1464 logsrvd/logsrvd.c:1589 logsrvd/logsrvd.c:1773 -#: logsrvd/logsrvd_journal.c:497 logsrvd/logsrvd_local.c:238 +#: logsrvd/logsrvd.c:430 logsrvd/logsrvd.c:553 logsrvd/logsrvd.c:639 +#: logsrvd/logsrvd.c:881 logsrvd/logsrvd.c:895 logsrvd/logsrvd.c:1057 +#: logsrvd/logsrvd.c:1182 logsrvd/logsrvd.c:1355 logsrvd/logsrvd.c:1373 +#: logsrvd/logsrvd.c:1472 logsrvd/logsrvd.c:1597 logsrvd/logsrvd.c:1784 +#: logsrvd/logsrvd_journal.c:502 logsrvd/logsrvd_local.c:238 #: logsrvd/logsrvd_queue.c:164 logsrvd/logsrvd_relay.c:172 #: logsrvd/logsrvd_relay.c:249 logsrvd/logsrvd_relay.c:253 -#: logsrvd/logsrvd_relay.c:389 logsrvd/logsrvd_relay.c:581 -#: logsrvd/logsrvd_relay.c:742 logsrvd/logsrvd_relay.c:1131 -#: logsrvd/sendlog.c:1291 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 -#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:278 -#: plugins/sudoers/iolog.c:1031 plugins/sudoers/iolog.c:1164 -#: plugins/sudoers/iolog.c:1262 plugins/sudoers/log_client.c:121 +#: logsrvd/logsrvd_relay.c:391 logsrvd/logsrvd_relay.c:583 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:1133 +#: logsrvd/sendlog.c:1300 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:277 +#: plugins/sudoers/iolog.c:1030 plugins/sudoers/iolog.c:1163 +#: plugins/sudoers/iolog.c:1261 plugins/sudoers/log_client.c:121 #: plugins/sudoers/log_client.c:343 plugins/sudoers/log_client.c:359 -#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:611 -#: plugins/sudoers/log_client.c:618 plugins/sudoers/log_client.c:1103 -#: plugins/sudoers/log_client.c:1384 plugins/sudoers/log_client.c:1425 -#: plugins/sudoers/log_client.c:1433 plugins/sudoers/log_client.c:1592 -#: plugins/sudoers/log_client.c:1710 plugins/sudoers/log_client.c:2039 -#: plugins/sudoers/log_client.c:2047 plugins/sudoers/logging.c:147 +#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:613 +#: plugins/sudoers/log_client.c:620 plugins/sudoers/log_client.c:1111 +#: plugins/sudoers/log_client.c:1392 plugins/sudoers/log_client.c:1433 +#: plugins/sudoers/log_client.c:1441 plugins/sudoers/log_client.c:1600 +#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:2053 +#: plugins/sudoers/log_client.c:2061 plugins/sudoers/logging.c:147 #: plugins/sudoers/logging.c:205 plugins/sudoers/sudoreplay.c:519 #: plugins/sudoers/sudoreplay.c:566 plugins/sudoers/sudoreplay.c:808 #: plugins/sudoers/sudoreplay.c:920 plugins/sudoers/sudoreplay.c:1011 @@ -758,189 +775,190 @@ msgid "unable to add event to queue" msgstr "událost nelze přidat do fronty" -#: logsrvd/logsrvd.c:446 logsrvd/logsrvd.c:483 logsrvd/logsrvd.c:515 -#: logsrvd/logsrvd.c:569 logsrvd/logsrvd.c:648 logsrvd/logsrvd.c:684 -#: logsrvd/logsrvd.c:720 logsrvd/logsrvd.c:756 logsrvd/logsrvd_relay.c:510 -#: logsrvd/logsrvd_relay.c:543 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:577 logsrvd/logsrvd.c:656 logsrvd/logsrvd.c:692 +#: logsrvd/logsrvd.c:728 logsrvd/logsrvd.c:764 logsrvd/logsrvd_relay.c:512 +#: logsrvd/logsrvd_relay.c:545 #, c-format msgid "unexpected state %d for %s" msgstr "nečekaný stav %d u %s" -#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 -#: logsrvd/logsrvd.c:570 logsrvd/logsrvd.c:649 logsrvd/logsrvd.c:685 -#: logsrvd/logsrvd.c:721 logsrvd/logsrvd.c:757 logsrvd/logsrvd_relay.c:512 -#: logsrvd/logsrvd_relay.c:545 +#: logsrvd/logsrvd.c:455 logsrvd/logsrvd.c:492 logsrvd/logsrvd.c:524 +#: logsrvd/logsrvd.c:578 logsrvd/logsrvd.c:657 logsrvd/logsrvd.c:693 +#: logsrvd/logsrvd.c:729 logsrvd/logsrvd.c:765 logsrvd/logsrvd_relay.c:514 +#: logsrvd/logsrvd_relay.c:547 msgid "state machine error" msgstr "chyba stavového automatu" -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:454 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:462 msgid "invalid AcceptMessage" msgstr "neplatná zpráva AcceptMessage" -#: logsrvd/logsrvd.c:490 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:499 msgid "invalid RejectMessage" msgstr "neplatná zpráva RejectMessage" -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:530 logsrvd/logsrvd.c:531 msgid "invalid ExitMessage" msgstr "neplatná zpráva ExitMessage" -#: logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:577 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:585 msgid "invalid RestartMessage" msgstr "neplatná zpráva RestartMessage" -#: logsrvd/logsrvd.c:611 logsrvd/logsrvd.c:612 +#: logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:620 msgid "invalid AlertMessage" msgstr "neplatná zpráva AlertMessage" -#: logsrvd/logsrvd.c:653 logsrvd/logsrvd.c:689 logsrvd/logsrvd.c:725 +#: logsrvd/logsrvd.c:661 logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:733 #, c-format msgid "%s: unexpected IoBuffer" msgstr "%s: nečekaný IoBuffer" -#: logsrvd/logsrvd.c:654 logsrvd/logsrvd.c:690 logsrvd/logsrvd.c:726 +#: logsrvd/logsrvd.c:662 logsrvd/logsrvd.c:698 logsrvd/logsrvd.c:734 msgid "protocol error" msgstr "chyba protokolu" -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:661 +#: logsrvd/logsrvd.c:668 logsrvd/logsrvd.c:669 msgid "invalid IoBuffer" msgstr "neplatný IoBuffer" -#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:697 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:705 msgid "invalid ChangeWindowSize" msgstr "neplatná ChangeWindowSize" -#: logsrvd/logsrvd.c:732 logsrvd/logsrvd.c:733 +#: logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:741 msgid "invalid CommandSuspend" msgstr "neplatný CommandSuspend" -#: logsrvd/logsrvd.c:782 logsrvd/logsrvd_journal.c:296 -#: logsrvd/logsrvd_relay.c:652 logsrvd/sendlog.c:1192 -#: plugins/sudoers/log_client.c:1582 +#: logsrvd/logsrvd.c:790 logsrvd/logsrvd_journal.c:301 +#: logsrvd/logsrvd_relay.c:654 logsrvd/sendlog.c:1201 +#: plugins/sudoers/log_client.c:1590 #, c-format msgid "unable to unpack %s size %zu" msgstr "%s o velikosti %zu nelze rozbalit" -#: logsrvd/logsrvd.c:827 logsrvd/logsrvd_journal.c:370 -#: logsrvd/logsrvd_relay.c:676 +#: logsrvd/logsrvd.c:835 logsrvd/logsrvd_journal.c:375 +#: logsrvd/logsrvd_relay.c:678 #, 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:829 +#: logsrvd/logsrvd.c:837 msgid "unrecognized ClientMessage type" msgstr "nerozpoznaný druh zprávy ClientMessage" -#: logsrvd/logsrvd.c:919 +#: logsrvd/logsrvd.c:927 #, c-format msgid "timed out writing to client %s" msgstr "při zapisování do klienta %s vypršel časový limit" -#: logsrvd/logsrvd.c:924 logsrvd/logsrvd_relay.c:914 logsrvd/sendlog.c:1395 +#: logsrvd/logsrvd.c:932 logsrvd/logsrvd_relay.c:916 logsrvd/sendlog.c:1404 #, c-format msgid "missing write buffer for client %s" msgstr "chybí vyrovnávací paměť pro zápis do klienta %s" -#: logsrvd/logsrvd.c:1020 +#: logsrvd/logsrvd.c:1028 #, c-format msgid "timed out reading from client %s" msgstr "při čtení z klienta %s vypršel časový limit" -#: logsrvd/logsrvd.c:1061 logsrvd/logsrvd_relay.c:777 +#: logsrvd/logsrvd.c:1069 logsrvd/logsrvd_relay.c:779 #, c-format msgid "EOF from %s without proper TLS shutdown" msgstr "konec souboru od %s bez řádného ukončení TLS" -#: logsrvd/logsrvd.c:1105 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:322 -#: plugins/sudoers/log_client.c:721 +#: logsrvd/logsrvd.c:1113 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:331 +#: plugins/sudoers/log_client.c:723 #, c-format msgid "client message too large: %zu" msgstr "zpráva od klienta je příliš velká: %zu" -#: logsrvd/logsrvd.c:1106 logsrvd/logsrvd_journal.c:259 +#: logsrvd/logsrvd.c:1114 logsrvd/logsrvd_journal.c:259 #: logsrvd/logsrvd_journal.c:260 msgid "client message too large" msgstr "zpráva od klienta je příliš velká" -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1125 +#: logsrvd/logsrvd.c:1132 logsrvd/logsrvd.c:1133 msgid "invalid ClientMessage" msgstr "neplatná zpráva ClientMessage" -#: logsrvd/logsrvd.c:1425 +#: logsrvd/logsrvd.c:1433 msgid "unable to get remote IP addr" msgstr "nelze získat vzdálenou IP adresu" -#: logsrvd/logsrvd.c:1456 logsrvd/tls_client.c:203 +#: logsrvd/logsrvd.c:1464 logsrvd/tls_client.c:203 #: plugins/sudoers/log_client.c:281 #, 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:1639 logsrvd/logsrvd.c:1992 +#: logsrvd/logsrvd.c:1647 logsrvd/logsrvd.c:2003 msgid "unable to setup listen socket" msgstr "nelze nastavit naslouchací socket" -#: logsrvd/logsrvd.c:1756 +#: logsrvd/logsrvd.c:1767 #, c-format msgid "unexpected signal %d" msgstr "nečekaný signál %d" -#: logsrvd/logsrvd.c:1894 +#: logsrvd/logsrvd.c:1905 msgid "sudo log server" msgstr "protokolovací server suda" -#: logsrvd/logsrvd.c:1896 logsrvd/sendlog.c:121 +#: logsrvd/logsrvd.c:1907 logsrvd/sendlog.c:121 msgid "Options:" msgstr "Volby:" -#: logsrvd/logsrvd.c:1898 +#: logsrvd/logsrvd.c:1909 msgid "path to configuration file" msgstr "cesta ke konfiguračnímu souboru" -#: logsrvd/logsrvd.c:1900 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1911 logsrvd/sendlog.c:123 msgid "display help message and exit" msgstr "zobrazí nápovědu a skončí" -#: logsrvd/logsrvd.c:1902 +#: logsrvd/logsrvd.c:1913 msgid "do not fork, run in the foreground" msgstr "neoddělí proces, běží na popředí" -#: logsrvd/logsrvd.c:1904 +#: logsrvd/logsrvd.c:1915 msgid "percent chance connections will drop" msgstr "procentuální pravděpodobnost, že spojení se přeruší" -#: logsrvd/logsrvd.c:1906 logsrvd/sendlog.c:153 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:153 msgid "display version information and exit" msgstr "zobrazí údaje o verzi a skončí" -#: logsrvd/logsrvd.c:1956 logsrvd/sendlog.c:1702 +#: logsrvd/logsrvd.c:1967 logsrvd/sendlog.c:1711 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:1972 +#: logsrvd/logsrvd.c:1983 #, c-format msgid "invalid random drop value: %s" msgstr "neplatná hodnota pravděpodobnosti ztráty: %s" -#: logsrvd/logsrvd.c:1975 logsrvd/sendlog.c:1756 -#: plugins/sudoers/cvtsudoers.c:246 plugins/sudoers/sudoreplay.c:294 -#: plugins/sudoers/visudo.c:182 +#: logsrvd/logsrvd.c:1986 logsrvd/sendlog.c:1765 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/sudoreplay.c:294 +#: plugins/sudoers/visudo.c:186 #, c-format msgid "%s version %s\n" msgstr "%s verze %s\n" #: logsrvd/logsrvd_conf.c:422 plugins/sudoers/check.c:358 #: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:122 -#: plugins/sudoers/policy.c:1271 plugins/sudoers/sudoers.c:512 -#: plugins/sudoers/sudoers.c:1411 plugins/sudoers/testsudoers.c:215 -#: plugins/sudoers/testsudoers.c:382 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:939 +#: plugins/sudoers/sudoers.c:1041 plugins/sudoers/sudoers.c:1062 +#: plugins/sudoers/sudoers.c:1555 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:393 #, c-format msgid "unknown user %s" msgstr "neznámý uživatel %s" #: logsrvd/logsrvd_conf.c:439 plugins/sudoers/iolog.c:148 -#: plugins/sudoers/sudoers.c:517 plugins/sudoers/sudoers.c:1445 -#: plugins/sudoers/testsudoers.c:406 +#: plugins/sudoers/sudoers.c:453 plugins/sudoers/sudoers.c:1589 +#: plugins/sudoers/testsudoers.c:417 #, c-format msgid "unknown group %s" msgstr "neznámá skupina %s" @@ -1012,8 +1030,8 @@ msgid "%s:%d [%s] illegal key: %s" msgstr "%s:%d [%s] nedovolený klíč: %s" -#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:268 -#: plugins/sudoers/logging.c:1033 +#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:269 +#: plugins/sudoers/logging.c:1046 #, c-format msgid "unable to open log file %s" msgstr "nelze otevřít soubor protokolu %s" @@ -1026,13 +1044,13 @@ msgid "unable to initialize relay TLS context" msgstr "TLS kontext relay nelze inicializovat" -#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:424 -#: logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:434 msgid "unable to create journal file" msgstr "soubor s žurnálem nelze vytvořit" #: logsrvd/logsrvd_journal.c:153 logsrvd/logsrvd_queue.c:109 -#: plugins/sudoers/visudo.c:1028 +#: plugins/sudoers/visudo.c:1038 #, c-format msgid "unable to lock %s" msgstr "%s nelze uzamknout" @@ -1045,8 +1063,8 @@ msgid "unable to open journal file" msgstr "soubor s žurnálem nelze otevřít" -#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:460 -#: logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:470 msgid "unable to write journal file" msgstr "soubor s žurnálem nelze zapsat" @@ -1055,20 +1073,20 @@ msgstr "soubor s žurnálem nelze přejmenovat" #: logsrvd/logsrvd_journal.c:247 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:282 logsrvd/logsrvd_journal.c:283 +#: logsrvd/logsrvd_journal.c:287 logsrvd/logsrvd_journal.c:288 msgid "unexpected EOF reading journal file" msgstr "nečekaný konec souboru při čtení žurnálu" #: logsrvd/logsrvd_journal.c:251 logsrvd/logsrvd_journal.c:252 -#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:287 +#: logsrvd/logsrvd_journal.c:291 logsrvd/logsrvd_journal.c:292 msgid "error reading journal file" msgstr "chyba při čtení souboru s žurnálem" -#: logsrvd/logsrvd_journal.c:298 logsrvd/logsrvd_journal.c:384 +#: logsrvd/logsrvd_journal.c:303 logsrvd/logsrvd_journal.c:389 msgid "invalid journal file, unable to restart" msgstr "neplatný soubor s žurnálem, nelze restartovat" -#: logsrvd/logsrvd_journal.c:443 +#: logsrvd/logsrvd_journal.c:448 #, 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" @@ -1126,7 +1144,7 @@ #: logsrvd/logsrvd_local.c:599 logsrvd/logsrvd_local.c:607 #: logsrvd/logsrvd_local.c:655 logsrvd/logsrvd_local.c:690 -#: plugins/sudoers/sudoreplay.c:344 +#: plugins/sudoers/sudoreplay.c:344 toke.l:982 toke.l:985 #, c-format msgid "%s/%s: %s" msgstr "%s/%s: %s" @@ -1147,69 +1165,69 @@ msgid "error writing CommandSuspend" msgstr "chyba při zápisu CommandSuspend" -#: logsrvd/logsrvd_relay.c:435 +#: logsrvd/logsrvd_relay.c:437 msgid "TLS handshake with relay host failed" msgstr "navazování TLS spojení se strojem relaye selhalo" -#: logsrvd/logsrvd_relay.c:463 +#: logsrvd/logsrvd_relay.c:465 msgid "unable to connect to relay host" msgstr "ke stroji relaye se nelze připojit" -#: logsrvd/logsrvd_relay.c:518 +#: logsrvd/logsrvd_relay.c:520 #, c-format msgid "%s: invalid ServerHello, missing server_id" msgstr "%s: neplatná správa ServerHello, chybí server_id" -#: logsrvd/logsrvd_relay.c:520 logsrvd/sendlog.c:1096 -#: plugins/sudoers/log_client.c:1468 +#: logsrvd/logsrvd_relay.c:522 logsrvd/sendlog.c:1105 +#: plugins/sudoers/log_client.c:1476 msgid "invalid ServerHello" msgstr "neplatná správa ServerHello" -#: logsrvd/logsrvd_relay.c:679 +#: logsrvd/logsrvd_relay.c:681 msgid "unrecognized ServerMessage type" msgstr "nerozpoznaný druh zprávy ServerMessage" -#: logsrvd/logsrvd_relay.c:708 +#: logsrvd/logsrvd_relay.c:710 #, 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:710 +#: logsrvd/logsrvd_relay.c:712 msgid "timeout reading from relay" msgstr "při čtení z relaye vypršel časový limit" -#: logsrvd/logsrvd_relay.c:762 +#: logsrvd/logsrvd_relay.c:764 msgid "relay host name does not match certificate" msgstr "název stroje relaye neodpovídá certifikátu" -#: logsrvd/logsrvd_relay.c:768 logsrvd/logsrvd_relay.c:782 -#: logsrvd/logsrvd_relay.c:789 +#: logsrvd/logsrvd_relay.c:770 logsrvd/logsrvd_relay.c:784 +#: logsrvd/logsrvd_relay.c:791 msgid "error reading from relay" msgstr "chyba při čtení z relaye" -#: logsrvd/logsrvd_relay.c:810 +#: logsrvd/logsrvd_relay.c:812 msgid "unable to read from relay" msgstr "z relaye nelze číst" -#: logsrvd/logsrvd_relay.c:825 logsrvd/logsrvd_relay.c:943 +#: logsrvd/logsrvd_relay.c:827 logsrvd/logsrvd_relay.c:945 msgid "relay server closed connection" msgstr "relay server uzavřel spojení" -#: logsrvd/logsrvd_relay.c:843 +#: logsrvd/logsrvd_relay.c:845 msgid "server message too large" msgstr "správa od serveru je příliš velká" -#: logsrvd/logsrvd_relay.c:907 +#: logsrvd/logsrvd_relay.c:909 #, 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:909 +#: logsrvd/logsrvd_relay.c:911 msgid "timeout writing to relay" msgstr "při zapisování do relaye vypršel časový limit" -#: logsrvd/logsrvd_relay.c:962 logsrvd/logsrvd_relay.c:969 -#: logsrvd/logsrvd_relay.c:981 +#: logsrvd/logsrvd_relay.c:964 logsrvd/logsrvd_relay.c:971 +#: logsrvd/logsrvd_relay.c:983 msgid "error writing to relay" msgstr "chyba při zápisu do relaye" @@ -1274,79 +1292,79 @@ msgid "unable to get server IP addr" msgstr "nelze získat IP adresu serveru" -#: logsrvd/sendlog.c:300 plugins/sudoers/sudoreplay.c:868 +#: logsrvd/sendlog.c:309 plugins/sudoers/sudoreplay.c:868 #, c-format msgid "unable to read %s/%s: %s" msgstr "%s/%s nelze přečíst: %s" -#: logsrvd/sendlog.c:1020 plugins/sudoers/iolog.c:949 -#: plugins/sudoers/iolog.c:1024 +#: logsrvd/sendlog.c:1029 plugins/sudoers/iolog.c:948 +#: plugins/sudoers/iolog.c:1023 #, c-format msgid "unexpected I/O event %d" msgstr "nečekaná I/O událost %d" -#: logsrvd/sendlog.c:1073 logsrvd/sendlog.c:1090 logsrvd/sendlog.c:1124 -#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1394 -#: plugins/sudoers/log_client.c:1462 plugins/sudoers/log_client.c:1501 +#: logsrvd/sendlog.c:1082 logsrvd/sendlog.c:1099 logsrvd/sendlog.c:1133 +#: plugins/sudoers/log_client.c:1126 plugins/sudoers/log_client.c:1402 +#: plugins/sudoers/log_client.c:1470 plugins/sudoers/log_client.c:1509 #, c-format msgid "%s: unexpected state %d" msgstr "%s: nečekaný stav %d" -#: logsrvd/sendlog.c:1160 plugins/sudoers/log_client.c:1550 +#: logsrvd/sendlog.c:1169 plugins/sudoers/log_client.c:1558 #, c-format msgid "error message received from server: %s" msgstr "od serveru byla přijata chybová zpráva: %s" -#: logsrvd/sendlog.c:1173 plugins/sudoers/log_client.c:1563 +#: logsrvd/sendlog.c:1182 plugins/sudoers/log_client.c:1571 #, c-format msgid "abort message received from server: %s" msgstr "od serveru byla přijata zpráva o zrušení: %s" -#: logsrvd/sendlog.c:1232 plugins/sudoers/log_client.c:1613 +#: logsrvd/sendlog.c:1241 plugins/sudoers/log_client.c:1621 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: nečekaná hodnota type_case %d" -#: logsrvd/sendlog.c:1261 +#: logsrvd/sendlog.c:1270 msgid "timeout reading from server" msgstr "při čtení ze serveru vypršel časový limit" -#: logsrvd/sendlog.c:1310 plugins/sudoers/log_client.c:1729 +#: logsrvd/sendlog.c:1319 plugins/sudoers/log_client.c:1743 msgid "host name does not match certificate" msgstr "název stroje neodpovídá certifikátu" -#: logsrvd/sendlog.c:1343 +#: logsrvd/sendlog.c:1352 msgid "premature EOF" msgstr "předčasný konec souboru" -#: logsrvd/sendlog.c:1356 plugins/sudoers/log_client.c:1776 +#: logsrvd/sendlog.c:1365 plugins/sudoers/log_client.c:1790 #, c-format msgid "server message too large: %u" msgstr "správa od serveru je příliš velká: %u" -#: logsrvd/sendlog.c:1412 +#: logsrvd/sendlog.c:1421 msgid "timeout writing to server" msgstr "při zapisování do serveru vypršel časový limit" -#: logsrvd/sendlog.c:1779 +#: logsrvd/sendlog.c:1788 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:1783 +#: logsrvd/sendlog.c:1792 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:1859 +#: logsrvd/sendlog.c:1868 #, c-format msgid "exited prematurely with state %d" msgstr "ukončeno předčasně ve stavu %d" -#: logsrvd/sendlog.c:1860 +#: logsrvd/sendlog.c:1869 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "uplynulý čas zaslaný serveru [%lld, %ld]" -#: logsrvd/sendlog.c:1862 +#: logsrvd/sendlog.c:1871 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "od server byl přijat bod zápisu [%lld, %ld]" @@ -1404,12 +1422,12 @@ msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "nelze nastavit minimální verzi protokolu na TLS 1.2: %s" -#: plugins/sudoers/audit.c:269 plugins/sudoers/audit.c:429 -#: plugins/sudoers/log_client.c:951 plugins/sudoers/log_client.c:1000 -#: plugins/sudoers/log_client.c:1049 plugins/sudoers/log_client.c:1174 -#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:693 -#: plugins/sudoers/logging.c:796 plugins/sudoers/logging.c:987 -#: plugins/sudoers/policy.c:125 +#: plugins/sudoers/audit.c:268 plugins/sudoers/audit.c:428 +#: plugins/sudoers/log_client.c:959 plugins/sudoers/log_client.c:1008 +#: plugins/sudoers/log_client.c:1057 plugins/sudoers/log_client.c:1182 +#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:711 +#: plugins/sudoers/logging.c:833 plugins/sudoers/logging.c:1000 +#: plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "nelze získat čas" @@ -1418,28 +1436,28 @@ msgid "unable to change password for %s" msgstr "prošlé heslo pro %s nelze změnit" -#: plugins/sudoers/auth/bsdauth.c:74 +#: plugins/sudoers/auth/bsdauth.c:77 #, c-format msgid "unable to get login class for user %s" msgstr "nelze získat přihlašovací třídu uživatele %s" -#: plugins/sudoers/auth/bsdauth.c:79 -msgid "unable to begin bsd authentication" -msgstr "nelze zahájit BSD autentizaci" - -#: plugins/sudoers/auth/bsdauth.c:87 +#: plugins/sudoers/auth/bsdauth.c:84 msgid "invalid authentication type" msgstr "neplatný druh autentizace" +#: plugins/sudoers/auth/bsdauth.c:89 +msgid "unable to begin BSD authentication" +msgstr "nelze zahájit BSD autentizaci" + #: plugins/sudoers/auth/bsdauth.c:96 msgid "unable to initialize BSD authentication" msgstr "nelze inicializovat BSD autentizaci" -#: plugins/sudoers/auth/bsdauth.c:186 +#: plugins/sudoers/auth/bsdauth.c:188 msgid "your account has expired" msgstr "vašemu účtu skončila platnost" -#: plugins/sudoers/auth/bsdauth.c:188 +#: plugins/sudoers/auth/bsdauth.c:190 msgid "approval failed" msgstr "schválení selhalo" @@ -1658,13 +1676,12 @@ "\n" #: plugins/sudoers/check.c:353 plugins/sudoers/check.c:363 -#: plugins/sudoers/parse.c:82 plugins/sudoers/sudoers.c:945 -#: plugins/sudoers/sudoers.c:966 plugins/sudoers/tsdump.c:119 +#: plugins/sudoers/parse.c:80 plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid %u" msgstr "neznámé UID %u" -#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1279 +#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1278 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" @@ -1679,84 +1696,84 @@ msgid "%s \"%s\" referenced but not defined" msgstr "%s „%s“ použit, ale nedefinován" -#: plugins/sudoers/cvtsudoers.c:209 +#: plugins/sudoers/cvtsudoers.c:210 #, c-format msgid "order increment: %s: %s" msgstr "přírůstek pořadí: %s: %s" -#: plugins/sudoers/cvtsudoers.c:228 +#: plugins/sudoers/cvtsudoers.c:229 #, c-format msgid "starting order: %s: %s" msgstr "počáteční pořadí: %s: %s" -#: plugins/sudoers/cvtsudoers.c:238 +#: plugins/sudoers/cvtsudoers.c:239 #, c-format msgid "order padding: %s: %s" msgstr "odsazení pořadí: %s: %s" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/visudo.c:184 +#: plugins/sudoers/cvtsudoers.c:249 plugins/sudoers/visudo.c:188 #, c-format msgid "%s grammar version %d\n" msgstr "verze gramatiky %s je %d\n" -#: plugins/sudoers/cvtsudoers.c:277 plugins/sudoers/testsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:278 plugins/sudoers/testsudoers.c:163 #, c-format msgid "unsupported input format %s" msgstr "nepodporovaný formát vstupu %s" -#: plugins/sudoers/cvtsudoers.c:295 +#: plugins/sudoers/cvtsudoers.c:296 #, c-format msgid "unsupported output format %s" msgstr "nepodporovaný formát výstupu %s" -#: plugins/sudoers/cvtsudoers.c:385 +#: plugins/sudoers/cvtsudoers.c:386 #, c-format msgid "%s: input and output files must be different" msgstr "%s: vstupní a výstupní soubory se musí lišit" -#: plugins/sudoers/cvtsudoers.c:399 plugins/sudoers/sudoers.c:166 -#: plugins/sudoers/sudoers.c:222 plugins/sudoers/testsudoers.c:254 -#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:654 +#: plugins/sudoers/cvtsudoers.c:400 plugins/sudoers/sudoers.c:163 +#: plugins/sudoers/sudoers.c:221 plugins/sudoers/testsudoers.c:263 +#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:657 msgid "unable to initialize sudoers default values" msgstr "nelze inicializovat výchozí hodnoty sudoers" -#: plugins/sudoers/cvtsudoers.c:525 plugins/sudoers/ldap_conf.c:434 +#: plugins/sudoers/cvtsudoers.c:526 plugins/sudoers/ldap_conf.c:431 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" -#: plugins/sudoers/cvtsudoers.c:584 +#: plugins/sudoers/cvtsudoers.c:605 #, c-format msgid "%s: unknown key word %s" msgstr "%s: neznámé klíčové slovo %s" -#: plugins/sudoers/cvtsudoers.c:630 +#: plugins/sudoers/cvtsudoers.c:651 #, c-format msgid "invalid defaults type: %s" msgstr "neplatný druh položky defaults: %s" -#: plugins/sudoers/cvtsudoers.c:653 +#: plugins/sudoers/cvtsudoers.c:674 #, c-format msgid "invalid suppression type: %s" msgstr "neplatný druh potlačení: %s" -#: plugins/sudoers/cvtsudoers.c:694 plugins/sudoers/cvtsudoers.c:710 +#: plugins/sudoers/cvtsudoers.c:715 plugins/sudoers/cvtsudoers.c:731 #, c-format msgid "invalid filter: %s" msgstr "neplatný filtr: %s" -#: plugins/sudoers/cvtsudoers.c:754 plugins/sudoers/visudo.c:982 +#: plugins/sudoers/cvtsudoers.c:775 plugins/sudoers/visudo.c:992 #, c-format msgid "failed to parse %s file, unknown error" msgstr "rozbor souboru %s se nezdařil, neznámá chyba" -#: plugins/sudoers/cvtsudoers.c:1478 plugins/sudoers/sudoreplay.c:1142 -#: plugins/sudoers/timestamp.c:343 plugins/sudoers/timestamp.c:346 +#: plugins/sudoers/cvtsudoers.c:1499 plugins/sudoers/sudoreplay.c:1142 +#: plugins/sudoers/timestamp.c:368 plugins/sudoers/timestamp.c:371 #, c-format msgid "unable to write to %s" msgstr "do %s nelze zapsat" -#: plugins/sudoers/cvtsudoers.c:1506 +#: plugins/sudoers/cvtsudoers.c:1527 #, c-format msgid "" "%s - convert between sudoers file formats\n" @@ -1765,7 +1782,7 @@ "%s – převádí mezí formáty souboru sudoers\n" "\n" -#: plugins/sudoers/cvtsudoers.c:1508 +#: plugins/sudoers/cvtsudoers.c:1529 msgid "" "\n" "Options:\n" @@ -1811,37 +1828,36 @@ #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 #: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:340 #: plugins/sudoers/env.c:347 plugins/sudoers/env.c:458 -#: plugins/sudoers/ldap.c:528 plugins/sudoers/ldap.c:761 -#: plugins/sudoers/ldap.c:1134 plugins/sudoers/ldap_conf.c:222 -#: plugins/sudoers/ldap_conf.c:313 plugins/sudoers/ldap_util.c:486 +#: plugins/sudoers/ldap.c:509 plugins/sudoers/ldap.c:626 +#: plugins/sudoers/ldap.c:999 plugins/sudoers/ldap_conf.c:219 +#: plugins/sudoers/ldap_conf.c:310 plugins/sudoers/ldap_util.c:486 #: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:461 -#: plugins/sudoers/logging.c:817 plugins/sudoers/logging.c:827 -#: plugins/sudoers/policy.c:807 plugins/sudoers/policy.c:818 +#: plugins/sudoers/policy.c:824 plugins/sudoers/policy.c:835 #: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 #: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/sudoreplay.c:1339 plugins/sudoers/sudoreplay.c:1345 -#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/toke_util.c:213 toke.l:995 toke.l:1197 +#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/toke_util.c:213 toke.l:996 toke.l:1259 #, c-format msgid "internal error, %s overflow" msgstr "vnitřní chyba, přetečení %s" -#: plugins/sudoers/cvtsudoers_csv.c:452 plugins/sudoers/cvtsudoers_csv.c:466 -#: plugins/sudoers/cvtsudoers_json.c:657 plugins/sudoers/cvtsudoers_json.c:672 +#: plugins/sudoers/cvtsudoers_csv.c:454 plugins/sudoers/cvtsudoers_csv.c:468 +#: plugins/sudoers/cvtsudoers_json.c:661 plugins/sudoers/cvtsudoers_json.c:676 #: plugins/sudoers/cvtsudoers_ldif.c:347 plugins/sudoers/cvtsudoers_ldif.c:360 -#: plugins/sudoers/ldap.c:512 +#: plugins/sudoers/ldap.c:493 msgid "unable to get GMT time" msgstr "nelze získat čas GMT" -#: plugins/sudoers/cvtsudoers_csv.c:457 plugins/sudoers/cvtsudoers_csv.c:471 -#: plugins/sudoers/cvtsudoers_json.c:662 plugins/sudoers/cvtsudoers_json.c:677 +#: plugins/sudoers/cvtsudoers_csv.c:459 plugins/sudoers/cvtsudoers_csv.c:473 +#: plugins/sudoers/cvtsudoers_json.c:666 plugins/sudoers/cvtsudoers_json.c:681 #: plugins/sudoers/cvtsudoers_ldif.c:352 plugins/sudoers/cvtsudoers_ldif.c:365 -#: plugins/sudoers/ldap.c:520 +#: plugins/sudoers/ldap.c:501 msgid "unable to format timestamp" msgstr "nelze naformátovat časový údaj" -#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:515 -#: plugins/sudoers/cvtsudoers_json.c:728 +#: plugins/sudoers/cvtsudoers_json.c:481 plugins/sudoers/cvtsudoers_json.c:516 +#: plugins/sudoers/cvtsudoers_json.c:732 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" msgstr "%s:%d:%d: neznámá položka defaults „%s“" @@ -2650,18 +2666,18 @@ msgid "value \"%s\" is invalid for option \"%s\"" msgstr "hodnota „%s“ není pro volbu „%s“ platná" -#: plugins/sudoers/defaults.c:1128 plugins/sudoers/policy.c:210 -#: plugins/sudoers/policy.c:219 +#: plugins/sudoers/defaults.c:1127 plugins/sudoers/policy.c:205 +#: plugins/sudoers/policy.c:214 #, c-format msgid "path name for \"%s\" too long" msgstr "cesta pro „%s“ je příliš dlouhá" -#: plugins/sudoers/defaults.c:1134 +#: plugins/sudoers/defaults.c:1133 #, c-format msgid "values for \"%s\" must start with a '/', '~', or '*'" msgstr "hodnoty „%s“ musí začínat na „/“, „~“ nebo „*“" -#: plugins/sudoers/defaults.c:1141 +#: plugins/sudoers/defaults.c:1140 #, c-format msgid "values for \"%s\" must start with a '/'" msgstr "hodnoty „%s“ musí začínat na „/“" @@ -2669,7 +2685,7 @@ #: plugins/sudoers/editor.c:180 #, c-format msgid "ignoring editor: %.*s" -msgstr "ingureuje se editor: %.*s" +msgstr "ignoruje se editor: %.*s" #: plugins/sudoers/editor.c:181 msgid "editor arguments may not contain \"--\"" @@ -2688,12 +2704,12 @@ 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/filedigest.c:49 +#: plugins/sudoers/filedigest.c:50 #, c-format -msgid "unsupported digest type %d for %s" -msgstr "nepodporovaný druh kontrolního součtu %d pro %s" +msgid "unsupported digest type %u for %s" +msgstr "nepodporovaný druh kontrolního součtu %u pro %s" -#: plugins/sudoers/filedigest.c:78 +#: plugins/sudoers/filedigest.c:79 #, c-format msgid "%s: read error" msgstr "%s: chyba při čtení" @@ -2727,80 +2743,80 @@ msgid "Local IP address and netmask pairs:\n" msgstr "Pár místní IP adresy a masky sítě:\n" -#: plugins/sudoers/iolog.c:685 +#: plugins/sudoers/iolog.c:684 msgid "unable to update sequence file" msgstr "nelze aktualizovat soubor s pořadovým číslem" -#: plugins/sudoers/iolog.c:719 plugins/sudoers/iolog.c:907 -#: plugins/sudoers/iolog.c:1069 plugins/sudoers/iolog.c:1076 -#: plugins/sudoers/iolog.c:1197 plugins/sudoers/iolog.c:1204 -#: plugins/sudoers/iolog.c:1303 plugins/sudoers/iolog.c:1310 +#: plugins/sudoers/iolog.c:718 plugins/sudoers/iolog.c:906 +#: plugins/sudoers/iolog.c:1068 plugins/sudoers/iolog.c:1075 +#: plugins/sudoers/iolog.c:1196 plugins/sudoers/iolog.c:1203 +#: plugins/sudoers/iolog.c:1302 plugins/sudoers/iolog.c:1309 #, 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:727 +#: plugins/sudoers/iolog.c:726 #, c-format msgid "unable to create %s/%s" msgstr "%s/%s nelze vytvořit" -#: plugins/sudoers/iolog.c:955 +#: plugins/sudoers/iolog.c:954 #, 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:1054 plugins/sudoers/iolog.c:1182 -#: plugins/sudoers/iolog.c:1287 plugins/sudoers/timestamp.c:879 -#: plugins/sudoers/timestamp.c:971 plugins/sudoers/visudo.c:556 -#: plugins/sudoers/visudo.c:562 +#: plugins/sudoers/iolog.c:1053 plugins/sudoers/iolog.c:1181 +#: plugins/sudoers/iolog.c:1286 plugins/sudoers/timestamp.c:904 +#: plugins/sudoers/timestamp.c:996 plugins/sudoers/visudo.c:559 +#: plugins/sudoers/visudo.c:565 msgid "unable to read the clock" msgstr "nelze přečíst hodiny" -#: plugins/sudoers/iolog.c:1279 plugins/sudoers/log_client.c:1192 -#: plugins/sudoers/log_client.c:1202 plugins/sudoers/log_client.c:1206 +#: plugins/sudoers/iolog.c:1278 plugins/sudoers/log_client.c:1200 +#: plugins/sudoers/log_client.c:1210 plugins/sudoers/log_client.c:1214 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: vnitřní chyba, neplatný signál %d" -#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:292 +#: plugins/sudoers/ldap.c:154 plugins/sudoers/ldap_conf.c:289 msgid "starttls not supported when using ldaps" msgstr "při použití ldaps není starttls podporováno" -#: plugins/sudoers/ldap.c:248 +#: plugins/sudoers/ldap.c:225 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "nelze inicializovat certifikát SSL a databázi klíčů: %s" -#: plugins/sudoers/ldap.c:251 +#: plugins/sudoers/ldap.c:228 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "pro SSL musíte v %s nastavit TLS_CERT" -#: plugins/sudoers/ldap.c:1714 +#: plugins/sudoers/ldap.c:1587 #, c-format msgid "unable to initialize LDAP: %s" msgstr "LDAP nelze inicializovat: %s" -#: plugins/sudoers/ldap.c:1751 +#: plugins/sudoers/ldap.c:1624 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "start_tls uvedeno, ale knihovna LDAP nepodporuje ldap_start_tls_s_np() ani ldap_start_tls_s_np()" -#: plugins/sudoers/ldap.c:1888 plugins/sudoers/parse_ldif.c:748 +#: plugins/sudoers/ldap.c:1761 plugins/sudoers/parse_ldif.c:748 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "neplatný atribut sudoOrder: %s" -#: plugins/sudoers/ldap_conf.c:200 +#: plugins/sudoers/ldap_conf.c:197 #, c-format msgid "%s: port too large" msgstr "%s: port je příliš velký" -#: plugins/sudoers/ldap_conf.c:261 +#: plugins/sudoers/ldap_conf.c:258 #, c-format msgid "unsupported LDAP uri type: %s" msgstr "nepodporovaný typ ldapového URI: %s" -#: plugins/sudoers/ldap_conf.c:288 +#: plugins/sudoers/ldap_conf.c:285 msgid "unable to mix ldap and ldaps URIs" msgstr "nelze míchat URI ldap a ldaps" @@ -2826,7 +2842,7 @@ msgstr "nelze odeslat auditní zprávu" #: plugins/sudoers/log_client.c:125 plugins/sudoers/log_client.c:412 -#: plugins/sudoers/log_client.c:1439 plugins/sudoers/log_client.c:2055 +#: plugins/sudoers/log_client.c:1447 plugins/sudoers/log_client.c:2069 msgid "error in event loop" msgstr "chyba ve smyčce událostí" @@ -2860,28 +2876,28 @@ msgid "TLS connection to %s:%s failed: %s" msgstr "Spojení TLS s %s:%s selhalo: %s" -#: plugins/sudoers/log_client.c:543 +#: plugins/sudoers/log_client.c:545 msgid "TLS initialization was unsuccessful" msgstr "Inicializace TLS nebyla úspěšná" -#: plugins/sudoers/log_client.c:553 +#: plugins/sudoers/log_client.c:555 msgid "TLS handshake was unsuccessful" msgstr "Ustanovení spojení TLS nebylo úspěšné" -#: plugins/sudoers/log_client.c:1210 +#: plugins/sudoers/log_client.c:1218 #, 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:1739 plugins/sudoers/log_client.c:1763 +#: plugins/sudoers/log_client.c:1753 plugins/sudoers/log_client.c:1777 msgid "lost connection to log server" msgstr "spojení k protokolovému serveru ztraceno" -#: plugins/sudoers/log_client.c:1840 +#: plugins/sudoers/log_client.c:1854 msgid "missing write buffer" msgstr "chybí vyrovnávací paměť pro zápis" -#: plugins/sudoers/log_client.c:1994 +#: plugins/sudoers/log_client.c:2008 msgid "unable to connect to log server" msgstr "k protokolovacímu serveru se nelze připojit" @@ -2914,22 +2930,22 @@ #: plugins/sudoers/logging.c:324 #, 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" +msgid "Sorry, user %s is not allowed to execute '%s%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%s“ jako %s%s%s na %s.\n" #: plugins/sudoers/logging.c:334 msgid "This incident has been reported to the administrator.\n" msgstr "Tato skutečnost byla nahlášena správci.\n" -#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:657 plugins/sudoers/sudoers.c:659 -#: plugins/sudoers/sudoers.c:661 plugins/sudoers/sudoers.c:816 -#: plugins/sudoers/sudoers.c:818 +#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:566 +#: plugins/sudoers/sudoers.c:567 plugins/sudoers/sudoers.c:569 +#: plugins/sudoers/sudoers.c:570 plugins/sudoers/sudoers.c:791 +#: plugins/sudoers/sudoers.c:793 #, c-format msgid "%s: command not found" msgstr "%s: příkaz nenalezen" -#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:651 +#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:562 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2954,31 +2970,31 @@ msgid "a password is required" msgstr "je vyžadováno heslo" -#: plugins/sudoers/logging.c:803 plugins/sudoers/logging.c:815 +#: plugins/sudoers/logging.c:855 msgid "problem parsing sudoers" msgstr "problém při rozboru sudoers" -#: plugins/sudoers/logging.c:877 plugins/sudoers/logging.c:889 +#: plugins/sudoers/logging.c:896 plugins/sudoers/logging.c:904 #, c-format msgid "%s:%d:%d: %s" msgstr "%s:%d:%d: %s" -#: plugins/sudoers/logging.c:1066 +#: plugins/sudoers/logging.c:1079 #, c-format msgid "unable to write log file: %s" msgstr "nelze zapsat soubor protokolu: %s" -#: plugins/sudoers/match_digest.c:112 +#: plugins/sudoers/match_digest.c:101 #, c-format msgid "digest for %s (%s) bad length %zu, expected %zu" msgstr "součet pro %s (%s) má špatnou délku %zu, očekávaná %zu" -#: plugins/sudoers/match_digest.c:131 +#: plugins/sudoers/match_digest.c:120 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "součet pro %s (%s) nemá tvar %s" -#: plugins/sudoers/parse.c:631 +#: plugins/sudoers/parse.c:643 #, c-format msgid "" "\n" @@ -2987,7 +3003,7 @@ "\n" "Role LDAP: %s\n" -#: plugins/sudoers/parse.c:634 +#: plugins/sudoers/parse.c:646 msgid "" "\n" "Sudoers entry:\n" @@ -2995,38 +3011,38 @@ "\n" "Položka v sudoers:\n" -#: plugins/sudoers/parse.c:636 +#: plugins/sudoers/parse.c:648 msgid " RunAsUsers: " msgstr " RunAsUsers: " -#: plugins/sudoers/parse.c:651 +#: plugins/sudoers/parse.c:663 msgid " RunAsGroups: " msgstr " RunAsGroups: " -#: plugins/sudoers/parse.c:661 +#: plugins/sudoers/parse.c:673 msgid " Options: " msgstr " Volby: " -#: plugins/sudoers/parse.c:725 +#: plugins/sudoers/parse.c:737 msgid " Commands:\n" msgstr " Příkazy:\n" -#: plugins/sudoers/parse.c:916 +#: plugins/sudoers/parse.c:928 #, 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:934 +#: plugins/sudoers/parse.c:946 #, 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:952 +#: plugins/sudoers/parse.c:964 #, 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:967 +#: plugins/sudoers/parse.c:979 #, 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" @@ -3041,64 +3057,72 @@ msgid "invalid LDIF attribute: %s" msgstr "neplatný atribut LDIF: %s" -#: plugins/sudoers/policy.c:82 plugins/sudoers/policy.c:113 +#: plugins/sudoers/pivot.c:74 +msgid "unable to restore root directory" +msgstr "kořenový adresář nelze obnovit" + +#: plugins/sudoers/pivot.c:82 +msgid "unable to restore current working directory" +msgstr "současný pracovní adresář nelze obnovit" + +#: 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:360 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:356 plugins/sudoers/testsudoers.c:277 msgid "unable to parse network address list" msgstr "nelze rozebrat seznam síťových adres" -#: plugins/sudoers/policy.c:528 +#: plugins/sudoers/policy.c:524 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:532 +#: plugins/sudoers/policy.c:528 msgid "user-ID not set by sudo front-end" msgstr "ID uživatele nenastaveno vnějším rozhraním sudo" -#: plugins/sudoers/policy.c:536 +#: plugins/sudoers/policy.c:532 msgid "group-ID not set by sudo front-end" msgstr "ID skupiny nenastaveno vnějším rozhraním sudo" -#: plugins/sudoers/policy.c:540 +#: plugins/sudoers/policy.c:536 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:737 +#: plugins/sudoers/policy.c:754 #, c-format msgid "invalid working directory: %s" msgstr "neplatný pracovní adresář: %s" -#: plugins/sudoers/policy.c:921 +#: plugins/sudoers/policy.c:938 #, c-format msgid "invalid chroot directory: %s" msgstr "neplatný kořenový adresář: %s" -#: plugins/sudoers/policy.c:1108 plugins/sudoers/visudo.c:259 -#: plugins/sudoers/visudo.c:906 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/visudo.c:910 +#: plugins/sudoers/visudo.c:1209 #, c-format msgid "unable to execute %s" msgstr "nelze vykonat %s" -#: plugins/sudoers/policy.c:1178 plugins/sudoers/policy.c:1215 -#: plugins/sudoers/policy.c:1237 plugins/sudoers/policy.c:1263 +#: plugins/sudoers/policy.c:1195 plugins/sudoers/policy.c:1230 +#: plugins/sudoers/policy.c:1252 plugins/sudoers/policy.c:1274 #, 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:1299 +#: plugins/sudoers/policy.c:1294 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Verze modulu s politikami sudoers je %s\n" -#: plugins/sudoers/policy.c:1301 +#: plugins/sudoers/policy.c:1296 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Verze gramatiky souboru sudoers je %d\n" -#: plugins/sudoers/policy.c:1305 +#: plugins/sudoers/policy.c:1300 #, c-format msgid "" "\n" @@ -3107,27 +3131,27 @@ "\n" "Cesta sudoers: %s\n" -#: plugins/sudoers/policy.c:1308 +#: plugins/sudoers/policy.c:1303 #, c-format msgid "nsswitch path: %s\n" msgstr "cesta k nsswitch: %s\n" -#: plugins/sudoers/policy.c:1310 +#: plugins/sudoers/policy.c:1305 #, c-format msgid "ldap.conf path: %s\n" msgstr "cesta k ldap.conf: %s\n" -#: plugins/sudoers/policy.c:1311 +#: plugins/sudoers/policy.c:1306 #, c-format msgid "ldap.secret path: %s\n" msgstr "cesta k ldap.secret: %s\n" -#: plugins/sudoers/policy.c:1344 +#: plugins/sudoers/policy.c:1339 #, 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:1362 +#: plugins/sudoers/policy.c:1357 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "nelze odhlásit háček typu %d (verze %d.%d)" @@ -3196,48 +3220,48 @@ 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:445 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 -#: plugins/sudoers/set_perms.c:1460 +#: plugins/sudoers/set_perms.c:115 plugins/sudoers/set_perms.c:451 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1178 +#: plugins/sudoers/set_perms.c:1481 msgid "perm stack overflow" msgstr "přetečení zásobníku oprávnění" -#: 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 +#: plugins/sudoers/set_perms.c:126 plugins/sudoers/set_perms.c:382 +#: plugins/sudoers/set_perms.c:462 plugins/sudoers/set_perms.c:730 +#: plugins/sudoers/set_perms.c:874 plugins/sudoers/set_perms.c:1102 +#: plugins/sudoers/set_perms.c:1189 plugins/sudoers/set_perms.c:1414 +#: plugins/sudoers/set_perms.c:1492 plugins/sudoers/set_perms.c:1583 msgid "perm stack underflow" msgstr "podtečení zásobníku oprávnění" -#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 -#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 +#: plugins/sudoers/set_perms.c:186 plugins/sudoers/set_perms.c:509 +#: plugins/sudoers/set_perms.c:1243 plugins/sudoers/set_perms.c:1526 msgid "unable to change to root gid" msgstr "nelze přepnout GID na root" -#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 -#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 +#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:606 +#: plugins/sudoers/set_perms.c:1006 plugins/sudoers/set_perms.c:1320 msgid "unable to change to runas gid" msgstr "nelze přepnout na běhové GID" -#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 -#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 +#: plugins/sudoers/set_perms.c:282 plugins/sudoers/set_perms.c:611 +#: plugins/sudoers/set_perms.c:1011 plugins/sudoers/set_perms.c:1325 msgid "unable to set runas group vector" msgstr "nelze nastavit vektor běhových skupin" -#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 -#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:293 plugins/sudoers/set_perms.c:622 +#: plugins/sudoers/set_perms.c:1020 plugins/sudoers/set_perms.c:1334 msgid "unable to change to runas uid" msgstr "nelze přepnout na běhové UID" -#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 -#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 +#: plugins/sudoers/set_perms.c:315 plugins/sudoers/set_perms.c:644 +#: plugins/sudoers/set_perms.c:1040 plugins/sudoers/set_perms.c:1354 msgid "unable to change to sudoers gid" msgstr "nelze přepnout na GID sudoers" -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 msgid "too many processes" msgstr "příliš mnoho procesů" @@ -3266,150 +3290,150 @@ msgid "unable to find symbol \"%s\" in %s" msgstr "nelze nalézt symbol „%s“ v %s" -#: plugins/sudoers/sudoers.c:263 +#: plugins/sudoers/sudoers.c:261 #, c-format msgid "unable to get defaults from %s" msgstr "z %s nelze získat výchozí hodnoty" -#: plugins/sudoers/sudoers.c:270 +#: plugins/sudoers/sudoers.c:268 msgid "no valid sudoers sources found, quitting" msgstr "nenalezeny žádné platné zdroje sudoers, končí se" -#: plugins/sudoers/sudoers.c:346 +#: plugins/sudoers/sudoers.c:344 #, 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:348 +#: plugins/sudoers/sudoers.c:346 #, 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:373 +#: plugins/sudoers/sudoers.c:371 #, 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:374 +#: plugins/sudoers/sudoers.c:372 #, 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:401 -msgid "no command specified" -msgstr "nezadán žádný příkaz" - -#: plugins/sudoers/sudoers.c:426 +#: plugins/sudoers/sudoers.c:412 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:483 +#: plugins/sudoers/sudoers.c:421 msgid "user not allowed to override closefrom limit" msgstr "uživatel nemá dovoleno přebít omezení „closefrom“" -#: plugins/sudoers/sudoers.c:484 +#: plugins/sudoers/sudoers.c:422 msgid "you are not permitted to use the -C option" msgstr "nemáte dovoleno použít přepínač -C" -#: plugins/sudoers/sudoers.c:544 -#, c-format -msgid "timestamp owner (%s): No such user" -msgstr "vlastník časového údaje (%s): Takový uživatel neexistuje" - -#: plugins/sudoers/sudoers.c:559 +#: plugins/sudoers/sudoers.c:468 msgid "no tty" msgstr "žádné TTY" -#: plugins/sudoers/sudoers.c:560 +#: plugins/sudoers/sudoers.c:469 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:567 +#: plugins/sudoers/sudoers.c:477 #, c-format msgid "invalid shell for user %s: %s" msgstr "neplatný shell pro uživatele %s: %s" -#: plugins/sudoers/sudoers.c:650 +#: plugins/sudoers/sudoers.c:561 msgid "command in current directory" msgstr "příkaz v aktuálním adresáři" -#: plugins/sudoers/sudoers.c:665 +#: plugins/sudoers/sudoers.c:574 msgid "\"cd\" is a shell built-in command, it cannot be run directly." msgstr "„cd“ je vestavěný příkaz shellu a nelze jej přímo spustit." -#: plugins/sudoers/sudoers.c:667 +#: plugins/sudoers/sudoers.c:576 msgid "the -s option may be used to run a privileged shell." msgstr "přepínač -s smí být použit pro spuštění privilegovaného shellu." -#: plugins/sudoers/sudoers.c:669 +#: plugins/sudoers/sudoers.c:578 msgid "the -D option may be used to run a command in a specific directory." msgstr "přepínač -D smí být použit pro spuštění příkazu v určitém adresáři." -#: plugins/sudoers/sudoers.c:678 +#: plugins/sudoers/sudoers.c:587 msgid "user not allowed to set a command timeout" msgstr "uživatel nemá dovoleno nastavit časový limit příkazu" -#: plugins/sudoers/sudoers.c:680 +#: plugins/sudoers/sudoers.c:589 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:688 +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to preserve the environment" msgstr "uživatel nemá dovoleno zachovat prostředí" -#: plugins/sudoers/sudoers.c:690 +#: plugins/sudoers/sudoers.c:599 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:799 +#: plugins/sudoers/sudoers.c:635 +msgid "no command specified" +msgstr "nezadán žádný příkaz" + +#: plugins/sudoers/sudoers.c:774 msgid "error setting user-specified environment variables" msgstr "chyba při nastavování proměnných prostředí určených uživatelem" -#: plugins/sudoers/sudoers.c:1112 +#: plugins/sudoers/sudoers.c:1239 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit není nutné spouštět přes sudo" -#: plugins/sudoers/sudoers.c:1157 plugins/sudoers/sudoreplay.c:1612 +#: plugins/sudoers/sudoers.c:1314 plugins/sudoers/sudoreplay.c:1612 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "%s nelze číst" -#: plugins/sudoers/sudoers.c:1186 plugins/sudoers/visudo.c:1066 +#: plugins/sudoers/sudoers.c:1337 plugins/sudoers/visudo.c:1114 #, c-format msgid "%s is not a regular file" msgstr "%s není běžný soubor" -#: plugins/sudoers/sudoers.c:1190 plugins/sudoers/timestamp.c:263 toke.l:1255 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/timestamp.c:288 toke.l:1325 #, 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:1194 plugins/sudoers/timestamp.c:270 toke.l:1260 +#: plugins/sudoers/sudoers.c:1345 plugins/sudoers/timestamp.c:295 toke.l:1330 #, c-format msgid "%s is world writable" msgstr "%s je zapisovatelný pro všechny" -#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/timestamp.c:275 toke.l:1263 +#: plugins/sudoers/sudoers.c:1349 plugins/sudoers/timestamp.c:300 toke.l:1333 #, 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:1233 +#: plugins/sudoers/sudoers.c:1377 #, c-format msgid "only root can use \"-c %s\"" msgstr "pouze root může použít „-c %s“" -#: plugins/sudoers/sudoers.c:1252 +#: plugins/sudoers/sudoers.c:1396 #, c-format msgid "unknown login class %s" msgstr "neznámá přihlašovací třída %s" -#: plugins/sudoers/sudoers.c:1339 plugins/sudoers/sudoers.c:1354 +#: plugins/sudoers/sudoers.c:1483 plugins/sudoers/sudoers.c:1498 #, c-format msgid "unable to resolve host %s" msgstr "nelze přeložit název stroje %s" +#: plugins/sudoers/sudoers.c:1636 +#, c-format +msgid "%s:%d:%d timestampowner: unknown user %s" +msgstr "%s:%d:%d: timestampowner: neznámý uživatel %s" + #: plugins/sudoers/sudoreplay.c:252 #, c-format msgid "invalid filter option: %s" @@ -3552,11 +3576,11 @@ " -s, --speed=číslo zrychlí nebo zpomalí výstup\n" " -V, --version zobrazí údaje o verzi a skončí" -#: plugins/sudoers/testsudoers.c:344 +#: plugins/sudoers/testsudoers.c:355 msgid "\thost unmatched" msgstr "\tstroj se neshoduje" -#: plugins/sudoers/testsudoers.c:347 +#: plugins/sudoers/testsudoers.c:358 msgid "" "\n" "Command allowed" @@ -3564,7 +3588,7 @@ "\n" "Příkaz povolen" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command denied" @@ -3572,7 +3596,7 @@ "\n" "Příkaz odepřen" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command unmatched" @@ -3581,22 +3605,22 @@ "Příkaz se neshoduje" # TODO: pluralize -#: plugins/sudoers/timestamp.c:354 plugins/sudoers/timestamp.c:693 +#: plugins/sudoers/timestamp.c:379 plugins/sudoers/timestamp.c:718 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "nelze zkrátit soubor s časovými údaji na %lld bajtů" -#: plugins/sudoers/timestamp.c:890 +#: plugins/sudoers/timestamp.c:915 msgid "ignoring time stamp from the future" msgstr "časový údaj z budoucnosti se ignoruje" -#: plugins/sudoers/timestamp.c:913 +#: plugins/sudoers/timestamp.c:938 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "časový údaj ukazuje příliš do budoucna: %20.20s" # TODO: pluralize -#: plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1067 #, c-format msgid "unable to lock time stamp file %s" msgstr "soubor s časovými údaji %s nelze zamknout" @@ -3605,99 +3629,91 @@ msgid "sudoedit should not be specified with a path" msgstr "sudoedit by neměl být uveden s cestou" -#: plugins/sudoers/visudo.c:254 -msgid "the -x option will be removed in a future release" -msgstr "přepínač -x bude v příštím vydání odstraněn" - -#: plugins/sudoers/visudo.c:256 -msgid "please consider using the cvtsudoers utility instead" -msgstr "prosím, zvažte použití nástroje cvtsudoers" - -#: plugins/sudoers/visudo.c:311 plugins/sudoers/visudo.c:702 +#: plugins/sudoers/visudo.c:314 plugins/sudoers/visudo.c:705 #, c-format msgid "press return to edit %s: " msgstr "pro úpravu %s stiskněte enter: " -#: plugins/sudoers/visudo.c:326 +#: plugins/sudoers/visudo.c:329 #, c-format msgid "contents of edit session left in %s" msgstr "obsah relace úprav zanechán v %s" -#: plugins/sudoers/visudo.c:403 +#: plugins/sudoers/visudo.c:406 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "zadaný editor (%s) neexistuje" -#: plugins/sudoers/visudo.c:408 +#: plugins/sudoers/visudo.c:411 #, c-format msgid "no editor found (editor path = %s)" msgstr "žádný editor nenalezen (cesta k editoru = %s)" -#: plugins/sudoers/visudo.c:495 plugins/sudoers/visudo.c:774 +#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:777 #, c-format msgid "unable to stat %s" msgstr "nelze zjistit údaje o %s" -#: plugins/sudoers/visudo.c:515 plugins/sudoers/visudo.c:523 +#: plugins/sudoers/visudo.c:518 plugins/sudoers/visudo.c:526 msgid "write error" msgstr "chyba zápisu" -#: plugins/sudoers/visudo.c:569 +#: plugins/sudoers/visudo.c:572 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "nelze získat údaje o dočasném souboru (%s), %s nezměněno" -#: plugins/sudoers/visudo.c:576 +#: plugins/sudoers/visudo.c:579 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "dočasný soubor o nulové velikosti (%s), %s nezměněno" -#: plugins/sudoers/visudo.c:582 +#: plugins/sudoers/visudo.c:585 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "editor (%s) selhal, %s nezměněno" -#: plugins/sudoers/visudo.c:604 +#: plugins/sudoers/visudo.c:607 #, c-format msgid "%s unchanged" msgstr "%s nezměněno" -#: plugins/sudoers/visudo.c:649 +#: plugins/sudoers/visudo.c:652 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "nelze znovu otevřít dočasný soubor (%s), %s nezměněno." -#: plugins/sudoers/visudo.c:662 +#: plugins/sudoers/visudo.c:665 #, c-format msgid "unable to parse temporary file (%s), unknown error" msgstr "není možné rozebrat dočasný soubor (%s), neznámá chyba" -#: plugins/sudoers/visudo.c:748 plugins/sudoers/visudo.c:778 -#: plugins/sudoers/visudo.c:785 +#: plugins/sudoers/visudo.c:751 plugins/sudoers/visudo.c:781 +#: plugins/sudoers/visudo.c:788 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "nelze nastavit (UID, GID) %s na (%u, %u)" -#: plugins/sudoers/visudo.c:813 +#: plugins/sudoers/visudo.c:816 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "%s a %s se nenachází na jednom souborovém systému, pro přejmenování se použije mv" -#: plugins/sudoers/visudo.c:824 +#: plugins/sudoers/visudo.c:827 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "příkaz selhal: „'%s %s %s“, %s nezměněno" -#: plugins/sudoers/visudo.c:831 +#: plugins/sudoers/visudo.c:834 #, c-format msgid "error renaming %s, %s unchanged" msgstr "chyba při přejmenování %s, %s nezměněno" -#: plugins/sudoers/visudo.c:851 +#: plugins/sudoers/visudo.c:855 msgid "What now? " msgstr "Co teď? " -#: plugins/sudoers/visudo.c:865 +#: plugins/sudoers/visudo.c:869 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -3709,42 +3725,50 @@ " (x) skončit bez uložení změn do souboru sudoers\n" " (Q) skončit a uložit změny do souboru sudoers (NEBEZPEČNÉ!)\n" -#: plugins/sudoers/visudo.c:911 +#: plugins/sudoers/visudo.c:915 #, c-format msgid "unable to run %s" msgstr "nelze spustit %s" -#: plugins/sudoers/visudo.c:942 +#: plugins/sudoers/visudo.c:946 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s: chybný vlastník (UID, GID), měl by být (%u, %u)\n" -#: plugins/sudoers/visudo.c:953 +#: plugins/sudoers/visudo.c:957 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s: chybná práva, měla by být 0%o\n" -#: plugins/sudoers/visudo.c:999 plugins/sudoers/visudo.c:1006 +#: plugins/sudoers/visudo.c:1009 plugins/sudoers/visudo.c:1016 #, c-format msgid "%s: parsed OK\n" msgstr "%s: rozbor úspěšný\n" -#: plugins/sudoers/visudo.c:1025 +#: plugins/sudoers/visudo.c:1035 #, c-format msgid "%s busy, try again later" msgstr "%s je zaneprázdněn, zkuste to později" # The code indeed checks for non-localized "y" character. -#: plugins/sudoers/visudo.c:1029 +#: plugins/sudoers/visudo.c:1039 msgid "Edit anyway? [y/N]" msgstr "Přesto upravit? [y pro ano / N pro ne]" -#: plugins/sudoers/visudo.c:1130 +#: plugins/sudoers/visudo.c:1197 +msgid "the -x option will be removed in a future release" +msgstr "přepínač -x bude v příštím vydání odstraněn" + +#: plugins/sudoers/visudo.c:1199 +msgid "please consider using the cvtsudoers utility instead" +msgstr "prosím, zvažte použití nástroje cvtsudoers" + +#: plugins/sudoers/visudo.c:1219 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Pozor: %s:%d:%d: nepoužitý %s „%s“" -#: plugins/sudoers/visudo.c:1242 +#: plugins/sudoers/visudo.c:1332 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3753,7 +3777,7 @@ "%s – bezpečně upraví soubor sudoers\n" "\n" -#: plugins/sudoers/visudo.c:1244 +#: plugins/sudoers/visudo.c:1334 msgid "" "\n" "Options:\n" @@ -3775,38 +3799,49 @@ " -s, --strict přísná kontrola syntaxe\n" " -V, --version zobrazí údaje o verzi a skončí\n" -#: toke.l:189 +#: toke.l:184 msgid "empty string" msgstr "prázdný řetězec" -#: toke.l:201 toke.l:571 +#: toke.l:196 toke.l:566 msgid "empty group" msgstr "prázdná skupina" -#: toke.l:211 toke.l:569 +#: toke.l:206 toke.l:564 msgid "empty netgroup" msgstr "prázdná síťová skupina" -#: toke.l:289 +#: toke.l:284 msgid "unterminated regular expression" msgstr "neukončený regulární výraz" -#: toke.l:363 toke.l:375 toke.l:387 toke.l:403 toke.l:422 toke.l:462 +#: toke.l:358 toke.l:370 toke.l:382 toke.l:398 toke.l:417 toke.l:457 msgid "invalid line continuation" msgstr "neplatné pokračování řádku" -#: toke.l:608 toke.l:620 +#: toke.l:603 toke.l:615 msgid "invalid IPv6 address" msgstr "neplatná IPv6 adresa" -#: toke.l:876 +#: toke.l:863 msgid "unexpected line break in string" msgstr "nečekané zalomení řádku uvnitř řetězce" -#: toke.l:1226 +#: toke.l:983 +msgid "ignoring editor backup file" +msgstr "ignoruje se záložní souboru editoru" + +#: toke.l:986 +msgid "ignoring file name containing '.'" +msgstr "ignoruje se soubor s názvem obsahujícím „.“" + +#: toke.l:1289 msgid "too many levels of includes" msgstr "příliš mnoho úrovní zanoření" +#~ msgid "timestamp owner (%s): No such user" +#~ msgstr "vlastník časového údaje (%s): Takový uživatel neexistuje" + #~ msgid "%s must be owned by uid %d" #~ msgstr "%s musí být vlastněn UID %d" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/plugins/sudoers/po/de.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/plugins/sudoers/po/de.mo differ diff -Nru sudo-1.9.13p3/plugins/sudoers/po/de.po sudo-1.9.14p2/plugins/sudoers/po/de.po --- sudo-1.9.13p3/plugins/sudoers/po/de.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/po/de.po 2023-07-15 15:37:21.000000000 +0000 @@ -6,10 +6,10 @@ # Jochen Hein , 2001-2023. msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.13b2\n" +"Project-Id-Version: sudoers 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-26 16:49+0100\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-08 18:32+0200\n" "Last-Translator: Jochen Hein \n" "Language-Team: German \n" "Language: de\n" @@ -20,7 +20,7 @@ "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.3\n" -#: confstr.sh:1 gram.y:1220 plugins/sudoers/logging.c:866 +#: confstr.sh:1 gram.y:1240 plugins/sudoers/logging.c:885 msgid "syntax error" msgstr "Syntax-Fehler" @@ -44,34 +44,34 @@ msgid "Sorry, try again." msgstr "Das hat nicht funktioniert, bitte nochmal probieren." -#: gram.y:237 gram.y:304 gram.y:313 gram.y:322 gram.y:332 gram.y:342 -#: gram.y:366 gram.y:393 gram.y:402 gram.y:410 gram.y:419 gram.y:428 -#: gram.y:502 gram.y:512 gram.y:524 gram.y:572 gram.y:581 gram.y:590 -#: gram.y:599 gram.y:731 gram.y:739 gram.y:750 gram.y:762 gram.y:781 -#: gram.y:944 gram.y:949 gram.y:957 gram.y:971 gram.y:977 gram.y:1099 -#: gram.y:1108 gram.y:1116 gram.y:1125 gram.y:1134 gram.y:1163 gram.y:1172 -#: gram.y:1180 gram.y:1280 gram.y:1410 gram.y:1777 gram.y:1827 -#: lib/eventlog/eventlog.c:235 lib/eventlog/eventlog.c:312 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:834 -#: lib/eventlog/eventlog.c:1135 lib/iolog/iolog_filter.c:142 +#: gram.y:236 gram.y:303 gram.y:312 gram.y:321 gram.y:331 gram.y:341 +#: gram.y:365 gram.y:392 gram.y:401 gram.y:409 gram.y:418 gram.y:427 +#: gram.y:501 gram.y:511 gram.y:523 gram.y:571 gram.y:580 gram.y:589 +#: gram.y:598 gram.y:730 gram.y:738 gram.y:749 gram.y:761 gram.y:780 +#: gram.y:943 gram.y:948 gram.y:956 gram.y:970 gram.y:976 gram.y:988 +#: gram.y:994 gram.y:1119 gram.y:1128 gram.y:1136 gram.y:1145 gram.y:1154 +#: gram.y:1183 gram.y:1192 gram.y:1200 gram.y:1300 gram.y:1430 gram.y:1808 +#: gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:313 lib/eventlog/eventlog.c:755 +#: lib/eventlog/eventlog.c:832 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:472 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 #: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:233 -#: lib/iolog/iolog_json.c:150 lib/iolog/iolog_json.c:382 -#: lib/iolog/iolog_json.c:412 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:212 -#: logsrvd/iolog_writer.c:95 logsrvd/iolog_writer.c:100 -#: logsrvd/iolog_writer.c:134 logsrvd/iolog_writer.c:182 -#: logsrvd/iolog_writer.c:215 logsrvd/iolog_writer.c:225 -#: logsrvd/iolog_writer.c:254 logsrvd/iolog_writer.c:275 -#: logsrvd/iolog_writer.c:287 logsrvd/iolog_writer.c:297 -#: logsrvd/iolog_writer.c:307 logsrvd/iolog_writer.c:317 -#: logsrvd/iolog_writer.c:329 logsrvd/iolog_writer.c:364 -#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:377 -#: logsrvd/iolog_writer.c:383 logsrvd/iolog_writer.c:567 -#: logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 logsrvd/logsrvd.c:310 -#: logsrvd/logsrvd.c:1050 logsrvd/logsrvd.c:1113 logsrvd/logsrvd.c:1582 -#: logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 logsrvd/logsrvd.c:1988 +#: 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:212 logsrvd/iolog_writer.c:95 +#: logsrvd/iolog_writer.c:100 logsrvd/iolog_writer.c:134 +#: logsrvd/iolog_writer.c:182 logsrvd/iolog_writer.c:215 +#: logsrvd/iolog_writer.c:225 logsrvd/iolog_writer.c:254 +#: logsrvd/iolog_writer.c:275 logsrvd/iolog_writer.c:287 +#: logsrvd/iolog_writer.c:297 logsrvd/iolog_writer.c:307 +#: logsrvd/iolog_writer.c:317 logsrvd/iolog_writer.c:329 +#: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 +#: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:1058 logsrvd/logsrvd.c:1121 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 #: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 #: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 #: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 @@ -86,29 +86,31 @@ #: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1743 #: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:216 #: logsrvd/logsrvd_journal.c:217 logsrvd/logsrvd_journal.c:273 -#: logsrvd/logsrvd_journal.c:433 logsrvd/logsrvd_journal.c:435 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:216 -#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:279 -#: logsrvd/logsrvd_local.c:417 logsrvd/logsrvd_local.c:466 -#: logsrvd/logsrvd_local.c:467 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:473 logsrvd/logsrvd_queue.c:159 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/logsrvd_relay.c:444 logsrvd/logsrvd_relay.c:743 -#: logsrvd/logsrvd_relay.c:850 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 -#: logsrvd/sendlog.c:291 logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 -#: logsrvd/sendlog.c:1801 plugins/sudoers/audit.c:116 -#: plugins/sudoers/auth/bsdauth.c:150 plugins/sudoers/auth/kerb5.c:121 +#: logsrvd/logsrvd_journal.c:278 logsrvd/logsrvd_journal.c:438 +#: logsrvd/logsrvd_journal.c:440 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:216 logsrvd/logsrvd_local.c:278 +#: logsrvd/logsrvd_local.c:279 logsrvd/logsrvd_local.c:417 +#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:467 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:473 +#: logsrvd/logsrvd_queue.c:159 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/logsrvd_relay.c:446 +#: logsrvd/logsrvd_relay.c:745 logsrvd/logsrvd_relay.c:852 +#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:292 +#: logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 logsrvd/sendlog.c:624 +#: logsrvd/sendlog.c:1810 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/bsdauth.c:152 plugins/sudoers/auth/kerb5.c:121 #: plugins/sudoers/auth/kerb5.c:148 plugins/sudoers/auth/pam.c:687 #: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:175 plugins/sudoers/cvtsudoers.c:192 -#: plugins/sudoers/cvtsudoers.c:203 plugins/sudoers/cvtsudoers.c:333 -#: plugins/sudoers/cvtsudoers.c:372 plugins/sudoers/cvtsudoers.c:392 -#: plugins/sudoers/cvtsudoers.c:537 plugins/sudoers/cvtsudoers.c:670 -#: plugins/sudoers/cvtsudoers.c:688 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:870 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:246 +#: plugins/sudoers/canon_path.c:129 plugins/sudoers/canon_path.c:160 +#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:132 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:193 +#: plugins/sudoers/cvtsudoers.c:204 plugins/sudoers/cvtsudoers.c:334 +#: plugins/sudoers/cvtsudoers.c:373 plugins/sudoers/cvtsudoers.c:393 +#: plugins/sudoers/cvtsudoers.c:538 plugins/sudoers/cvtsudoers.c:691 +#: plugins/sudoers/cvtsudoers.c:709 plugins/sudoers/cvtsudoers.c:883 +#: plugins/sudoers/cvtsudoers.c:891 plugins/sudoers/cvtsudoers.c:1386 +#: plugins/sudoers/cvtsudoers.c:1390 plugins/sudoers/cvtsudoers.c:1492 +#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:247 #: 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:376 @@ -126,143 +128,152 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1158 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:212 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:689 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:691 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:294 plugins/sudoers/ldap_util.c:301 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:402 -#: plugins/sudoers/log_client.c:715 plugins/sudoers/log_client.c:736 -#: plugins/sudoers/log_client.c:1415 plugins/sudoers/log_client.c:1536 -#: plugins/sudoers/log_client.c:1636 plugins/sudoers/log_client.c:1972 -#: plugins/sudoers/log_client.c:2031 plugins/sudoers/logging.c:110 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/match_command.c:335 plugins/sudoers/match_command.c:603 -#: plugins/sudoers/match_command.c:654 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:776 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:267 plugins/sudoers/parse.c:284 -#: plugins/sudoers/parse.c:303 plugins/sudoers/parse.c:322 -#: plugins/sudoers/parse.c:339 plugins/sudoers/parse.c:362 -#: plugins/sudoers/parse.c:373 plugins/sudoers/parse_ldif.c:153 -#: plugins/sudoers/parse_ldif.c:184 plugins/sudoers/parse_ldif.c:253 -#: plugins/sudoers/parse_ldif.c:261 plugins/sudoers/parse_ldif.c:266 -#: plugins/sudoers/parse_ldif.c:342 plugins/sudoers/parse_ldif.c:353 -#: plugins/sudoers/parse_ldif.c:380 plugins/sudoers/parse_ldif.c:397 -#: plugins/sudoers/parse_ldif.c:409 plugins/sudoers/parse_ldif.c:413 -#: plugins/sudoers/parse_ldif.c:427 plugins/sudoers/parse_ldif.c:484 -#: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:628 -#: plugins/sudoers/parse_ldif.c:653 plugins/sudoers/parse_ldif.c:711 -#: plugins/sudoers/parse_ldif.c:728 plugins/sudoers/parse_ldif.c:756 -#: plugins/sudoers/parse_ldif.c:763 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 -#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 -#: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 -#: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 -#: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:185 -#: plugins/sudoers/sssd.c:414 plugins/sudoers/sssd.c:479 -#: plugins/sudoers/sssd.c:505 plugins/sudoers/sssd.c:568 -#: plugins/sudoers/sssd.c:761 plugins/sudoers/strvec_join.c:53 -#: plugins/sudoers/stubs.c:112 plugins/sudoers/stubs.c:120 -#: plugins/sudoers/sudoers.c:354 plugins/sudoers/sudoers.c:380 -#: plugins/sudoers/sudoers.c:447 plugins/sudoers/sudoers.c:464 -#: plugins/sudoers/sudoers.c:505 plugins/sudoers/sudoers.c:849 -#: plugins/sudoers/sudoers.c:902 plugins/sudoers/sudoers.c:1054 -#: plugins/sudoers/sudoers.c:1114 plugins/sudoers/sudoers.c:1369 +#: plugins/sudoers/log_client.c:717 plugins/sudoers/log_client.c:739 +#: plugins/sudoers/log_client.c:744 plugins/sudoers/log_client.c:1423 +#: plugins/sudoers/log_client.c:1544 plugins/sudoers/log_client.c:1667 +#: plugins/sudoers/log_client.c:1986 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:846 plugins/sudoers/match_command.c:295 +#: plugins/sudoers/match_command.c:563 plugins/sudoers/match_command.c:629 +#: plugins/sudoers/match_command.c:724 plugins/sudoers/match_command.c:770 +#: plugins/sudoers/match_digest.c:82 plugins/sudoers/parse.c:279 +#: plugins/sudoers/parse.c:296 plugins/sudoers/parse.c:315 +#: plugins/sudoers/parse.c:334 plugins/sudoers/parse.c:351 +#: plugins/sudoers/parse.c:374 plugins/sudoers/parse.c:385 +#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 +#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:261 +#: plugins/sudoers/parse_ldif.c:266 plugins/sudoers/parse_ldif.c:342 +#: plugins/sudoers/parse_ldif.c:353 plugins/sudoers/parse_ldif.c:380 +#: plugins/sudoers/parse_ldif.c:397 plugins/sudoers/parse_ldif.c:409 +#: plugins/sudoers/parse_ldif.c:413 plugins/sudoers/parse_ldif.c:427 +#: plugins/sudoers/parse_ldif.c:484 plugins/sudoers/parse_ldif.c:598 +#: plugins/sudoers/parse_ldif.c:628 plugins/sudoers/parse_ldif.c:653 +#: plugins/sudoers/parse_ldif.c:711 plugins/sudoers/parse_ldif.c:728 +#: plugins/sudoers/parse_ldif.c:756 plugins/sudoers/parse_ldif.c:763 +#: plugins/sudoers/policy.c:622 plugins/sudoers/policy.c:1050 +#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:199 +#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 +#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:587 +#: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:857 +#: plugins/sudoers/pwutil.c:945 plugins/sudoers/pwutil.c:993 +#: plugins/sudoers/pwutil.c:1052 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 +#: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1325 plugins/sudoers/sudoers.c:1513 #: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 #: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 #: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 -#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 -#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:588 -#: plugins/sudoers/timestamp.c:451 plugins/sudoers/timestamp.c:495 -#: plugins/sudoers/timestamp.c:1017 plugins/sudoers/timestamp.c:1146 -#: plugins/sudoers/toke_util.c:78 plugins/sudoers/toke_util.c:106 -#: plugins/sudoers/toke_util.c:131 plugins/sudoers/toke_util.c:161 -#: plugins/sudoers/toke_util.c:200 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:150 plugins/sudoers/visudo.c:385 -#: plugins/sudoers/visudo.c:391 plugins/sudoers/visudo.c:502 -#: plugins/sudoers/visudo.c:1056 toke.l:1031 toke.l:1163 toke.l:1234 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 +#: plugins/sudoers/toke_util.c:161 plugins/sudoers/toke_util.c:200 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1087 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1299 msgid "unable to allocate memory" msgstr "Es kann kein Speicher mehr alloziert werden" -#: gram.y:623 +#: gram.y:622 msgid "a digest requires a path name" msgstr "Eine Prüfsumme erfordert einen Pfadnamen" -#: gram.y:645 +#: gram.y:644 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "Werte für »CWD« müssen mit »/«, »~« oder »*« beginnen" -#: gram.y:651 +#: gram.y:650 msgid "\"CWD\" path too long" msgstr "»CWD« (aktuelles Arbeitsverzeichnis) Pfad ist zu lang" -#: gram.y:661 +#: gram.y:660 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "Werte für »CHROOT« müssen mit »/«, »~« oder »*« beginnen" -#: gram.y:667 +#: gram.y:666 msgid "\"CHROOT\" path too long" msgstr "»CHROOT« Pfad ist zu lang" -#: gram.y:802 +#: gram.y:801 #, 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:825 +#: gram.y:824 msgid "invalid notbefore value" msgstr "ungültiger Wert für »notbefore«" -#: gram.y:834 +#: gram.y:833 msgid "invalid notafter value" msgstr "ungültiger Wert für »notafter«" -#: gram.y:844 plugins/sudoers/policy.c:385 +#: gram.y:843 plugins/sudoers/policy.c:381 msgid "timeout value too large" msgstr "Wert für Timeout ist zu groß" -#: gram.y:846 plugins/sudoers/policy.c:387 +#: gram.y:845 plugins/sudoers/policy.c:383 msgid "invalid timeout value" msgstr "ungültiger Wert für Timeout" -#: gram.y:967 plugins/sudoers/sudoers.c:1072 +#: gram.y:966 plugins/sudoers/sudoers.c:1192 msgid "command too long" msgstr "Der Befehl ist zu lang" -#: gram.y:1224 plugins/sudoers/check_aliases.c:96 -#: plugins/sudoers/defaults.c:1276 +#: gram.y:1000 +msgid "expected a fully-qualified path name" +msgstr "Voll qualifizierter Pfad erwartet" + +#: gram.y:1244 plugins/sudoers/check_aliases.c:96 +#: plugins/sudoers/defaults.c:1275 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1278 +#: gram.y:1298 #, c-format msgid "Alias \"%s\" already defined" msgstr "Alias »%s« ist bereits definiert" -#: gram.y:1777 gram.y:1827 lib/eventlog/eventlog.c:235 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:830 -#: lib/eventlog/eventlog.c:833 lib/eventlog/eventlog.c:1135 -#: lib/iolog/iolog_filter.c:142 lib/iolog/iolog_filter.c:202 -#: lib/iolog/iolog_filter.c:232 lib/iolog/iolog_json.c:150 -#: lib/iolog/iolog_json.c:381 lib/iolog/iolog_json.c:412 +#: gram.y:1808 gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:755 lib/eventlog/eventlog.c:828 +#: lib/eventlog/eventlog.c:831 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:471 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 +#: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:232 #: 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 @@ -277,55 +288,56 @@ #: logsrvd/iolog_writer.c:316 logsrvd/iolog_writer.c:328 #: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 #: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 -#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 -#: logsrvd/logsrvd.c:310 logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:490 -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:611 -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:732 -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1439 logsrvd/logsrvd.c:1446 -#: logsrvd/logsrvd.c:1582 logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 -#: logsrvd/logsrvd.c:1988 logsrvd/logsrvd_conf.c:357 -#: logsrvd/logsrvd_conf.c:370 logsrvd/logsrvd_conf.c:511 -#: logsrvd/logsrvd_conf.c:534 logsrvd/logsrvd_conf.c:538 -#: logsrvd/logsrvd_conf.c:556 logsrvd/logsrvd_conf.c:626 -#: logsrvd/logsrvd_conf.c:649 logsrvd/logsrvd_conf.c:678 -#: logsrvd/logsrvd_conf.c:692 logsrvd/logsrvd_conf.c:706 -#: logsrvd/logsrvd_conf.c:720 logsrvd/logsrvd_conf.c:734 -#: logsrvd/logsrvd_conf.c:748 logsrvd/logsrvd_conf.c:829 -#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1053 -#: logsrvd/logsrvd_conf.c:1448 logsrvd/logsrvd_conf.c:1595 -#: logsrvd/logsrvd_conf.c:1621 logsrvd/logsrvd_conf.c:1633 -#: logsrvd/logsrvd_conf.c:1640 logsrvd/logsrvd_conf.c:1646 -#: logsrvd/logsrvd_conf.c:1742 logsrvd/logsrvd_journal.c:76 -#: logsrvd/logsrvd_journal.c:125 logsrvd/logsrvd_journal.c:216 -#: logsrvd/logsrvd_journal.c:246 logsrvd/logsrvd_journal.c:250 -#: logsrvd/logsrvd_journal.c:258 logsrvd/logsrvd_journal.c:281 -#: logsrvd/logsrvd_journal.c:285 logsrvd/logsrvd_journal.c:433 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:278 -#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:491 logsrvd/logsrvd_queue.c:158 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:291 -#: logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 logsrvd/sendlog.c:1503 -#: logsrvd/sendlog.c:1510 logsrvd/sendlog.c:1733 logsrvd/sendlog.c:1801 -#: logsrvd/tls_init.c:305 logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 -#: plugins/sudoers/audit.c:116 plugins/sudoers/auth/pam.c:502 -#: plugins/sudoers/auth/pam.c:687 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:174 plugins/sudoers/cvtsudoers.c:191 -#: plugins/sudoers/cvtsudoers.c:202 plugins/sudoers/cvtsudoers.c:332 -#: plugins/sudoers/cvtsudoers.c:536 plugins/sudoers/cvtsudoers.c:669 -#: plugins/sudoers/cvtsudoers.c:687 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:869 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:182 plugins/sudoers/cvtsudoers_csv.c:245 -#: 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:375 -#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:437 -#: plugins/sudoers/cvtsudoers_ldif.c:448 plugins/sudoers/cvtsudoers_ldif.c:455 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:480 -#: plugins/sudoers/cvtsudoers_ldif.c:488 plugins/sudoers/cvtsudoers_ldif.c:635 -#: plugins/sudoers/cvtsudoers_merge.c:47 plugins/sudoers/cvtsudoers_merge.c:51 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:530 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:668 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:1132 +#: logsrvd/logsrvd.c:1447 logsrvd/logsrvd.c:1454 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 +#: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 +#: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 +#: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 +#: logsrvd/logsrvd_conf.c:626 logsrvd/logsrvd_conf.c:649 +#: logsrvd/logsrvd_conf.c:678 logsrvd/logsrvd_conf.c:692 +#: logsrvd/logsrvd_conf.c:706 logsrvd/logsrvd_conf.c:720 +#: logsrvd/logsrvd_conf.c:734 logsrvd/logsrvd_conf.c:748 +#: logsrvd/logsrvd_conf.c:829 logsrvd/logsrvd_conf.c:1036 +#: logsrvd/logsrvd_conf.c:1053 logsrvd/logsrvd_conf.c:1448 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1621 +#: logsrvd/logsrvd_conf.c:1633 logsrvd/logsrvd_conf.c:1640 +#: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1742 +#: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:125 +#: logsrvd/logsrvd_journal.c:216 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:250 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:290 +#: logsrvd/logsrvd_journal.c:438 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:466 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:491 +#: logsrvd/logsrvd_queue.c:158 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 +#: logsrvd/sendlog.c:292 logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 +#: logsrvd/sendlog.c:624 logsrvd/sendlog.c:1512 logsrvd/sendlog.c:1519 +#: logsrvd/sendlog.c:1742 logsrvd/sendlog.c:1810 logsrvd/tls_init.c:305 +#: logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/pam.c:502 plugins/sudoers/auth/pam.c:687 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/canon_path.c:129 +#: plugins/sudoers/canon_path.c:160 plugins/sudoers/check_aliases.c:168 +#: plugins/sudoers/cvtsudoers.c:132 plugins/sudoers/cvtsudoers.c:175 +#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:203 +#: plugins/sudoers/cvtsudoers.c:333 plugins/sudoers/cvtsudoers.c:537 +#: plugins/sudoers/cvtsudoers.c:690 plugins/sudoers/cvtsudoers.c:708 +#: plugins/sudoers/cvtsudoers.c:883 plugins/sudoers/cvtsudoers.c:890 +#: plugins/sudoers/cvtsudoers.c:1386 plugins/sudoers/cvtsudoers.c:1390 +#: plugins/sudoers/cvtsudoers.c:1492 plugins/sudoers/cvtsudoers_csv.c:182 +#: plugins/sudoers/cvtsudoers_csv.c:246 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:375 plugins/sudoers/cvtsudoers_ldif.c:429 +#: plugins/sudoers/cvtsudoers_ldif.c:437 plugins/sudoers/cvtsudoers_ldif.c:448 +#: plugins/sudoers/cvtsudoers_ldif.c:455 plugins/sudoers/cvtsudoers_ldif.c:467 +#: plugins/sudoers/cvtsudoers_ldif.c:480 plugins/sudoers/cvtsudoers_ldif.c:488 +#: plugins/sudoers/cvtsudoers_ldif.c:635 plugins/sudoers/cvtsudoers_merge.c:47 +#: plugins/sudoers/cvtsudoers_merge.c:51 #: plugins/sudoers/cvtsudoers_merge.c:353 #: plugins/sudoers/cvtsudoers_merge.c:399 #: plugins/sudoers/cvtsudoers_merge.c:445 @@ -337,42 +349,43 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1157 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:211 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:688 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:690 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:293 plugins/sudoers/ldap_util.c:300 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:228 #: plugins/sudoers/log_client.c:250 plugins/sudoers/log_client.c:264 -#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:715 -#: plugins/sudoers/log_client.c:736 plugins/sudoers/log_client.c:1415 -#: plugins/sudoers/log_client.c:1536 plugins/sudoers/log_client.c:1636 -#: plugins/sudoers/log_client.c:1972 plugins/sudoers/log_client.c:2031 -#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:188 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/logging.c:880 plugins/sudoers/logging.c:892 -#: plugins/sudoers/match_command.c:334 plugins/sudoers/match_command.c:602 -#: plugins/sudoers/match_command.c:653 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:775 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:266 plugins/sudoers/parse.c:283 -#: plugins/sudoers/parse.c:302 plugins/sudoers/parse.c:321 -#: plugins/sudoers/parse.c:338 plugins/sudoers/parse.c:361 -#: plugins/sudoers/parse.c:372 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:717 +#: plugins/sudoers/log_client.c:739 plugins/sudoers/log_client.c:744 +#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1544 +#: plugins/sudoers/log_client.c:1667 plugins/sudoers/log_client.c:1986 +#: plugins/sudoers/log_client.c:2045 plugins/sudoers/logging.c:110 +#: plugins/sudoers/logging.c:188 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:734 plugins/sudoers/logging.c:846 +#: plugins/sudoers/logging.c:899 plugins/sudoers/logging.c:906 +#: plugins/sudoers/match_command.c:294 plugins/sudoers/match_command.c:562 +#: plugins/sudoers/match_command.c:628 plugins/sudoers/match_command.c:724 +#: plugins/sudoers/match_command.c:769 plugins/sudoers/match_digest.c:82 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:295 +#: plugins/sudoers/parse.c:314 plugins/sudoers/parse.c:333 +#: plugins/sudoers/parse.c:350 plugins/sudoers/parse.c:373 +#: plugins/sudoers/parse.c:384 plugins/sudoers/parse_ldif.c:152 #: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 #: plugins/sudoers/parse_ldif.c:260 plugins/sudoers/parse_ldif.c:265 #: plugins/sudoers/parse_ldif.c:341 plugins/sudoers/parse_ldif.c:352 @@ -382,56 +395,60 @@ #: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:627 #: plugins/sudoers/parse_ldif.c:652 plugins/sudoers/parse_ldif.c:710 #: plugins/sudoers/parse_ldif.c:727 plugins/sudoers/parse_ldif.c:755 -#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:154 -#: plugins/sudoers/policy.c:163 plugins/sudoers/policy.c:172 -#: plugins/sudoers/policy.c:201 plugins/sudoers/policy.c:370 -#: plugins/sudoers/policy.c:385 plugins/sudoers/policy.c:387 -#: plugins/sudoers/policy.c:425 plugins/sudoers/policy.c:434 -#: plugins/sudoers/policy.c:482 plugins/sudoers/policy.c:492 -#: plugins/sudoers/policy.c:501 plugins/sudoers/policy.c:510 -#: plugins/sudoers/policy.c:519 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:166 +#: plugins/sudoers/policy.c:196 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:381 plugins/sudoers/policy.c:383 +#: plugins/sudoers/policy.c:421 plugins/sudoers/policy.c:430 +#: plugins/sudoers/policy.c:478 plugins/sudoers/policy.c:488 +#: plugins/sudoers/policy.c:497 plugins/sudoers/policy.c:506 +#: plugins/sudoers/policy.c:515 plugins/sudoers/policy.c:622 +#: plugins/sudoers/policy.c:1050 plugins/sudoers/prompt.c:93 #: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 #: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 #: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 #: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 #: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 plugins/sudoers/sssd.c:144 #: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 #: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 -#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:761 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:112 -#: plugins/sudoers/stubs.c:120 plugins/sudoers/sudoers.c:354 -#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:447 -#: plugins/sudoers/sudoers.c:464 plugins/sudoers/sudoers.c:505 -#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:902 -#: plugins/sudoers/sudoers.c:1054 plugins/sudoers/sudoers.c:1114 -#: plugins/sudoers/sudoers.c:1369 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:562 plugins/sudoers/sudoreplay.c:1278 -#: plugins/sudoers/sudoreplay.c:1334 plugins/sudoers/sudoreplay.c:1530 -#: plugins/sudoers/sudoreplay.c:1534 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:588 plugins/sudoers/timestamp.c:451 -#: plugins/sudoers/timestamp.c:495 plugins/sudoers/timestamp.c:1017 -#: plugins/sudoers/timestamp.c:1146 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1324 plugins/sudoers/sudoers.c:1513 +#: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 +#: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 #: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 #: plugins/sudoers/toke_util.c:160 plugins/sudoers/toke_util.c:200 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:150 -#: plugins/sudoers/visudo.c:385 plugins/sudoers/visudo.c:391 -#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:1056 toke.l:1031 -#: toke.l:1163 toke.l:1226 toke.l:1234 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1086 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1288 toke.l:1299 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:303 +#: lib/eventlog/eventlog.c:304 #, c-format msgid "unable to dup stdin: %m" msgstr "Die Standardeingabe kann nicht dupliziert werden: %m" -#: lib/eventlog/eventlog.c:345 +#: lib/eventlog/eventlog.c:346 #, c-format msgid "unable to execute %s: %m" msgstr "%s kann nicht ausgeführt werden: %m" @@ -450,96 +467,96 @@ msgid "unable to open pipe: %m" msgstr "Die Pipe kann nicht geöffnet werden: %m" -#: lib/eventlog/eventlog.c:960 +#: lib/eventlog/eventlog.c:958 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:989 +#: lib/eventlog/eventlog.c:987 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (Befehl fortgesetzt) %s" -#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1242 -#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 -#, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "ungültiger regulärer Ausdruck »%s«: %s" - -#: lib/iolog/iolog_json.c:140 +#: lib/eventlog/parse_json.c:175 #, c-format msgid "expected JSON_STRING, got %d" msgstr "JSON_STRING erwartet, aber »%d« bekommen" -#: lib/iolog/iolog_json.c:145 +#: lib/eventlog/parse_json.c:180 msgid "JSON_ARRAY too large" msgstr "Das JSON_ARRAY ist zu groß" -#: lib/iolog/iolog_json.c:404 +#: lib/eventlog/parse_json.c:494 msgid "missing double quote in name" msgstr "Im Name fehlt das doppelte Anführungszeichen" -#: lib/iolog/iolog_json.c:511 +#: lib/eventlog/parse_json.c:612 msgid "missing JSON_OBJECT" msgstr "JSON_OBJECT fehlt" -#: lib/iolog/iolog_json.c:515 +#: lib/eventlog/parse_json.c:616 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "JSON_OBJECT erwartet, aber »%d« bekommen" -#: lib/iolog/iolog_json.c:632 +#: lib/eventlog/parse_json.c:750 #, c-format msgid "json stack exhausted (max %u frames)" msgstr "json Stack erschöpft (maximal %u Frames)" -#: lib/iolog/iolog_json.c:706 +#: lib/eventlog/parse_json.c:828 msgid "objects must consist of name:value pairs" msgstr "Objekte müssen aus Name:Wert Paaren bestehen" -#: lib/iolog/iolog_json.c:711 lib/iolog/iolog_json.c:742 -#: lib/iolog/iolog_json.c:786 lib/iolog/iolog_json.c:808 -#: lib/iolog/iolog_json.c:830 lib/iolog/iolog_json.c:852 -#: lib/iolog/iolog_json.c:874 +#: lib/eventlog/parse_json.c:833 lib/eventlog/parse_json.c:864 +#: lib/eventlog/parse_json.c:908 lib/eventlog/parse_json.c:930 +#: lib/eventlog/parse_json.c:952 lib/eventlog/parse_json.c:974 +#: lib/eventlog/parse_json.c:996 msgid "missing separator between values" msgstr "Fehlender Separator zwischen den Werten" -#: lib/iolog/iolog_json.c:726 lib/iolog/iolog_json.c:900 +#: lib/eventlog/parse_json.c:848 lib/eventlog/parse_json.c:1022 msgid "unmatched close brace" msgstr "unpassende schließende geschweifte Klammer" -#: lib/iolog/iolog_json.c:737 +#: lib/eventlog/parse_json.c:859 msgid "unexpected array" msgstr "unerwartetes Array" -#: lib/iolog/iolog_json.c:757 lib/iolog/iolog_json.c:903 +#: lib/eventlog/parse_json.c:879 lib/eventlog/parse_json.c:1025 msgid "unmatched close bracket" msgstr "unpassende schließende eckige Klammer" -#: lib/iolog/iolog_json.c:768 +#: lib/eventlog/parse_json.c:890 msgid "unexpected string" msgstr "unerwartete Zeichenkette" -#: lib/iolog/iolog_json.c:779 +#: lib/eventlog/parse_json.c:901 msgid "missing colon after name" msgstr "fehlender Doppelpunkt nach dem Name" -#: lib/iolog/iolog_json.c:800 lib/iolog/iolog_json.c:822 +#: lib/eventlog/parse_json.c:922 lib/eventlog/parse_json.c:944 msgid "unexpected boolean" msgstr "unerwarteter boolescher Wert (true/false)" -#: lib/iolog/iolog_json.c:844 +#: lib/eventlog/parse_json.c:966 msgid "unexpected null" msgstr "unerwartete »null«" -#: lib/iolog/iolog_json.c:865 +#: lib/eventlog/parse_json.c:987 msgid "unexpected number" msgstr "unerwartete Zahl" -#: lib/iolog/iolog_json.c:912 +#: lib/eventlog/parse_json.c:1033 msgid "parse error" msgstr "Syntax-Fehler" +#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1241 +#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "ungültiger regulärer Ausdruck »%s«: %s" + #: lib/iolog/iolog_legacy.c:65 #, c-format msgid "%s: invalid log file" @@ -576,13 +593,13 @@ msgstr "%s existiert, aber ist kein Verzeichnis (0%o)" #: lib/iolog/iolog_mkdirs.c:123 lib/iolog/iolog_mkdtemp.c:79 -#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:209 +#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:234 #, c-format msgid "unable to mkdir %s" msgstr "Das Verzeichnis »%s« kann nicht erstellt werden" -#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:757 -#: plugins/sudoers/visudo.c:791 plugins/sudoers/visudo.c:797 +#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:760 +#: plugins/sudoers/visudo.c:794 plugins/sudoers/visudo.c:800 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "Ändern des Modus von %s auf 0%o gescheitert" @@ -614,8 +631,8 @@ msgid "%s: protocol error: NULL value found in %s" msgstr "%s: Protokollfehker: Wert NULL gefunden in %s" -#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:980 -#: plugins/sudoers/policy.c:593 +#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:993 +#: plugins/sudoers/policy.c:589 msgid "unable to generate UUID" msgstr "UUID kann nicht generiert werden" @@ -668,26 +685,26 @@ 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:763 logsrvd/logsrvd_journal.c:385 +#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:390 #, 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:785 logsrvd/logsrvd_journal.c:428 +#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:433 #: logsrvd/logsrvd_queue.c:115 logsrvd/tls_init.c:256 -#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:730 -#: plugins/sudoers/cvtsudoers.c:751 plugins/sudoers/cvtsudoers.c:1431 -#: plugins/sudoers/cvtsudoers_csv.c:695 plugins/sudoers/cvtsudoers_json.c:898 -#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1152 -#: plugins/sudoers/sudoers.c:1182 plugins/sudoers/sudoreplay.c:1496 -#: plugins/sudoers/timestamp.c:460 plugins/sudoers/tsdump.c:128 -#: plugins/sudoers/visudo.c:975 +#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:751 +#: plugins/sudoers/cvtsudoers.c:772 plugins/sudoers/cvtsudoers.c:1452 +#: plugins/sudoers/cvtsudoers_csv.c:697 plugins/sudoers/cvtsudoers_json.c:902 +#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1310 +#: plugins/sudoers/sudoers.c:1334 plugins/sudoers/sudoreplay.c:1496 +#: plugins/sudoers/timestamp.c:485 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:982 #, c-format msgid "unable to open %s" msgstr "Die Datei »%s« kann nicht geöffnet werden" -#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:105 -#: logsrvd/logsrv_util.c:112 plugins/sudoers/sudoreplay.c:355 +#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:111 +#: logsrvd/logsrv_util.c:118 plugins/sudoers/sudoreplay.c:355 #: plugins/sudoers/sudoreplay.c:361 #, c-format msgid "unable to open %s/%s" @@ -703,17 +720,17 @@ msgid "unable to rename %s to %s" msgstr "Die Datei »%s« kann nicht in »%s« umbenannt werden" -#: logsrvd/logsrv_util.c:147 logsrvd/logsrv_util.c:176 +#: logsrvd/logsrv_util.c:153 logsrvd/logsrv_util.c:182 #, 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/logsrv_util.c:159 +#: logsrvd/logsrv_util.c:165 #, c-format msgid "missing I/O log file %s/%s" msgstr "Die I/O Logdatei %s/%s fehlt" -#: logsrvd/logsrv_util.c:166 +#: logsrvd/logsrv_util.c:172 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: kann nicht zur Position %zu springen" @@ -722,31 +739,31 @@ msgid "unable to connect to relay" msgstr "Verbindung zum Relay kann nicht aufgebaut werden" -#: logsrvd/logsrvd.c:330 logsrvd/logsrvd_relay.c:842 +#: logsrvd/logsrvd.c:338 logsrvd/logsrvd_relay.c:844 #, c-format msgid "server message too large: %zu" msgstr "Server-Nachricht ist zu groß: %zu" -#: logsrvd/logsrvd.c:422 logsrvd/logsrvd.c:545 logsrvd/logsrvd.c:631 -#: logsrvd/logsrvd.c:873 logsrvd/logsrvd.c:887 logsrvd/logsrvd.c:1049 -#: logsrvd/logsrvd.c:1174 logsrvd/logsrvd.c:1347 logsrvd/logsrvd.c:1365 -#: logsrvd/logsrvd.c:1464 logsrvd/logsrvd.c:1589 logsrvd/logsrvd.c:1773 -#: logsrvd/logsrvd_journal.c:497 logsrvd/logsrvd_local.c:238 +#: logsrvd/logsrvd.c:430 logsrvd/logsrvd.c:553 logsrvd/logsrvd.c:639 +#: logsrvd/logsrvd.c:881 logsrvd/logsrvd.c:895 logsrvd/logsrvd.c:1057 +#: logsrvd/logsrvd.c:1182 logsrvd/logsrvd.c:1355 logsrvd/logsrvd.c:1373 +#: logsrvd/logsrvd.c:1472 logsrvd/logsrvd.c:1597 logsrvd/logsrvd.c:1784 +#: logsrvd/logsrvd_journal.c:502 logsrvd/logsrvd_local.c:238 #: logsrvd/logsrvd_queue.c:164 logsrvd/logsrvd_relay.c:172 #: logsrvd/logsrvd_relay.c:249 logsrvd/logsrvd_relay.c:253 -#: logsrvd/logsrvd_relay.c:389 logsrvd/logsrvd_relay.c:581 -#: logsrvd/logsrvd_relay.c:742 logsrvd/logsrvd_relay.c:1131 -#: logsrvd/sendlog.c:1291 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 -#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:278 -#: plugins/sudoers/iolog.c:1031 plugins/sudoers/iolog.c:1164 -#: plugins/sudoers/iolog.c:1262 plugins/sudoers/log_client.c:121 +#: logsrvd/logsrvd_relay.c:391 logsrvd/logsrvd_relay.c:583 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:1133 +#: logsrvd/sendlog.c:1300 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:277 +#: plugins/sudoers/iolog.c:1030 plugins/sudoers/iolog.c:1163 +#: plugins/sudoers/iolog.c:1261 plugins/sudoers/log_client.c:121 #: plugins/sudoers/log_client.c:343 plugins/sudoers/log_client.c:359 -#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:611 -#: plugins/sudoers/log_client.c:618 plugins/sudoers/log_client.c:1103 -#: plugins/sudoers/log_client.c:1384 plugins/sudoers/log_client.c:1425 -#: plugins/sudoers/log_client.c:1433 plugins/sudoers/log_client.c:1592 -#: plugins/sudoers/log_client.c:1710 plugins/sudoers/log_client.c:2039 -#: plugins/sudoers/log_client.c:2047 plugins/sudoers/logging.c:147 +#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:613 +#: plugins/sudoers/log_client.c:620 plugins/sudoers/log_client.c:1111 +#: plugins/sudoers/log_client.c:1392 plugins/sudoers/log_client.c:1433 +#: plugins/sudoers/log_client.c:1441 plugins/sudoers/log_client.c:1600 +#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:2053 +#: plugins/sudoers/log_client.c:2061 plugins/sudoers/logging.c:147 #: plugins/sudoers/logging.c:205 plugins/sudoers/sudoreplay.c:519 #: plugins/sudoers/sudoreplay.c:566 plugins/sudoers/sudoreplay.c:808 #: plugins/sudoers/sudoreplay.c:920 plugins/sudoers/sudoreplay.c:1011 @@ -756,190 +773,191 @@ msgid "unable to add event to queue" msgstr "Event kann nicht zur Warteschlange hinzugefügt werden" -#: logsrvd/logsrvd.c:446 logsrvd/logsrvd.c:483 logsrvd/logsrvd.c:515 -#: logsrvd/logsrvd.c:569 logsrvd/logsrvd.c:648 logsrvd/logsrvd.c:684 -#: logsrvd/logsrvd.c:720 logsrvd/logsrvd.c:756 logsrvd/logsrvd_relay.c:510 -#: logsrvd/logsrvd_relay.c:543 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:577 logsrvd/logsrvd.c:656 logsrvd/logsrvd.c:692 +#: logsrvd/logsrvd.c:728 logsrvd/logsrvd.c:764 logsrvd/logsrvd_relay.c:512 +#: logsrvd/logsrvd_relay.c:545 #, c-format msgid "unexpected state %d for %s" msgstr "Unerwarteter Status %d für %s" # XXX geht das besser? -#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 -#: logsrvd/logsrvd.c:570 logsrvd/logsrvd.c:649 logsrvd/logsrvd.c:685 -#: logsrvd/logsrvd.c:721 logsrvd/logsrvd.c:757 logsrvd/logsrvd_relay.c:512 -#: logsrvd/logsrvd_relay.c:545 +#: logsrvd/logsrvd.c:455 logsrvd/logsrvd.c:492 logsrvd/logsrvd.c:524 +#: logsrvd/logsrvd.c:578 logsrvd/logsrvd.c:657 logsrvd/logsrvd.c:693 +#: logsrvd/logsrvd.c:729 logsrvd/logsrvd.c:765 logsrvd/logsrvd_relay.c:514 +#: logsrvd/logsrvd_relay.c:547 msgid "state machine error" msgstr "Fehler der State Machine" -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:454 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:462 msgid "invalid AcceptMessage" msgstr "ungültige AcceptMessage" -#: logsrvd/logsrvd.c:490 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:499 msgid "invalid RejectMessage" msgstr "ungültige RejectMessage" -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:530 logsrvd/logsrvd.c:531 msgid "invalid ExitMessage" msgstr "ungültige ExitMessage" -#: logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:577 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:585 msgid "invalid RestartMessage" msgstr "ungültige RestartMessage" -#: logsrvd/logsrvd.c:611 logsrvd/logsrvd.c:612 +#: logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:620 msgid "invalid AlertMessage" msgstr "ungültige AlertMessage" -#: logsrvd/logsrvd.c:653 logsrvd/logsrvd.c:689 logsrvd/logsrvd.c:725 +#: logsrvd/logsrvd.c:661 logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:733 #, c-format msgid "%s: unexpected IoBuffer" msgstr "%s: unerwarteter IoBuffer" -#: logsrvd/logsrvd.c:654 logsrvd/logsrvd.c:690 logsrvd/logsrvd.c:726 +#: logsrvd/logsrvd.c:662 logsrvd/logsrvd.c:698 logsrvd/logsrvd.c:734 msgid "protocol error" msgstr "Protokollfehler" -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:661 +#: logsrvd/logsrvd.c:668 logsrvd/logsrvd.c:669 msgid "invalid IoBuffer" msgstr "Ungültiger IoBuffer" -#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:697 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:705 msgid "invalid ChangeWindowSize" msgstr "ungültige ChangeWindowSize" -#: logsrvd/logsrvd.c:732 logsrvd/logsrvd.c:733 +#: logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:741 msgid "invalid CommandSuspend" msgstr "ungültiges CommandSusped" -#: logsrvd/logsrvd.c:782 logsrvd/logsrvd_journal.c:296 -#: logsrvd/logsrvd_relay.c:652 logsrvd/sendlog.c:1192 -#: plugins/sudoers/log_client.c:1582 +#: logsrvd/logsrvd.c:790 logsrvd/logsrvd_journal.c:301 +#: logsrvd/logsrvd_relay.c:654 logsrvd/sendlog.c:1201 +#: plugins/sudoers/log_client.c:1590 #, c-format msgid "unable to unpack %s size %zu" msgstr "Kann »%s« nicht auspacken, Größe %zu" -#: logsrvd/logsrvd.c:827 logsrvd/logsrvd_journal.c:370 -#: logsrvd/logsrvd_relay.c:676 +#: logsrvd/logsrvd.c:835 logsrvd/logsrvd_journal.c:375 +#: logsrvd/logsrvd_relay.c:678 #, 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:829 +#: logsrvd/logsrvd.c:837 msgid "unrecognized ClientMessage type" msgstr "unbekannter ClientMessage-Typ" -#: logsrvd/logsrvd.c:919 +#: logsrvd/logsrvd.c:927 #, c-format msgid "timed out writing to client %s" msgstr "Zeitablauf beim Senden zum Client %s" -#: logsrvd/logsrvd.c:924 logsrvd/logsrvd_relay.c:914 logsrvd/sendlog.c:1395 +#: logsrvd/logsrvd.c:932 logsrvd/logsrvd_relay.c:916 logsrvd/sendlog.c:1404 #, c-format msgid "missing write buffer for client %s" msgstr "Schreib-Puffer fehlt für Client %s" -#: logsrvd/logsrvd.c:1020 +#: logsrvd/logsrvd.c:1028 #, c-format msgid "timed out reading from client %s" msgstr "Zeitablauf beim Lesen vom Client %s" -#: logsrvd/logsrvd.c:1061 logsrvd/logsrvd_relay.c:777 +#: logsrvd/logsrvd.c:1069 logsrvd/logsrvd_relay.c:779 #, c-format msgid "EOF from %s without proper TLS shutdown" msgstr "Dateiende (EOF) von %s ohne korrekten TLS-Abscluß" -#: logsrvd/logsrvd.c:1105 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:322 -#: plugins/sudoers/log_client.c:721 +#: logsrvd/logsrvd.c:1113 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:331 +#: plugins/sudoers/log_client.c:723 #, c-format msgid "client message too large: %zu" msgstr "Client-Nachricht ist zu groß: %zu" -#: logsrvd/logsrvd.c:1106 logsrvd/logsrvd_journal.c:259 +#: logsrvd/logsrvd.c:1114 logsrvd/logsrvd_journal.c:259 #: logsrvd/logsrvd_journal.c:260 msgid "client message too large" msgstr "Client-Nachricht ist zu groß" -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1125 +#: logsrvd/logsrvd.c:1132 logsrvd/logsrvd.c:1133 msgid "invalid ClientMessage" msgstr "ungültige ClientMessage" -#: logsrvd/logsrvd.c:1425 +#: logsrvd/logsrvd.c:1433 msgid "unable to get remote IP addr" msgstr "Kann die entfernte IP-Adresse nicht finden" -#: logsrvd/logsrvd.c:1456 logsrvd/tls_client.c:203 +#: logsrvd/logsrvd.c:1464 logsrvd/tls_client.c:203 #: plugins/sudoers/log_client.c:281 #, 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:1639 logsrvd/logsrvd.c:1992 +#: logsrvd/logsrvd.c:1647 logsrvd/logsrvd.c:2003 msgid "unable to setup listen socket" msgstr "Konnte keinen Socket zum »Lauschen« einrichten" -#: logsrvd/logsrvd.c:1756 +#: logsrvd/logsrvd.c:1767 #, c-format msgid "unexpected signal %d" msgstr "unerwartete Signal %d" -#: logsrvd/logsrvd.c:1894 +#: logsrvd/logsrvd.c:1905 msgid "sudo log server" msgstr "sudo Log-Server" -#: logsrvd/logsrvd.c:1896 logsrvd/sendlog.c:121 +#: logsrvd/logsrvd.c:1907 logsrvd/sendlog.c:121 msgid "Options:" msgstr "Optionen:" -#: logsrvd/logsrvd.c:1898 +#: logsrvd/logsrvd.c:1909 msgid "path to configuration file" msgstr "Pfad zur Konfigurationsdatei" -#: logsrvd/logsrvd.c:1900 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1911 logsrvd/sendlog.c:123 msgid "display help message and exit" msgstr "Hilfe anzeigen und beenden" -#: logsrvd/logsrvd.c:1902 +#: logsrvd/logsrvd.c:1913 msgid "do not fork, run in the foreground" msgstr "Nicht zum Hintergrundprozess werden, sondern im Vordergrund laufen" -#: logsrvd/logsrvd.c:1904 +#: logsrvd/logsrvd.c:1915 msgid "percent chance connections will drop" msgstr "Wahrscheinlichkeit in Prozent für Verbindungsabbruch" -#: logsrvd/logsrvd.c:1906 logsrvd/sendlog.c:153 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:153 msgid "display version information and exit" msgstr "Versionsinformation anzeigen und beenden" -#: logsrvd/logsrvd.c:1956 logsrvd/sendlog.c:1702 +#: logsrvd/logsrvd.c:1967 logsrvd/sendlog.c:1711 msgid "Protobuf-C version 1.3 or higher required" msgstr "Protobuf-C Version 1.3 oder höher ist notwendig" -#: logsrvd/logsrvd.c:1972 +#: logsrvd/logsrvd.c:1983 #, c-format msgid "invalid random drop value: %s" msgstr "ungültiger Wert für »random drop«: %s" -#: logsrvd/logsrvd.c:1975 logsrvd/sendlog.c:1756 -#: plugins/sudoers/cvtsudoers.c:246 plugins/sudoers/sudoreplay.c:294 -#: plugins/sudoers/visudo.c:182 +#: logsrvd/logsrvd.c:1986 logsrvd/sendlog.c:1765 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/sudoreplay.c:294 +#: plugins/sudoers/visudo.c:186 #, c-format msgid "%s version %s\n" msgstr "%s Version %s\n" #: logsrvd/logsrvd_conf.c:422 plugins/sudoers/check.c:358 #: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:122 -#: plugins/sudoers/policy.c:1271 plugins/sudoers/sudoers.c:512 -#: plugins/sudoers/sudoers.c:1411 plugins/sudoers/testsudoers.c:215 -#: plugins/sudoers/testsudoers.c:382 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:939 +#: plugins/sudoers/sudoers.c:1041 plugins/sudoers/sudoers.c:1062 +#: plugins/sudoers/sudoers.c:1555 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:393 #, c-format msgid "unknown user %s" msgstr "Unbekannter Benutzer %s" #: logsrvd/logsrvd_conf.c:439 plugins/sudoers/iolog.c:148 -#: plugins/sudoers/sudoers.c:517 plugins/sudoers/sudoers.c:1445 -#: plugins/sudoers/testsudoers.c:406 +#: plugins/sudoers/sudoers.c:453 plugins/sudoers/sudoers.c:1589 +#: plugins/sudoers/testsudoers.c:417 #, c-format msgid "unknown group %s" msgstr "Unbekannte Gruppe %s" @@ -1012,8 +1030,8 @@ msgid "%s:%d [%s] illegal key: %s" msgstr "%s:%d [%s] ungültiger Schlüssel: %s" -#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:268 -#: plugins/sudoers/logging.c:1033 +#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:269 +#: plugins/sudoers/logging.c:1046 #, c-format msgid "unable to open log file %s" msgstr "Die Protokolldatei kann nicht geöffnet werden %s" @@ -1026,13 +1044,13 @@ msgid "unable to initialize relay TLS context" msgstr "SSL-Kontext kann nicht initialisiert werden" -#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:424 -#: logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:434 msgid "unable to create journal file" msgstr "Kann die Journal-Datei nicht anlegen" #: logsrvd/logsrvd_journal.c:153 logsrvd/logsrvd_queue.c:109 -#: plugins/sudoers/visudo.c:1028 +#: plugins/sudoers/visudo.c:1038 #, c-format msgid "unable to lock %s" msgstr "Die Datei »%s« kann nicht gesperrt werden" @@ -1045,8 +1063,8 @@ msgid "unable to open journal file" msgstr "Die Journal-Datei kann nicht geöffnet werden" -#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:460 -#: logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:470 msgid "unable to write journal file" msgstr "In die Logdatei kann nicht geschrieben werden" @@ -1055,20 +1073,20 @@ msgstr "Die Journal-Datei kann nicht geöffnet werden" #: logsrvd/logsrvd_journal.c:247 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:282 logsrvd/logsrvd_journal.c:283 +#: logsrvd/logsrvd_journal.c:287 logsrvd/logsrvd_journal.c:288 msgid "unexpected EOF reading journal file" msgstr "unerwartetes Dateiende beim Lesen der Journal-Datei" #: logsrvd/logsrvd_journal.c:251 logsrvd/logsrvd_journal.c:252 -#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:287 +#: logsrvd/logsrvd_journal.c:291 logsrvd/logsrvd_journal.c:292 msgid "error reading journal file" msgstr "Fehler beim Lesen der Journal-Datei" -#: logsrvd/logsrvd_journal.c:298 logsrvd/logsrvd_journal.c:384 +#: logsrvd/logsrvd_journal.c:303 logsrvd/logsrvd_journal.c:389 msgid "invalid journal file, unable to restart" msgstr "Ungültige Journal-Datei - kann nicht neu starten" -#: logsrvd/logsrvd_journal.c:443 +#: logsrvd/logsrvd_journal.c:448 #, c-format msgid "unable to seek to [%lld, %ld] in journal file %s" msgstr "Kann nicht zu [%lld, %ld] in der Journaldatei »%s« springen" @@ -1126,7 +1144,7 @@ #: logsrvd/logsrvd_local.c:599 logsrvd/logsrvd_local.c:607 #: logsrvd/logsrvd_local.c:655 logsrvd/logsrvd_local.c:690 -#: plugins/sudoers/sudoreplay.c:344 +#: plugins/sudoers/sudoreplay.c:344 toke.l:982 toke.l:985 #, c-format msgid "%s/%s: %s" msgstr "%s/%s: %s" @@ -1147,69 +1165,69 @@ msgid "error writing CommandSuspend" msgstr "Fehler beim Schreiben des CommandSusped" -#: logsrvd/logsrvd_relay.c:435 +#: logsrvd/logsrvd_relay.c:437 msgid "TLS handshake with relay host failed" msgstr "TLS-Handshake mit dem Relay-Host fehlgeschlagen" -#: logsrvd/logsrvd_relay.c:463 +#: logsrvd/logsrvd_relay.c:465 msgid "unable to connect to relay host" msgstr "Verbindung zum Relay-Host kann nicht aufgebaut werden" -#: logsrvd/logsrvd_relay.c:518 +#: logsrvd/logsrvd_relay.c:520 #, c-format msgid "%s: invalid ServerHello, missing server_id" msgstr "%s: ungültiges ServerHello, fehlende server_id" -#: logsrvd/logsrvd_relay.c:520 logsrvd/sendlog.c:1096 -#: plugins/sudoers/log_client.c:1468 +#: logsrvd/logsrvd_relay.c:522 logsrvd/sendlog.c:1105 +#: plugins/sudoers/log_client.c:1476 msgid "invalid ServerHello" msgstr "ungültiges ServerHello" -#: logsrvd/logsrvd_relay.c:679 +#: logsrvd/logsrvd_relay.c:681 msgid "unrecognized ServerMessage type" msgstr "unbekannter ServerMessage-Typ" -#: logsrvd/logsrvd_relay.c:708 +#: logsrvd/logsrvd_relay.c:710 #, c-format msgid "timed out reading from relay %s (%s)" msgstr "Zeitablauf beim Lesen vom Relay-Server »%s« (%s)" -#: logsrvd/logsrvd_relay.c:710 +#: logsrvd/logsrvd_relay.c:712 msgid "timeout reading from relay" msgstr "Zeitablauf beim Lesen vom Relay-Server" -#: logsrvd/logsrvd_relay.c:762 +#: logsrvd/logsrvd_relay.c:764 msgid "relay host name does not match certificate" msgstr "Der Name des Relay-Hosts passt nicht zum Zertifikat" -#: logsrvd/logsrvd_relay.c:768 logsrvd/logsrvd_relay.c:782 -#: logsrvd/logsrvd_relay.c:789 +#: logsrvd/logsrvd_relay.c:770 logsrvd/logsrvd_relay.c:784 +#: logsrvd/logsrvd_relay.c:791 msgid "error reading from relay" msgstr "Fehler beim Lesen vom Relay-Host" -#: logsrvd/logsrvd_relay.c:810 +#: logsrvd/logsrvd_relay.c:812 msgid "unable to read from relay" msgstr "Vom Relay-Server kann nicht gelesen werden" -#: logsrvd/logsrvd_relay.c:825 logsrvd/logsrvd_relay.c:943 +#: logsrvd/logsrvd_relay.c:827 logsrvd/logsrvd_relay.c:945 msgid "relay server closed connection" msgstr "Der Relay-Server hat die Verbindung geschlossen" -#: logsrvd/logsrvd_relay.c:843 +#: logsrvd/logsrvd_relay.c:845 msgid "server message too large" msgstr "Server-Nachricht ist zu groß" -#: logsrvd/logsrvd_relay.c:907 +#: logsrvd/logsrvd_relay.c:909 #, c-format msgid "timed out writing to relay %s (%s)" msgstr "Zeitablauf beim Senden an den Relay-Server »%s« (%s)" -#: logsrvd/logsrvd_relay.c:909 +#: logsrvd/logsrvd_relay.c:911 msgid "timeout writing to relay" msgstr "Zeitablauf beim Senden an den Relay-Server" -#: logsrvd/logsrvd_relay.c:962 logsrvd/logsrvd_relay.c:969 -#: logsrvd/logsrvd_relay.c:981 +#: logsrvd/logsrvd_relay.c:964 logsrvd/logsrvd_relay.c:971 +#: logsrvd/logsrvd_relay.c:983 msgid "error writing to relay" msgstr "Fehler beim Schreiben des zum Relay-Server" @@ -1274,79 +1292,79 @@ msgid "unable to get server IP addr" msgstr "Kann die Server IP-Adresse nicht finden" -#: logsrvd/sendlog.c:300 plugins/sudoers/sudoreplay.c:868 +#: logsrvd/sendlog.c:309 plugins/sudoers/sudoreplay.c:868 #, c-format msgid "unable to read %s/%s: %s" msgstr "Fehler beim Lesen %s/%s: %s" -#: logsrvd/sendlog.c:1020 plugins/sudoers/iolog.c:949 -#: plugins/sudoers/iolog.c:1024 +#: logsrvd/sendlog.c:1029 plugins/sudoers/iolog.c:948 +#: plugins/sudoers/iolog.c:1023 #, c-format msgid "unexpected I/O event %d" msgstr "unerwarteter I/O Event %d" -#: logsrvd/sendlog.c:1073 logsrvd/sendlog.c:1090 logsrvd/sendlog.c:1124 -#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1394 -#: plugins/sudoers/log_client.c:1462 plugins/sudoers/log_client.c:1501 +#: logsrvd/sendlog.c:1082 logsrvd/sendlog.c:1099 logsrvd/sendlog.c:1133 +#: plugins/sudoers/log_client.c:1126 plugins/sudoers/log_client.c:1402 +#: plugins/sudoers/log_client.c:1470 plugins/sudoers/log_client.c:1509 #, c-format msgid "%s: unexpected state %d" msgstr "%s: unerwarteter Status %d" -#: logsrvd/sendlog.c:1160 plugins/sudoers/log_client.c:1550 +#: logsrvd/sendlog.c:1169 plugins/sudoers/log_client.c:1558 #, c-format msgid "error message received from server: %s" msgstr "Fehler beim Empfangen der Nachricht vom Server: %s" -#: logsrvd/sendlog.c:1173 plugins/sudoers/log_client.c:1563 +#: logsrvd/sendlog.c:1182 plugins/sudoers/log_client.c:1571 #, c-format msgid "abort message received from server: %s" msgstr "Abbruch-Nachricht vom Server empfangen: %s" -#: logsrvd/sendlog.c:1232 plugins/sudoers/log_client.c:1613 +#: logsrvd/sendlog.c:1241 plugins/sudoers/log_client.c:1621 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: unerwarteter type_case Wert %d" -#: logsrvd/sendlog.c:1261 +#: logsrvd/sendlog.c:1270 msgid "timeout reading from server" msgstr "Zeitablauf beim Lesen vom Server" -#: logsrvd/sendlog.c:1310 plugins/sudoers/log_client.c:1729 +#: logsrvd/sendlog.c:1319 plugins/sudoers/log_client.c:1743 msgid "host name does not match certificate" msgstr "Der Hostname passt nicht zum Zertifikat" -#: logsrvd/sendlog.c:1343 +#: logsrvd/sendlog.c:1352 msgid "premature EOF" msgstr "unerwartetes Datei-Ende" -#: logsrvd/sendlog.c:1356 plugins/sudoers/log_client.c:1776 +#: logsrvd/sendlog.c:1365 plugins/sudoers/log_client.c:1790 #, c-format msgid "server message too large: %u" msgstr "Server-Nachricht ist zu groß: %u" -#: logsrvd/sendlog.c:1412 +#: logsrvd/sendlog.c:1421 msgid "timeout writing to server" msgstr "Zeitablauf beim Senden an den Server" -#: logsrvd/sendlog.c:1779 +#: logsrvd/sendlog.c:1788 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:1783 +#: logsrvd/sendlog.c:1792 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:1859 +#: logsrvd/sendlog.c:1868 #, c-format msgid "exited prematurely with state %d" msgstr "Vorzeitig beendet mit Status %d" -#: logsrvd/sendlog.c:1860 +#: logsrvd/sendlog.c:1869 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "Abgelaufene Zeit zum Server gesendet [%lld, %ld]" -#: logsrvd/sendlog.c:1862 +#: logsrvd/sendlog.c:1871 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "Commit Punkt vom Server empfangen [%lld, %ld]" @@ -1404,12 +1422,12 @@ msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "Kann die minimale Protokollversion nicht auf TLS 1.2 setzen: %s" -#: plugins/sudoers/audit.c:269 plugins/sudoers/audit.c:429 -#: plugins/sudoers/log_client.c:951 plugins/sudoers/log_client.c:1000 -#: plugins/sudoers/log_client.c:1049 plugins/sudoers/log_client.c:1174 -#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:693 -#: plugins/sudoers/logging.c:796 plugins/sudoers/logging.c:987 -#: plugins/sudoers/policy.c:125 +#: plugins/sudoers/audit.c:268 plugins/sudoers/audit.c:428 +#: plugins/sudoers/log_client.c:959 plugins/sudoers/log_client.c:1008 +#: plugins/sudoers/log_client.c:1057 plugins/sudoers/log_client.c:1182 +#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:711 +#: plugins/sudoers/logging.c:833 plugins/sudoers/logging.c:1000 +#: plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "Die aktuelle Zeit kann nicht ausgelesen werden" @@ -1418,28 +1436,28 @@ msgid "unable to change password for %s" msgstr "Das Passwort für %s« kann nicht geändert werden" -#: plugins/sudoers/auth/bsdauth.c:74 +#: plugins/sudoers/auth/bsdauth.c:77 #, c-format msgid "unable to get login class for user %s" msgstr "Die Anmeldeklasse des Benutzers »%s« kann nicht gelesen werden" -#: plugins/sudoers/auth/bsdauth.c:79 -msgid "unable to begin bsd authentication" -msgstr "Die BSD-Authentifizierung kann nicht begonnen werden" - -#: plugins/sudoers/auth/bsdauth.c:87 +#: plugins/sudoers/auth/bsdauth.c:84 msgid "invalid authentication type" msgstr "Ungültiger Authentifizierungstyp" +#: plugins/sudoers/auth/bsdauth.c:89 +msgid "unable to begin BSD authentication" +msgstr "Die BSD-Authentifizierung kann nicht begonnen werden" + #: plugins/sudoers/auth/bsdauth.c:96 msgid "unable to initialize BSD authentication" msgstr "Die BSD-Authentifizierung kann nicht begonnen werden" -#: plugins/sudoers/auth/bsdauth.c:186 +#: plugins/sudoers/auth/bsdauth.c:188 msgid "your account has expired" msgstr "Ihr Account ist abgelaufen" -#: plugins/sudoers/auth/bsdauth.c:188 +#: plugins/sudoers/auth/bsdauth.c:190 msgid "approval failed" msgstr "Genehmigung fehlgeschlagen" @@ -1659,13 +1677,12 @@ "\n" #: plugins/sudoers/check.c:353 plugins/sudoers/check.c:363 -#: plugins/sudoers/parse.c:82 plugins/sudoers/sudoers.c:945 -#: plugins/sudoers/sudoers.c:966 plugins/sudoers/tsdump.c:119 +#: plugins/sudoers/parse.c:80 plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid %u" msgstr "Unbekannte Benutzer-ID %u" -#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1279 +#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1278 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" @@ -1680,84 +1697,84 @@ msgid "%s \"%s\" referenced but not defined" msgstr "%s »%s« wird verwendet, ist aber nicht definiert" -#: plugins/sudoers/cvtsudoers.c:209 +#: plugins/sudoers/cvtsudoers.c:210 #, c-format msgid "order increment: %s: %s" msgstr "Schrittgröße: %s: %s" -#: plugins/sudoers/cvtsudoers.c:228 +#: plugins/sudoers/cvtsudoers.c:229 #, c-format msgid "starting order: %s: %s" msgstr "Start der Folge: %s: %s" -#: plugins/sudoers/cvtsudoers.c:238 +#: plugins/sudoers/cvtsudoers.c:239 #, c-format msgid "order padding: %s: %s" msgstr "Auffüllen der Folge: %s: %s" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/visudo.c:184 +#: plugins/sudoers/cvtsudoers.c:249 plugins/sudoers/visudo.c:188 #, c-format msgid "%s grammar version %d\n" msgstr "%s-Grammatik Version %d\n" -#: plugins/sudoers/cvtsudoers.c:277 plugins/sudoers/testsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:278 plugins/sudoers/testsudoers.c:163 #, c-format msgid "unsupported input format %s" msgstr "Nicht unterstütztes Eingabeformat %s" -#: plugins/sudoers/cvtsudoers.c:295 +#: plugins/sudoers/cvtsudoers.c:296 #, c-format msgid "unsupported output format %s" msgstr "Nicht unterstütztes Ausgabeformat %s" -#: plugins/sudoers/cvtsudoers.c:385 +#: plugins/sudoers/cvtsudoers.c:386 #, c-format msgid "%s: input and output files must be different" msgstr "%s: Eingabe- und Ausgabedatei müssen unterschiedlich sein" -#: plugins/sudoers/cvtsudoers.c:399 plugins/sudoers/sudoers.c:166 -#: plugins/sudoers/sudoers.c:222 plugins/sudoers/testsudoers.c:254 -#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:654 +#: plugins/sudoers/cvtsudoers.c:400 plugins/sudoers/sudoers.c:163 +#: plugins/sudoers/sudoers.c:221 plugins/sudoers/testsudoers.c:263 +#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:657 msgid "unable to initialize sudoers default values" msgstr "Standardwerte für sudoers können nicht initialisiert werden" -#: plugins/sudoers/cvtsudoers.c:525 plugins/sudoers/ldap_conf.c:434 +#: plugins/sudoers/cvtsudoers.c:526 plugins/sudoers/ldap_conf.c:431 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" -#: plugins/sudoers/cvtsudoers.c:584 +#: plugins/sudoers/cvtsudoers.c:605 #, c-format msgid "%s: unknown key word %s" msgstr "%s: unbekanntes Schlüsselwort %s" -#: plugins/sudoers/cvtsudoers.c:630 +#: plugins/sudoers/cvtsudoers.c:651 #, c-format msgid "invalid defaults type: %s" msgstr "Ungültiger Standardtyp: %s" -#: plugins/sudoers/cvtsudoers.c:653 +#: plugins/sudoers/cvtsudoers.c:674 #, c-format msgid "invalid suppression type: %s" msgstr "ungültiger suppression Typ: %s" -#: plugins/sudoers/cvtsudoers.c:694 plugins/sudoers/cvtsudoers.c:710 +#: plugins/sudoers/cvtsudoers.c:715 plugins/sudoers/cvtsudoers.c:731 #, c-format msgid "invalid filter: %s" msgstr "Ungültiger Filter: %s" -#: plugins/sudoers/cvtsudoers.c:754 plugins/sudoers/visudo.c:982 +#: plugins/sudoers/cvtsudoers.c:775 plugins/sudoers/visudo.c:992 #, c-format msgid "failed to parse %s file, unknown error" msgstr "Analyse der Datei %s gescheitert, unbekannter Fehler" -#: plugins/sudoers/cvtsudoers.c:1478 plugins/sudoers/sudoreplay.c:1142 -#: plugins/sudoers/timestamp.c:343 plugins/sudoers/timestamp.c:346 +#: plugins/sudoers/cvtsudoers.c:1499 plugins/sudoers/sudoreplay.c:1142 +#: plugins/sudoers/timestamp.c:368 plugins/sudoers/timestamp.c:371 #, c-format msgid "unable to write to %s" msgstr "In die Datei »%s« kann nicht geschrieben werden" -#: plugins/sudoers/cvtsudoers.c:1506 +#: plugins/sudoers/cvtsudoers.c:1527 #, c-format msgid "" "%s - convert between sudoers file formats\n" @@ -1766,7 +1783,7 @@ "%s – zwischen sudoers Dateiformaten konvertieren\n" "\n" -#: plugins/sudoers/cvtsudoers.c:1508 +#: plugins/sudoers/cvtsudoers.c:1529 msgid "" "\n" "Options:\n" @@ -1809,37 +1826,36 @@ #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 #: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:340 #: plugins/sudoers/env.c:347 plugins/sudoers/env.c:458 -#: plugins/sudoers/ldap.c:528 plugins/sudoers/ldap.c:761 -#: plugins/sudoers/ldap.c:1134 plugins/sudoers/ldap_conf.c:222 -#: plugins/sudoers/ldap_conf.c:313 plugins/sudoers/ldap_util.c:486 +#: plugins/sudoers/ldap.c:509 plugins/sudoers/ldap.c:626 +#: plugins/sudoers/ldap.c:999 plugins/sudoers/ldap_conf.c:219 +#: plugins/sudoers/ldap_conf.c:310 plugins/sudoers/ldap_util.c:486 #: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:461 -#: plugins/sudoers/logging.c:817 plugins/sudoers/logging.c:827 -#: plugins/sudoers/policy.c:807 plugins/sudoers/policy.c:818 +#: plugins/sudoers/policy.c:824 plugins/sudoers/policy.c:835 #: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 #: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/sudoreplay.c:1339 plugins/sudoers/sudoreplay.c:1345 -#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/toke_util.c:213 toke.l:995 toke.l:1197 +#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/toke_util.c:213 toke.l:996 toke.l:1259 #, c-format msgid "internal error, %s overflow" msgstr "Interner Fehler, %s-Überlauf" -#: plugins/sudoers/cvtsudoers_csv.c:452 plugins/sudoers/cvtsudoers_csv.c:466 -#: plugins/sudoers/cvtsudoers_json.c:657 plugins/sudoers/cvtsudoers_json.c:672 +#: plugins/sudoers/cvtsudoers_csv.c:454 plugins/sudoers/cvtsudoers_csv.c:468 +#: plugins/sudoers/cvtsudoers_json.c:661 plugins/sudoers/cvtsudoers_json.c:676 #: plugins/sudoers/cvtsudoers_ldif.c:347 plugins/sudoers/cvtsudoers_ldif.c:360 -#: plugins/sudoers/ldap.c:512 +#: plugins/sudoers/ldap.c:493 msgid "unable to get GMT time" msgstr "Die GMT-Zeit kann nicht bekommen werden" -#: plugins/sudoers/cvtsudoers_csv.c:457 plugins/sudoers/cvtsudoers_csv.c:471 -#: plugins/sudoers/cvtsudoers_json.c:662 plugins/sudoers/cvtsudoers_json.c:677 +#: plugins/sudoers/cvtsudoers_csv.c:459 plugins/sudoers/cvtsudoers_csv.c:473 +#: plugins/sudoers/cvtsudoers_json.c:666 plugins/sudoers/cvtsudoers_json.c:681 #: plugins/sudoers/cvtsudoers_ldif.c:352 plugins/sudoers/cvtsudoers_ldif.c:365 -#: plugins/sudoers/ldap.c:520 +#: plugins/sudoers/ldap.c:501 msgid "unable to format timestamp" msgstr "Der Zeitstempel kann nicht formatiert werden" -#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:515 -#: plugins/sudoers/cvtsudoers_json.c:728 +#: plugins/sudoers/cvtsudoers_json.c:481 plugins/sudoers/cvtsudoers_json.c:516 +#: plugins/sudoers/cvtsudoers_json.c:732 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" msgstr "%s:%d:%d: unbekannter defaults-Eintrag »%s«" @@ -2653,18 +2669,18 @@ msgid "value \"%s\" is invalid for option \"%s\"" msgstr "Der Wert »%s« ist für die Option »%s« ungültig" -#: plugins/sudoers/defaults.c:1128 plugins/sudoers/policy.c:210 -#: plugins/sudoers/policy.c:219 +#: plugins/sudoers/defaults.c:1127 plugins/sudoers/policy.c:205 +#: plugins/sudoers/policy.c:214 #, c-format msgid "path name for \"%s\" too long" msgstr "Pfadname für »%s« ist zu lang" -#: plugins/sudoers/defaults.c:1134 +#: plugins/sudoers/defaults.c:1133 #, c-format msgid "values for \"%s\" must start with a '/', '~', or '*'" msgstr "Werte für »%s« müssen mit »/«, »~« oder »*« beginnen" -#: plugins/sudoers/defaults.c:1141 +#: plugins/sudoers/defaults.c:1140 #, c-format msgid "values for \"%s\" must start with a '/'" msgstr "Werte für »%s« müssen mit einem »/« beginnen" @@ -2691,12 +2707,12 @@ 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/filedigest.c:49 +#: plugins/sudoers/filedigest.c:50 #, c-format -msgid "unsupported digest type %d for %s" -msgstr "Prüfsummentyp %d wird für %s nicht unterstützt" +msgid "unsupported digest type %u for %s" +msgstr "Prüfsummentyp %u wird für %s nicht unterstützt" -#: plugins/sudoers/filedigest.c:78 +#: plugins/sudoers/filedigest.c:79 #, c-format msgid "%s: read error" msgstr "%s: Fehler beim Lesen" @@ -2730,80 +2746,80 @@ msgid "Local IP address and netmask pairs:\n" msgstr "Lokale IP-Adresse und Netzmaske:\n" -#: plugins/sudoers/iolog.c:685 +#: plugins/sudoers/iolog.c:684 msgid "unable to update sequence file" msgstr "Kann die Sequenz-Datei nicht aktualisieren" -#: plugins/sudoers/iolog.c:719 plugins/sudoers/iolog.c:907 -#: plugins/sudoers/iolog.c:1069 plugins/sudoers/iolog.c:1076 -#: plugins/sudoers/iolog.c:1197 plugins/sudoers/iolog.c:1204 -#: plugins/sudoers/iolog.c:1303 plugins/sudoers/iolog.c:1310 +#: plugins/sudoers/iolog.c:718 plugins/sudoers/iolog.c:906 +#: plugins/sudoers/iolog.c:1068 plugins/sudoers/iolog.c:1075 +#: plugins/sudoers/iolog.c:1196 plugins/sudoers/iolog.c:1203 +#: plugins/sudoers/iolog.c:1302 plugins/sudoers/iolog.c:1309 #, 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:727 +#: plugins/sudoers/iolog.c:726 #, c-format msgid "unable to create %s/%s" msgstr "Die Datei %s%s kann nicht erstellt werden" -#: plugins/sudoers/iolog.c:955 +#: plugins/sudoers/iolog.c:954 #, 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:1054 plugins/sudoers/iolog.c:1182 -#: plugins/sudoers/iolog.c:1287 plugins/sudoers/timestamp.c:879 -#: plugins/sudoers/timestamp.c:971 plugins/sudoers/visudo.c:556 -#: plugins/sudoers/visudo.c:562 +#: plugins/sudoers/iolog.c:1053 plugins/sudoers/iolog.c:1181 +#: plugins/sudoers/iolog.c:1286 plugins/sudoers/timestamp.c:904 +#: plugins/sudoers/timestamp.c:996 plugins/sudoers/visudo.c:559 +#: plugins/sudoers/visudo.c:565 msgid "unable to read the clock" msgstr "Die Uhrzeit kann nicht ausgelesen werden" -#: plugins/sudoers/iolog.c:1279 plugins/sudoers/log_client.c:1192 -#: plugins/sudoers/log_client.c:1202 plugins/sudoers/log_client.c:1206 +#: plugins/sudoers/iolog.c:1278 plugins/sudoers/log_client.c:1200 +#: plugins/sudoers/log_client.c:1210 plugins/sudoers/log_client.c:1214 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: Interner Fehler, ungültiges Signal %d" -#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:292 +#: plugins/sudoers/ldap.c:154 plugins/sudoers/ldap_conf.c:289 msgid "starttls not supported when using ldaps" msgstr "starttls wird für ldaps nicht unterstützt" -#: plugins/sudoers/ldap.c:248 +#: plugins/sudoers/ldap.c:225 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "Die Zertifikat- und Schlüsseldatenbank für SSL kann nicht initialisiert werden: %s" -#: plugins/sudoers/ldap.c:251 +#: plugins/sudoers/ldap.c:228 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "In der Datei »%s« muss »TLS_CERT« angegeben sein, um SSL zu nutzen" -#: plugins/sudoers/ldap.c:1714 +#: plugins/sudoers/ldap.c:1587 #, c-format msgid "unable to initialize LDAP: %s" msgstr "LDAP kann nicht initialisiert werden: %s" -#: plugins/sudoers/ldap.c:1751 +#: plugins/sudoers/ldap.c:1624 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "start_tls ist angegeben, aber die LDAP-Bibliotheken unterstützen ldap_start_tls_s() und ldap_start_tls_s_np() nicht" -#: plugins/sudoers/ldap.c:1888 plugins/sudoers/parse_ldif.c:748 +#: plugins/sudoers/ldap.c:1761 plugins/sudoers/parse_ldif.c:748 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "Ungültiges »sudoOrder« Attribut: %s" -#: plugins/sudoers/ldap_conf.c:200 +#: plugins/sudoers/ldap_conf.c:197 #, c-format msgid "%s: port too large" msgstr "%s: Portnummer ist zu groß" -#: plugins/sudoers/ldap_conf.c:261 +#: plugins/sudoers/ldap_conf.c:258 #, c-format msgid "unsupported LDAP uri type: %s" msgstr "LDAP-Adresstyp wird nicht unterstützt: %s" -#: plugins/sudoers/ldap_conf.c:288 +#: plugins/sudoers/ldap_conf.c:285 msgid "unable to mix ldap and ldaps URIs" msgstr "ldap- und ldaps-Adressen können nicht zusammen verwendet werden" @@ -2829,7 +2845,7 @@ msgstr "Die Audit-Nachricht kann nicht gesendet werden" #: plugins/sudoers/log_client.c:125 plugins/sudoers/log_client.c:412 -#: plugins/sudoers/log_client.c:1439 plugins/sudoers/log_client.c:2055 +#: plugins/sudoers/log_client.c:1447 plugins/sudoers/log_client.c:2069 msgid "error in event loop" msgstr "Fehler in der Event-Schleife" @@ -2863,28 +2879,28 @@ msgid "TLS connection to %s:%s failed: %s" msgstr "TLS Verbindung zu %s:%s fehlgeschlagen: %s" -#: plugins/sudoers/log_client.c:543 +#: plugins/sudoers/log_client.c:545 msgid "TLS initialization was unsuccessful" msgstr "TLS Initialisierung war nicht erfolgreich" -#: plugins/sudoers/log_client.c:553 +#: plugins/sudoers/log_client.c:555 msgid "TLS handshake was unsuccessful" msgstr "TLS Handshake war nicht erfolgreich" -#: plugins/sudoers/log_client.c:1210 +#: plugins/sudoers/log_client.c:1218 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: Interner Fehler, ungültiger Exit-Status %d" -#: plugins/sudoers/log_client.c:1739 plugins/sudoers/log_client.c:1763 +#: plugins/sudoers/log_client.c:1753 plugins/sudoers/log_client.c:1777 msgid "lost connection to log server" msgstr "Verbindung zum Logserver verloren" -#: plugins/sudoers/log_client.c:1840 +#: plugins/sudoers/log_client.c:1854 msgid "missing write buffer" msgstr "Schreib-Puffer fehlt" -#: plugins/sudoers/log_client.c:1994 +#: plugins/sudoers/log_client.c:2008 msgid "unable to connect to log server" msgstr "Verbindung zum Logserver kann nicht aufgebaut werden" @@ -2919,22 +2935,22 @@ #: plugins/sudoers/logging.c:324 #, 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" +msgid "Sorry, user %s is not allowed to execute '%s%s%s%s' as %s%s%s on %s.\n" +msgstr "Leider darf der Benutzer %s »%s%s%s%s« als %s%s%s auf %s nicht ausführen.\n" #: plugins/sudoers/logging.c:334 msgid "This incident has been reported to the administrator.\n" msgstr "Dieser Vorfall wurde an den Administrator gemeldet.\n" -#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:657 plugins/sudoers/sudoers.c:659 -#: plugins/sudoers/sudoers.c:661 plugins/sudoers/sudoers.c:816 -#: plugins/sudoers/sudoers.c:818 +#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:566 +#: plugins/sudoers/sudoers.c:567 plugins/sudoers/sudoers.c:569 +#: plugins/sudoers/sudoers.c:570 plugins/sudoers/sudoers.c:791 +#: plugins/sudoers/sudoers.c:793 #, c-format msgid "%s: command not found" msgstr "%s: Befehl nicht gefunden" -#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:651 +#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:562 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2958,31 +2974,31 @@ msgid "a password is required" msgstr "Ein Passwort ist notwendig" -#: plugins/sudoers/logging.c:803 plugins/sudoers/logging.c:815 +#: plugins/sudoers/logging.c:855 msgid "problem parsing sudoers" msgstr "Problem beim Auswerten der sudoers-Datei" -#: plugins/sudoers/logging.c:877 plugins/sudoers/logging.c:889 +#: plugins/sudoers/logging.c:896 plugins/sudoers/logging.c:904 #, c-format msgid "%s:%d:%d: %s" msgstr "%s:%d:%d: %s" -#: plugins/sudoers/logging.c:1066 +#: plugins/sudoers/logging.c:1079 #, c-format msgid "unable to write log file: %s" msgstr "In die Logdatei kann nicht geschrieben werden: %s" -#: plugins/sudoers/match_digest.c:112 +#: plugins/sudoers/match_digest.c:101 #, c-format msgid "digest for %s (%s) bad length %zu, expected %zu" msgstr "Prüfsumme für %s (%s) ungültige Länge %zu, %zu erwartet" -#: plugins/sudoers/match_digest.c:131 +#: plugins/sudoers/match_digest.c:120 #, c-format 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:631 +#: plugins/sudoers/parse.c:643 #, c-format msgid "" "\n" @@ -2991,7 +3007,7 @@ "\n" "LDAP-Rolle: %s\n" -#: plugins/sudoers/parse.c:634 +#: plugins/sudoers/parse.c:646 msgid "" "\n" "Sudoers entry:\n" @@ -2999,38 +3015,38 @@ "\n" "Sudoers-Eintrag:\n" -#: plugins/sudoers/parse.c:636 +#: plugins/sudoers/parse.c:648 msgid " RunAsUsers: " msgstr " RunAsUsers: " -#: plugins/sudoers/parse.c:651 +#: plugins/sudoers/parse.c:663 msgid " RunAsGroups: " msgstr " RunAsGroups: " -#: plugins/sudoers/parse.c:661 +#: plugins/sudoers/parse.c:673 msgid " Options: " msgstr " Optionen: " -#: plugins/sudoers/parse.c:725 +#: plugins/sudoers/parse.c:737 msgid " Commands:\n" msgstr " Befehle:\n" -#: plugins/sudoers/parse.c:916 +#: plugins/sudoers/parse.c:928 #, 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:934 +#: plugins/sudoers/parse.c:946 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Runas und befehlsspezifische Standardwerte für %s:\n" -#: plugins/sudoers/parse.c:952 +#: plugins/sudoers/parse.c:964 #, 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:967 +#: plugins/sudoers/parse.c:979 #, 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" @@ -3045,64 +3061,72 @@ msgid "invalid LDIF attribute: %s" msgstr "Ungültiges LDIF-Attribut: %s" -#: plugins/sudoers/policy.c:82 plugins/sudoers/policy.c:113 +#: plugins/sudoers/pivot.c:74 +msgid "unable to restore root directory" +msgstr "Das Wurzelverzeichnis kann nicht wieder eingestellt werden" + +#: plugins/sudoers/pivot.c:82 +msgid "unable to restore current working directory" +msgstr "Das aktuelle Arbeitsverzeichnis kann nicht wieder eingerichtet werden" + +#: 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:360 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:356 plugins/sudoers/testsudoers.c:277 msgid "unable to parse network address list" msgstr "Die Netzwerkadressliste kann nicht eingelesen werden" -#: plugins/sudoers/policy.c:528 +#: plugins/sudoers/policy.c:524 msgid "user name not set by sudo front-end" msgstr "Benutzername nicht durch das sudo-Frontend angegeben" -#: plugins/sudoers/policy.c:532 +#: plugins/sudoers/policy.c:528 msgid "user-ID not set by sudo front-end" msgstr "User-ID nicht durch das sudo-Frontend angegeben" -#: plugins/sudoers/policy.c:536 +#: plugins/sudoers/policy.c:532 msgid "group-ID not set by sudo front-end" msgstr "Gruppen-ID nicht durch das sudo-Frontend angegeben" -#: plugins/sudoers/policy.c:540 +#: plugins/sudoers/policy.c:536 msgid "host name not set by sudo front-end" msgstr "Hostname nicht durch das sudo-Frontend angegeben" -#: plugins/sudoers/policy.c:737 +#: plugins/sudoers/policy.c:754 #, c-format msgid "invalid working directory: %s" msgstr "Ungültiges Arbeitsverzeichnis: %s" -#: plugins/sudoers/policy.c:921 +#: plugins/sudoers/policy.c:938 #, c-format msgid "invalid chroot directory: %s" msgstr "Ungültiges »chroot« Verzeichnis: %s" -#: plugins/sudoers/policy.c:1108 plugins/sudoers/visudo.c:259 -#: plugins/sudoers/visudo.c:906 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/visudo.c:910 +#: plugins/sudoers/visudo.c:1209 #, c-format msgid "unable to execute %s" msgstr "%s kann nicht ausgeführt werden" -#: plugins/sudoers/policy.c:1178 plugins/sudoers/policy.c:1215 -#: plugins/sudoers/policy.c:1237 plugins/sudoers/policy.c:1263 +#: plugins/sudoers/policy.c:1195 plugins/sudoers/policy.c:1230 +#: plugins/sudoers/policy.c:1252 plugins/sudoers/policy.c:1274 #, 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:1299 +#: plugins/sudoers/policy.c:1294 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Sudoers-Policy-Plugin Version %s\n" -#: plugins/sudoers/policy.c:1301 +#: plugins/sudoers/policy.c:1296 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Sudoers-Datei-Grammatik-Version %d\n" -#: plugins/sudoers/policy.c:1305 +#: plugins/sudoers/policy.c:1300 #, c-format msgid "" "\n" @@ -3111,27 +3135,27 @@ "\n" "Sudoers-Pfad: %s\n" -#: plugins/sudoers/policy.c:1308 +#: plugins/sudoers/policy.c:1303 #, c-format msgid "nsswitch path: %s\n" msgstr "nsswitch-Pfad: %s\n" -#: plugins/sudoers/policy.c:1310 +#: plugins/sudoers/policy.c:1305 #, c-format msgid "ldap.conf path: %s\n" msgstr "ldap.conf-Pfad: %s\n" -#: plugins/sudoers/policy.c:1311 +#: plugins/sudoers/policy.c:1306 #, c-format msgid "ldap.secret path: %s\n" msgstr "ldap.secret-Pfad: %s\n" -#: plugins/sudoers/policy.c:1344 +#: plugins/sudoers/policy.c:1339 #, 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:1362 +#: plugins/sudoers/policy.c:1357 #, 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)" @@ -3200,48 +3224,48 @@ 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:445 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 -#: plugins/sudoers/set_perms.c:1460 +#: plugins/sudoers/set_perms.c:115 plugins/sudoers/set_perms.c:451 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1178 +#: plugins/sudoers/set_perms.c:1481 msgid "perm stack overflow" msgstr "Stack-Überlauf der Zugriffsrechte" -#: 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 +#: plugins/sudoers/set_perms.c:126 plugins/sudoers/set_perms.c:382 +#: plugins/sudoers/set_perms.c:462 plugins/sudoers/set_perms.c:730 +#: plugins/sudoers/set_perms.c:874 plugins/sudoers/set_perms.c:1102 +#: plugins/sudoers/set_perms.c:1189 plugins/sudoers/set_perms.c:1414 +#: plugins/sudoers/set_perms.c:1492 plugins/sudoers/set_perms.c:1583 msgid "perm stack underflow" msgstr "Stack-Bereichsunterschreitung der Zugriffsrechte" -#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 -#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 +#: plugins/sudoers/set_perms.c:186 plugins/sudoers/set_perms.c:509 +#: plugins/sudoers/set_perms.c:1243 plugins/sudoers/set_perms.c:1526 msgid "unable to change to root gid" msgstr "Wechsel zur root-GID ist nicht möglich" -#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 -#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 +#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:606 +#: plugins/sudoers/set_perms.c:1006 plugins/sudoers/set_perms.c:1320 msgid "unable to change to runas gid" msgstr "Wechsel zur runas-UID ist nicht möglich" -#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 -#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 +#: plugins/sudoers/set_perms.c:282 plugins/sudoers/set_perms.c:611 +#: plugins/sudoers/set_perms.c:1011 plugins/sudoers/set_perms.c:1325 msgid "unable to set runas group vector" msgstr "Die runas-Gruppen können nicht gesetzt werden" -#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 -#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:293 plugins/sudoers/set_perms.c:622 +#: plugins/sudoers/set_perms.c:1020 plugins/sudoers/set_perms.c:1334 msgid "unable to change to runas uid" msgstr "Wechsel zur runas-GID ist nicht möglich" -#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 -#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 +#: plugins/sudoers/set_perms.c:315 plugins/sudoers/set_perms.c:644 +#: plugins/sudoers/set_perms.c:1040 plugins/sudoers/set_perms.c:1354 msgid "unable to change to sudoers gid" msgstr "Wechsel zur sudoers-GID ist nicht möglich" -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 msgid "too many processes" msgstr "Zu viele Prozesse" @@ -3270,150 +3294,150 @@ msgid "unable to find symbol \"%s\" in %s" msgstr "Das Symbol »%s« kann in %s nicht gefunden werden" -#: plugins/sudoers/sudoers.c:263 +#: plugins/sudoers/sudoers.c:261 #, c-format msgid "unable to get defaults from %s" msgstr "Kann die Defaults von »%s« nicht bekommen" -#: plugins/sudoers/sudoers.c:270 +#: plugins/sudoers/sudoers.c:268 msgid "no valid sudoers sources found, quitting" msgstr "Keine gültige sudoers-Quelle gefunden, Programmende" -#: plugins/sudoers/sudoers.c:346 +#: plugins/sudoers/sudoers.c:344 #, 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:348 +#: plugins/sudoers/sudoers.c:346 #, 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:373 +#: plugins/sudoers/sudoers.c:371 #, 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:374 +#: plugins/sudoers/sudoers.c:372 #, 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:401 -msgid "no command specified" -msgstr "Kein Kommando angegeben" - -#: plugins/sudoers/sudoers.c:426 +#: plugins/sudoers/sudoers.c:412 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers gibt an, dass root sudo nicht verwenden darf" -#: plugins/sudoers/sudoers.c:483 +#: plugins/sudoers/sudoers.c:421 msgid "user not allowed to override closefrom limit" msgstr "Der Benutzer darf das »closefrom«-Limit nicht überschreiben" -#: plugins/sudoers/sudoers.c:484 +#: plugins/sudoers/sudoers.c:422 msgid "you are not permitted to use the -C option" msgstr "Sie dürfen die Option -C nicht verwenden" -#: plugins/sudoers/sudoers.c:544 -#, c-format -msgid "timestamp owner (%s): No such user" -msgstr "Zeitstempelbesitzer (%s): Benutzer existiert nicht" - -#: plugins/sudoers/sudoers.c:559 +#: plugins/sudoers/sudoers.c:468 msgid "no tty" msgstr "Kein tty" -#: plugins/sudoers/sudoers.c:560 +#: plugins/sudoers/sudoers.c:469 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:567 +#: plugins/sudoers/sudoers.c:477 #, c-format msgid "invalid shell for user %s: %s" msgstr "Ungültiger Shell für den Benutzer %s: %s" -#: plugins/sudoers/sudoers.c:650 +#: plugins/sudoers/sudoers.c:561 msgid "command in current directory" msgstr "Befehl ist im aktuellen Verzeichnis" -#: plugins/sudoers/sudoers.c:665 +#: plugins/sudoers/sudoers.c:574 msgid "\"cd\" is a shell built-in command, it cannot be run directly." msgstr "»cd\"« ist ein Shell-internes Kommando, das nicht direkt gestartet werden kann." -#: plugins/sudoers/sudoers.c:667 +#: plugins/sudoers/sudoers.c:576 msgid "the -s option may be used to run a privileged shell." msgstr "Die Option »-s« kann zum Start einer privilegierten Shell verwendet werden." -#: plugins/sudoers/sudoers.c:669 +#: plugins/sudoers/sudoers.c:578 msgid "the -D option may be used to run a command in a specific directory." msgstr "Die Option »-D« kann zum Start des Programms im angegebenen Verzeichnis verwendet werden." -#: plugins/sudoers/sudoers.c:678 +#: plugins/sudoers/sudoers.c:587 msgid "user not allowed to set a command timeout" msgstr "Der Benutzer darf keinen Kommand-Timeout angeben" -#: plugins/sudoers/sudoers.c:680 +#: plugins/sudoers/sudoers.c:589 msgid "sorry, you are not allowed set a command timeout" msgstr "Sie dürfen keinen Timeout angeben" -#: plugins/sudoers/sudoers.c:688 +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to preserve the environment" msgstr "Der Benutzer darf das Environment nicht erhalten" -#: plugins/sudoers/sudoers.c:690 +#: plugins/sudoers/sudoers.c:599 msgid "sorry, you are not allowed to preserve the environment" msgstr "Sie dürfen das Environment nicht erhalten" -#: plugins/sudoers/sudoers.c:799 +#: plugins/sudoers/sudoers.c:635 +msgid "no command specified" +msgstr "Kein Kommando angegeben" + +#: plugins/sudoers/sudoers.c:774 msgid "error setting user-specified environment variables" msgstr "Fehler beim Setzen benutzerspezidischer Umgebungsvariablen" -#: plugins/sudoers/sudoers.c:1112 +#: plugins/sudoers/sudoers.c:1239 msgid "sudoedit doesn't need to be run via sudo" msgstr "»sudoedit« muss nicht mittels »sudo« aufgerufen werden" -#: plugins/sudoers/sudoers.c:1157 plugins/sudoers/sudoreplay.c:1612 +#: plugins/sudoers/sudoers.c:1314 plugins/sudoers/sudoreplay.c:1612 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "Die Datei »%s« kann nicht gelesen werden" -#: plugins/sudoers/sudoers.c:1186 plugins/sudoers/visudo.c:1066 +#: plugins/sudoers/sudoers.c:1337 plugins/sudoers/visudo.c:1114 #, c-format msgid "%s is not a regular file" msgstr "%s ist keine reguläre Datei" -#: plugins/sudoers/sudoers.c:1190 plugins/sudoers/timestamp.c:263 toke.l:1255 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/timestamp.c:288 toke.l:1325 #, 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:1194 plugins/sudoers/timestamp.c:270 toke.l:1260 +#: plugins/sudoers/sudoers.c:1345 plugins/sudoers/timestamp.c:295 toke.l:1330 #, c-format msgid "%s is world writable" msgstr "%s ist für alle beschreibbar (world writable)" -#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/timestamp.c:275 toke.l:1263 +#: plugins/sudoers/sudoers.c:1349 plugins/sudoers/timestamp.c:300 toke.l:1333 #, 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:1233 +#: plugins/sudoers/sudoers.c:1377 #, c-format msgid "only root can use \"-c %s\"" msgstr "Nur root kann »-c %s« verwenden" -#: plugins/sudoers/sudoers.c:1252 +#: plugins/sudoers/sudoers.c:1396 #, c-format msgid "unknown login class %s" msgstr "Unbekannte Anmeldeklasse »%s«" -#: plugins/sudoers/sudoers.c:1339 plugins/sudoers/sudoers.c:1354 +#: plugins/sudoers/sudoers.c:1483 plugins/sudoers/sudoers.c:1498 #, c-format msgid "unable to resolve host %s" msgstr "Hostname %s kann nicht aufgelöst werden" +#: plugins/sudoers/sudoers.c:1636 +#, c-format +msgid "%s:%d:%d timestampowner: unknown user %s" +msgstr "%s:%d:%d: timstampowner: unbekannter Benutzer »%s«" + #: plugins/sudoers/sudoreplay.c:252 #, c-format msgid "invalid filter option: %s" @@ -3561,11 +3585,11 @@ " -V, --version zeigt Versionsinformationen an und beendet\n" " das Programm" -#: plugins/sudoers/testsudoers.c:344 +#: plugins/sudoers/testsudoers.c:355 msgid "\thost unmatched" msgstr "\tHost stimmt nicht überein" -#: plugins/sudoers/testsudoers.c:347 +#: plugins/sudoers/testsudoers.c:358 msgid "" "\n" "Command allowed" @@ -3573,7 +3597,7 @@ "\n" "Befehl erlaubt" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command denied" @@ -3581,7 +3605,7 @@ "\n" "Befehl verweigert" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command unmatched" @@ -3589,21 +3613,21 @@ "\n" "Befehl nicht erkannt" -#: plugins/sudoers/timestamp.c:354 plugins/sudoers/timestamp.c:693 +#: plugins/sudoers/timestamp.c:379 plugins/sudoers/timestamp.c:718 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "Die Zeitstempeldatei kann nicht auf %lld Bytes abgeschnitten werden" -#: plugins/sudoers/timestamp.c:890 +#: plugins/sudoers/timestamp.c:915 msgid "ignoring time stamp from the future" msgstr "Zeitstempel aus der Zukunft wird ignoriert" -#: plugins/sudoers/timestamp.c:913 +#: plugins/sudoers/timestamp.c:938 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "Zeitstempel ist zu weit in der Zukunft: %20.20s" -#: plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1067 #, c-format msgid "unable to lock time stamp file %s" msgstr "Die Zeitstempeldatei »%s« kann nicht gesperrt werden" @@ -3612,99 +3636,91 @@ msgid "sudoedit should not be specified with a path" msgstr "»sudoedit« sollte nicht mit einem Pfad angegeben werden" -#: plugins/sudoers/visudo.c:254 -msgid "the -x option will be removed in a future release" -msgstr "Die Option »-x» wird in einer zukünftigen Version entfernt" - -#: plugins/sudoers/visudo.c:256 -msgid "please consider using the cvtsudoers utility instead" -msgstr "Bitte verwenden Sie stattdessen das Programm »cvtsudoers«" - -#: plugins/sudoers/visudo.c:311 plugins/sudoers/visudo.c:702 +#: plugins/sudoers/visudo.c:314 plugins/sudoers/visudo.c:705 #, c-format msgid "press return to edit %s: " msgstr "Drücken Sie die Eingabetaste, um %s zu bearbeiten: " -#: plugins/sudoers/visudo.c:326 +#: plugins/sudoers/visudo.c:329 #, c-format msgid "contents of edit session left in %s" msgstr "Inhalt der Editor-Sitzung bleibt in »%s« erhalten" -#: plugins/sudoers/visudo.c:403 +#: plugins/sudoers/visudo.c:406 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "Der angegebene Editor (%s) ist nicht vorhanden" -#: plugins/sudoers/visudo.c:408 +#: plugins/sudoers/visudo.c:411 #, c-format msgid "no editor found (editor path = %s)" msgstr "Kein Editor gefunden (Pfad zum Editor = %s)" -#: plugins/sudoers/visudo.c:495 plugins/sudoers/visudo.c:774 +#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:777 #, c-format msgid "unable to stat %s" msgstr "stat konnte nicht auf %s angewendet werden" -#: plugins/sudoers/visudo.c:515 plugins/sudoers/visudo.c:523 +#: plugins/sudoers/visudo.c:518 plugins/sudoers/visudo.c:526 msgid "write error" msgstr "Schreibfehler" -#: plugins/sudoers/visudo.c:569 +#: plugins/sudoers/visudo.c:572 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "Anwenden von stat auf die temporäre Datei (%s) gescheitert, %s ist unverändert" -#: plugins/sudoers/visudo.c:576 +#: plugins/sudoers/visudo.c:579 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "Leere temporäre Datei (%s), %s ist unverändert" -#: plugins/sudoers/visudo.c:582 +#: plugins/sudoers/visudo.c:585 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "Editor-Aufruf (%s) ist gescheitert, %s ist unverändert" -#: plugins/sudoers/visudo.c:604 +#: plugins/sudoers/visudo.c:607 #, c-format msgid "%s unchanged" msgstr "%s unverändert" -#: plugins/sudoers/visudo.c:649 +#: plugins/sudoers/visudo.c:652 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "Erneutes Öffnen der temporären Datei (%s) gescheitert, %s ist unverändert." -#: plugins/sudoers/visudo.c:662 +#: plugins/sudoers/visudo.c:665 #, c-format msgid "unable to parse temporary file (%s), unknown error" msgstr "Analyse der temporären Datei (%s) gescheitert, unbekannter Fehler" -#: plugins/sudoers/visudo.c:748 plugins/sudoers/visudo.c:778 -#: plugins/sudoers/visudo.c:785 +#: plugins/sudoers/visudo.c:751 plugins/sudoers/visudo.c:781 +#: plugins/sudoers/visudo.c:788 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "Festlegen von (uid, gid) von %s auf (%u, %u) gescheitert" -#: plugins/sudoers/visudo.c:813 +#: plugins/sudoers/visudo.c:816 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "%s und %s befinden sich nicht im gleichen Dateisystem, werden mit mv umbenannt" -#: plugins/sudoers/visudo.c:824 +#: plugins/sudoers/visudo.c:827 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "Befehl gescheitert: »%s %s %s«, %s unverändert" -#: plugins/sudoers/visudo.c:831 +#: plugins/sudoers/visudo.c:834 #, c-format msgid "error renaming %s, %s unchanged" msgstr "Fehler beim Umbenennen von %s, %s unverändert" -#: plugins/sudoers/visudo.c:851 +#: plugins/sudoers/visudo.c:855 msgid "What now? " msgstr "Was jetzt? " -#: plugins/sudoers/visudo.c:865 +#: plugins/sudoers/visudo.c:869 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -3716,42 +3732,50 @@ " Beenden, ohne die Änderungen an der sudoers-Datei zu speichern (mit x)\n" " Beenden und Änderungen an der sudoers-Datei speichern (mit Q, VORSICHT!)\n" -#: plugins/sudoers/visudo.c:911 +#: plugins/sudoers/visudo.c:915 #, c-format msgid "unable to run %s" msgstr "%s konnte nicht ausgeführt werden" -#: plugins/sudoers/visudo.c:942 +#: plugins/sudoers/visudo.c:946 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s: Falsche Besitzer-(uid, gid), sollte (%u, %u) sein\n" -#: plugins/sudoers/visudo.c:953 +#: plugins/sudoers/visudo.c:957 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s: Falsche Zugriffsrechte, sollte Modus 0%o sein\n" -#: plugins/sudoers/visudo.c:999 plugins/sudoers/visudo.c:1006 +#: plugins/sudoers/visudo.c:1009 plugins/sudoers/visudo.c:1016 #, c-format msgid "%s: parsed OK\n" msgstr "%s: Analyse OK\n" -#: plugins/sudoers/visudo.c:1025 +#: plugins/sudoers/visudo.c:1035 #, c-format msgid "%s busy, try again later" msgstr "%s ist in Verwendung, versuchen Sie es später erneut" # XXX -#: plugins/sudoers/visudo.c:1029 +#: plugins/sudoers/visudo.c:1039 msgid "Edit anyway? [y/N]" msgstr "Trotzdem ändern? [y/N]" -#: plugins/sudoers/visudo.c:1130 +#: plugins/sudoers/visudo.c:1197 +msgid "the -x option will be removed in a future release" +msgstr "Die Option »-x» wird in einer zukünftigen Version entfernt" + +#: plugins/sudoers/visudo.c:1199 +msgid "please consider using the cvtsudoers utility instead" +msgstr "Bitte verwenden Sie stattdessen das Programm »cvtsudoers«" + +#: plugins/sudoers/visudo.c:1219 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Warnung: %s:%d:%d: nicht verwendet: %s »%s«" -#: plugins/sudoers/visudo.c:1242 +#: plugins/sudoers/visudo.c:1332 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3760,7 +3784,7 @@ "%s – Die sudoers-Datei sicher bearbeiten\n" "\n" -#: plugins/sudoers/visudo.c:1244 +#: plugins/sudoers/visudo.c:1334 msgid "" "\n" "Options:\n" @@ -3782,34 +3806,42 @@ " -s, --strict strikte Syntax-Prüfung\n" " -V, --version Versionsinformation anzeigen und beenden\n" -#: toke.l:189 +#: toke.l:184 msgid "empty string" msgstr "leere Zeichenkette" -#: toke.l:201 toke.l:571 +#: toke.l:196 toke.l:566 msgid "empty group" msgstr "leere Gruppe" -#: toke.l:211 toke.l:569 +#: toke.l:206 toke.l:564 msgid "empty netgroup" msgstr "leere Netgroup" -#: toke.l:289 +#: toke.l:284 msgid "unterminated regular expression" msgstr "nicht abgeschlossener regulärer Ausdruck" -#: toke.l:363 toke.l:375 toke.l:387 toke.l:403 toke.l:422 toke.l:462 +#: toke.l:358 toke.l:370 toke.l:382 toke.l:398 toke.l:417 toke.l:457 msgid "invalid line continuation" msgstr "Ungültiger Zeilenfortsetzung" -#: toke.l:608 toke.l:620 +#: toke.l:603 toke.l:615 msgid "invalid IPv6 address" msgstr "Ungültiges IPv6 Adresse: %s" -#: toke.l:876 +#: toke.l:863 msgid "unexpected line break in string" msgstr "unerwarteter Zeilenumbruch in Zeichenkette" -#: toke.l:1226 +#: toke.l:983 +msgid "ignoring editor backup file" +msgstr "Ignoriere die Backup Datei des Editors" + +#: toke.l:986 +msgid "ignoring file name containing '.'" +msgstr "Ignoriere Dateiname mit '.'" + +#: toke.l:1289 msgid "too many levels of includes" msgstr "Zu viele geschachtelte include-Einträge" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/plugins/sudoers/po/eo.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/plugins/sudoers/po/eo.mo differ diff -Nru sudo-1.9.13p3/plugins/sudoers/po/eo.po sudo-1.9.14p2/plugins/sudoers/po/eo.po --- sudo-1.9.13p3/plugins/sudoers/po/eo.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/po/eo.po 2023-07-15 15:37:21.000000000 +0000 @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.12b2\n" +"Project-Id-Version: sudoers 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2022-10-10 09:13-0600\n" -"PO-Revision-Date: 2023-01-01 15:47-0500\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-11 19:41-0400\n" "Last-Translator: Keith Bowes \n" "Language-Team: Esperanto \n" "Language: eo\n" @@ -19,7 +19,7 @@ "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.7\n" -#: confstr.sh:1 gram.y:1220 plugins/sudoers/logging.c:862 +#: confstr.sh:1 gram.y:1240 plugins/sudoers/logging.c:885 msgid "syntax error" msgstr "sintaksa eraro" @@ -43,19 +43,19 @@ msgid "Sorry, try again." msgstr "Malĝuste, reprovu." -#: gram.y:237 gram.y:304 gram.y:313 gram.y:322 gram.y:332 gram.y:342 -#: gram.y:366 gram.y:393 gram.y:402 gram.y:410 gram.y:419 gram.y:428 -#: gram.y:502 gram.y:512 gram.y:524 gram.y:572 gram.y:581 gram.y:590 -#: gram.y:599 gram.y:731 gram.y:739 gram.y:750 gram.y:762 gram.y:781 -#: gram.y:944 gram.y:949 gram.y:957 gram.y:971 gram.y:977 gram.y:1099 -#: gram.y:1108 gram.y:1116 gram.y:1125 gram.y:1134 gram.y:1163 gram.y:1172 -#: gram.y:1180 gram.y:1280 gram.y:1410 gram.y:1777 gram.y:1827 -#: lib/eventlog/eventlog.c:309 lib/eventlog/eventlog.c:382 -#: lib/eventlog/eventlog.c:827 lib/eventlog/eventlog.c:904 -#: lib/eventlog/eventlog.c:1204 lib/iolog/iolog_filter.c:142 +#: gram.y:236 gram.y:303 gram.y:312 gram.y:321 gram.y:331 gram.y:341 +#: gram.y:365 gram.y:392 gram.y:401 gram.y:409 gram.y:418 gram.y:427 +#: gram.y:501 gram.y:511 gram.y:523 gram.y:571 gram.y:580 gram.y:589 +#: gram.y:598 gram.y:730 gram.y:738 gram.y:749 gram.y:761 gram.y:780 +#: gram.y:943 gram.y:948 gram.y:956 gram.y:970 gram.y:976 gram.y:988 +#: gram.y:994 gram.y:1119 gram.y:1128 gram.y:1136 gram.y:1145 gram.y:1154 +#: gram.y:1183 gram.y:1192 gram.y:1200 gram.y:1300 gram.y:1430 gram.y:1808 +#: gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:313 lib/eventlog/eventlog.c:755 +#: lib/eventlog/eventlog.c:832 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:472 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 #: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:233 -#: lib/iolog/iolog_json.c:150 lib/iolog/iolog_json.c:382 -#: lib/iolog/iolog_json.c:412 lib/iolog/iolog_json.c:555 #: 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 @@ -68,55 +68,56 @@ #: logsrvd/iolog_writer.c:317 logsrvd/iolog_writer.c:329 #: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 #: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 -#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 -#: logsrvd/logsrvd.c:310 logsrvd/logsrvd.c:1050 logsrvd/logsrvd.c:1113 -#: logsrvd/logsrvd.c:1582 logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 -#: logsrvd/logsrvd.c:1988 logsrvd/logsrvd_conf.c:357 -#: logsrvd/logsrvd_conf.c:370 logsrvd/logsrvd_conf.c:511 -#: logsrvd/logsrvd_conf.c:534 logsrvd/logsrvd_conf.c:538 -#: logsrvd/logsrvd_conf.c:556 logsrvd/logsrvd_conf.c:626 -#: logsrvd/logsrvd_conf.c:650 logsrvd/logsrvd_conf.c:678 -#: logsrvd/logsrvd_conf.c:692 logsrvd/logsrvd_conf.c:706 -#: logsrvd/logsrvd_conf.c:720 logsrvd/logsrvd_conf.c:734 -#: logsrvd/logsrvd_conf.c:748 logsrvd/logsrvd_conf.c:829 -#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1053 -#: logsrvd/logsrvd_conf.c:1448 logsrvd/logsrvd_conf.c:1595 -#: logsrvd/logsrvd_conf.c:1621 logsrvd/logsrvd_conf.c:1633 -#: logsrvd/logsrvd_conf.c:1640 logsrvd/logsrvd_conf.c:1646 -#: logsrvd/logsrvd_conf.c:1743 logsrvd/logsrvd_journal.c:75 -#: logsrvd/logsrvd_journal.c:213 logsrvd/logsrvd_journal.c:214 -#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:430 -#: logsrvd/logsrvd_journal.c:432 logsrvd/logsrvd_local.c:215 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:1058 logsrvd/logsrvd.c:1121 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 +#: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 +#: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 +#: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 +#: logsrvd/logsrvd_conf.c:626 logsrvd/logsrvd_conf.c:650 +#: logsrvd/logsrvd_conf.c:678 logsrvd/logsrvd_conf.c:692 +#: logsrvd/logsrvd_conf.c:706 logsrvd/logsrvd_conf.c:720 +#: logsrvd/logsrvd_conf.c:734 logsrvd/logsrvd_conf.c:748 +#: logsrvd/logsrvd_conf.c:829 logsrvd/logsrvd_conf.c:1036 +#: logsrvd/logsrvd_conf.c:1053 logsrvd/logsrvd_conf.c:1448 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1621 +#: logsrvd/logsrvd_conf.c:1633 logsrvd/logsrvd_conf.c:1640 +#: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1743 +#: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:216 +#: logsrvd/logsrvd_journal.c:217 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:278 logsrvd/logsrvd_journal.c:438 +#: logsrvd/logsrvd_journal.c:440 logsrvd/logsrvd_local.c:215 #: logsrvd/logsrvd_local.c:216 logsrvd/logsrvd_local.c:278 #: logsrvd/logsrvd_local.c:279 logsrvd/logsrvd_local.c:417 #: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:467 #: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:473 #: logsrvd/logsrvd_queue.c:159 logsrvd/logsrvd_queue.c:189 -#: logsrvd/logsrvd_queue.c:266 logsrvd/logsrvd_relay.c:444 -#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:850 -#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:291 -#: logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 logsrvd/sendlog.c:1801 -#: plugins/sudoers/audit.c:116 plugins/sudoers/auth/bsdauth.c:150 -#: plugins/sudoers/auth/kerb5.c:121 plugins/sudoers/auth/kerb5.c:148 -#: plugins/sudoers/auth/pam.c:687 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:168 -#: plugins/sudoers/cvtsudoers.c:131 plugins/sudoers/cvtsudoers.c:175 -#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:203 -#: plugins/sudoers/cvtsudoers.c:333 plugins/sudoers/cvtsudoers.c:372 -#: plugins/sudoers/cvtsudoers.c:392 plugins/sudoers/cvtsudoers.c:537 -#: plugins/sudoers/cvtsudoers.c:670 plugins/sudoers/cvtsudoers.c:688 -#: plugins/sudoers/cvtsudoers.c:862 plugins/sudoers/cvtsudoers.c:870 -#: plugins/sudoers/cvtsudoers.c:1365 plugins/sudoers/cvtsudoers.c:1369 -#: plugins/sudoers/cvtsudoers.c:1471 plugins/sudoers/cvtsudoers_csv.c:183 -#: plugins/sudoers/cvtsudoers_csv.c:246 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:376 plugins/sudoers/cvtsudoers_ldif.c:430 -#: plugins/sudoers/cvtsudoers_ldif.c:438 plugins/sudoers/cvtsudoers_ldif.c:449 -#: plugins/sudoers/cvtsudoers_ldif.c:456 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:481 plugins/sudoers/cvtsudoers_ldif.c:489 -#: plugins/sudoers/cvtsudoers_ldif.c:636 plugins/sudoers/cvtsudoers_merge.c:47 -#: plugins/sudoers/cvtsudoers_merge.c:52 +#: logsrvd/logsrvd_queue.c:266 logsrvd/logsrvd_relay.c:446 +#: logsrvd/logsrvd_relay.c:745 logsrvd/logsrvd_relay.c:852 +#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:292 +#: logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 logsrvd/sendlog.c:624 +#: logsrvd/sendlog.c:1810 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/bsdauth.c:152 plugins/sudoers/auth/kerb5.c:121 +#: plugins/sudoers/auth/kerb5.c:148 plugins/sudoers/auth/pam.c:687 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 +#: plugins/sudoers/canon_path.c:129 plugins/sudoers/canon_path.c:160 +#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:132 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:193 +#: plugins/sudoers/cvtsudoers.c:204 plugins/sudoers/cvtsudoers.c:334 +#: plugins/sudoers/cvtsudoers.c:373 plugins/sudoers/cvtsudoers.c:393 +#: plugins/sudoers/cvtsudoers.c:538 plugins/sudoers/cvtsudoers.c:691 +#: plugins/sudoers/cvtsudoers.c:709 plugins/sudoers/cvtsudoers.c:883 +#: plugins/sudoers/cvtsudoers.c:891 plugins/sudoers/cvtsudoers.c:1386 +#: plugins/sudoers/cvtsudoers.c:1390 plugins/sudoers/cvtsudoers.c:1492 +#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:247 +#: 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:376 +#: plugins/sudoers/cvtsudoers_ldif.c:430 plugins/sudoers/cvtsudoers_ldif.c:438 +#: plugins/sudoers/cvtsudoers_ldif.c:449 plugins/sudoers/cvtsudoers_ldif.c:456 +#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:481 +#: plugins/sudoers/cvtsudoers_ldif.c:489 plugins/sudoers/cvtsudoers_ldif.c:636 +#: plugins/sudoers/cvtsudoers_merge.c:47 plugins/sudoers/cvtsudoers_merge.c:52 #: plugins/sudoers/cvtsudoers_merge.c:353 #: plugins/sudoers/cvtsudoers_merge.c:399 #: plugins/sudoers/cvtsudoers_merge.c:446 @@ -126,39 +127,39 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1158 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:188 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 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:228 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 +#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:212 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:464 -#: plugins/sudoers/ldap.c:755 plugins/sudoers/ldap.c:919 -#: plugins/sudoers/ldap.c:1335 plugins/sudoers/ldap.c:1761 -#: plugins/sudoers/ldap.c:1798 plugins/sudoers/ldap.c:1879 -#: plugins/sudoers/ldap.c:2014 plugins/sudoers/ldap.c:2115 -#: plugins/sudoers/ldap.c:2131 plugins/sudoers/ldap_conf.c:218 -#: plugins/sudoers/ldap_conf.c:250 plugins/sudoers/ldap_conf.c:302 -#: plugins/sudoers/ldap_conf.c:338 plugins/sudoers/ldap_conf.c:444 -#: plugins/sudoers/ldap_conf.c:459 plugins/sudoers/ldap_conf.c:564 -#: plugins/sudoers/ldap_conf.c:597 plugins/sudoers/ldap_conf.c:689 -#: plugins/sudoers/ldap_conf.c:771 plugins/sudoers/ldap_util.c:294 -#: plugins/sudoers/ldap_util.c:301 plugins/sudoers/ldap_util.c:614 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:117 -#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:715 -#: plugins/sudoers/log_client.c:736 plugins/sudoers/log_client.c:1416 -#: plugins/sudoers/log_client.c:1537 plugins/sudoers/log_client.c:1637 -#: plugins/sudoers/log_client.c:1973 plugins/sudoers/log_client.c:2032 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:691 plugins/sudoers/ldap_conf.c:773 +#: plugins/sudoers/ldap_util.c:294 plugins/sudoers/ldap_util.c:301 +#: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 +#: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:402 +#: plugins/sudoers/log_client.c:717 plugins/sudoers/log_client.c:739 +#: plugins/sudoers/log_client.c:744 plugins/sudoers/log_client.c:1423 +#: plugins/sudoers/log_client.c:1544 plugins/sudoers/log_client.c:1667 +#: plugins/sudoers/log_client.c:1986 plugins/sudoers/log_client.c:2045 #: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:189 -#: plugins/sudoers/logging.c:453 plugins/sudoers/logging.c:668 -#: plugins/sudoers/logging.c:805 plugins/sudoers/match_command.c:335 -#: plugins/sudoers/match_command.c:603 plugins/sudoers/match_command.c:654 -#: plugins/sudoers/match_command.c:728 plugins/sudoers/match_command.c:776 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:227 -#: plugins/sudoers/parse.c:244 plugins/sudoers/parse.c:263 -#: plugins/sudoers/parse.c:282 plugins/sudoers/parse.c:299 -#: plugins/sudoers/parse.c:322 plugins/sudoers/parse.c:333 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:846 plugins/sudoers/match_command.c:295 +#: plugins/sudoers/match_command.c:563 plugins/sudoers/match_command.c:629 +#: plugins/sudoers/match_command.c:724 plugins/sudoers/match_command.c:770 +#: plugins/sudoers/match_digest.c:82 plugins/sudoers/parse.c:279 +#: plugins/sudoers/parse.c:296 plugins/sudoers/parse.c:315 +#: plugins/sudoers/parse.c:334 plugins/sudoers/parse.c:351 +#: plugins/sudoers/parse.c:374 plugins/sudoers/parse.c:385 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:261 #: plugins/sudoers/parse_ldif.c:266 plugins/sudoers/parse_ldif.c:342 @@ -169,121 +170,129 @@ #: plugins/sudoers/parse_ldif.c:628 plugins/sudoers/parse_ldif.c:653 #: plugins/sudoers/parse_ldif.c:711 plugins/sudoers/parse_ldif.c:728 #: plugins/sudoers/parse_ldif.c:756 plugins/sudoers/parse_ldif.c:763 -#: plugins/sudoers/policy.c:624 plugins/sudoers/policy.c:1026 +#: plugins/sudoers/policy.c:622 plugins/sudoers/policy.c:1050 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:199 #: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 #: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:587 #: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:857 -#: plugins/sudoers/pwutil.c:913 plugins/sudoers/pwutil.c:957 -#: plugins/sudoers/pwutil.c:1014 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/pwutil.c:945 plugins/sudoers/pwutil.c:993 +#: plugins/sudoers/pwutil.c:1052 plugins/sudoers/sssd.c:145 #: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 #: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 -#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:761 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:112 -#: plugins/sudoers/stubs.c:120 plugins/sudoers/sudoers.c:354 -#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:448 -#: plugins/sudoers/sudoers.c:457 plugins/sudoers/sudoers.c:498 -#: plugins/sudoers/sudoers.c:827 plugins/sudoers/sudoers.c:877 -#: plugins/sudoers/sudoers.c:1015 plugins/sudoers/sudoers.c:1075 -#: plugins/sudoers/sudoers.c:1330 plugins/sudoers/sudoreplay.c:562 -#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1281 -#: plugins/sudoers/sudoreplay.c:1503 plugins/sudoers/sudoreplay.c:1507 -#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 -#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:588 -#: plugins/sudoers/timestamp.c:451 plugins/sudoers/timestamp.c:495 -#: plugins/sudoers/timestamp.c:1017 plugins/sudoers/timestamp.c:1146 -#: plugins/sudoers/toke_util.c:78 plugins/sudoers/toke_util.c:106 -#: plugins/sudoers/toke_util.c:131 plugins/sudoers/toke_util.c:161 -#: plugins/sudoers/toke_util.c:200 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:150 plugins/sudoers/visudo.c:385 -#: plugins/sudoers/visudo.c:391 plugins/sudoers/visudo.c:498 -#: plugins/sudoers/visudo.c:1054 toke.l:1023 toke.l:1155 toke.l:1226 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1325 plugins/sudoers/sudoers.c:1513 +#: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 +#: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 +#: plugins/sudoers/toke_util.c:161 plugins/sudoers/toke_util.c:200 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1087 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1299 msgid "unable to allocate memory" msgstr "ne eblas rezervi memoron" -#: gram.y:623 +#: gram.y:622 msgid "a digest requires a path name" msgstr "resumo postulas vojnomon" -#: gram.y:645 +#: gram.y:644 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "valoroj por \"CWD\" devas komenciĝi per '/', '~' aŭ '*'" -#: gram.y:651 +#: gram.y:650 msgid "\"CWD\" path too long" msgstr "\"CWD\"-vojo tro grandas" -#: gram.y:661 +#: gram.y:660 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "valoroj por \"CHROOT\" devas komenciĝi per '/', '~' aŭ '*'" -#: gram.y:667 +#: gram.y:666 msgid "\"CHROOT\" path too long" msgstr "\"CHROOT\"-vojo tro grandas" -#: gram.y:802 +#: gram.y:801 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "sintakseraro: rezervita vorto %s uzata kiel kromnomo" -#: gram.y:825 +#: gram.y:824 msgid "invalid notbefore value" msgstr "malvalida valoro notafter" -#: gram.y:834 +#: gram.y:833 msgid "invalid notafter value" msgstr "validiga valoro notafter" -#: gram.y:844 plugins/sudoers/policy.c:383 +#: gram.y:843 plugins/sudoers/policy.c:381 msgid "timeout value too large" msgstr "eksvalidiĝo-valoro tro grandas" -#: gram.y:846 plugins/sudoers/policy.c:385 +#: gram.y:845 plugins/sudoers/policy.c:383 msgid "invalid timeout value" msgstr "malvalida eksvalidiĝo-valoro" -#: gram.y:967 plugins/sudoers/sudoers.c:1033 +#: gram.y:966 plugins/sudoers/sudoers.c:1192 msgid "command too long" msgstr "komando tro longas" -#: gram.y:1224 plugins/sudoers/check_aliases.c:96 -#: plugins/sudoers/defaults.c:1276 +#: gram.y:1000 +msgid "expected a fully-qualified path name" +msgstr "atendas tute kvalifikitan vojnomon" + +#: gram.y:1244 plugins/sudoers/check_aliases.c:96 +#: plugins/sudoers/defaults.c:1275 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1278 +#: gram.y:1298 #, c-format msgid "Alias \"%s\" already defined" msgstr "Kromnomo \"%s\" jam ekzistas" -#: gram.y:1777 gram.y:1827 lib/eventlog/eventlog.c:309 -#: lib/eventlog/eventlog.c:827 lib/eventlog/eventlog.c:900 -#: lib/eventlog/eventlog.c:903 lib/eventlog/eventlog.c:1204 -#: lib/iolog/iolog_filter.c:142 lib/iolog/iolog_filter.c:202 -#: lib/iolog/iolog_filter.c:232 lib/iolog/iolog_json.c:150 -#: lib/iolog/iolog_json.c:381 lib/iolog/iolog_json.c:412 -#: lib/iolog/iolog_json.c:555 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:212 -#: logsrvd/iolog_writer.c:95 logsrvd/iolog_writer.c:100 -#: logsrvd/iolog_writer.c:134 logsrvd/iolog_writer.c:171 -#: logsrvd/iolog_writer.c:181 logsrvd/iolog_writer.c:194 -#: logsrvd/iolog_writer.c:214 logsrvd/iolog_writer.c:224 -#: logsrvd/iolog_writer.c:243 logsrvd/iolog_writer.c:253 -#: logsrvd/iolog_writer.c:264 logsrvd/iolog_writer.c:274 -#: logsrvd/iolog_writer.c:286 logsrvd/iolog_writer.c:296 -#: logsrvd/iolog_writer.c:306 logsrvd/iolog_writer.c:316 -#: logsrvd/iolog_writer.c:328 logsrvd/iolog_writer.c:364 -#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:377 -#: logsrvd/iolog_writer.c:383 logsrvd/iolog_writer.c:567 -#: logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 logsrvd/logsrvd.c:310 -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:490 logsrvd/logsrvd.c:522 -#: logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:611 logsrvd/logsrvd.c:660 -#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:732 logsrvd/logsrvd.c:1124 -#: logsrvd/logsrvd.c:1439 logsrvd/logsrvd.c:1446 logsrvd/logsrvd.c:1582 -#: logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 logsrvd/logsrvd.c:1988 +#: gram.y:1808 gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:755 lib/eventlog/eventlog.c:828 +#: lib/eventlog/eventlog.c:831 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:471 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 +#: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:232 +#: 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:212 logsrvd/iolog_writer.c:95 +#: logsrvd/iolog_writer.c:100 logsrvd/iolog_writer.c:134 +#: logsrvd/iolog_writer.c:171 logsrvd/iolog_writer.c:181 +#: logsrvd/iolog_writer.c:194 logsrvd/iolog_writer.c:214 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:243 +#: logsrvd/iolog_writer.c:253 logsrvd/iolog_writer.c:264 +#: logsrvd/iolog_writer.c:274 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:296 logsrvd/iolog_writer.c:306 +#: logsrvd/iolog_writer.c:316 logsrvd/iolog_writer.c:328 +#: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 +#: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:530 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:668 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:1132 +#: logsrvd/logsrvd.c:1447 logsrvd/logsrvd.c:1454 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 #: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 #: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 #: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 @@ -296,29 +305,30 @@ #: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1621 #: logsrvd/logsrvd_conf.c:1633 logsrvd/logsrvd_conf.c:1640 #: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1742 -#: logsrvd/logsrvd_journal.c:75 logsrvd/logsrvd_journal.c:122 -#: logsrvd/logsrvd_journal.c:213 logsrvd/logsrvd_journal.c:243 -#: logsrvd/logsrvd_journal.c:247 logsrvd/logsrvd_journal.c:255 -#: logsrvd/logsrvd_journal.c:278 logsrvd/logsrvd_journal.c:282 -#: logsrvd/logsrvd_journal.c:430 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:125 +#: logsrvd/logsrvd_journal.c:216 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:250 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:290 +#: logsrvd/logsrvd_journal.c:438 logsrvd/logsrvd_local.c:215 #: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:466 #: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:491 #: logsrvd/logsrvd_queue.c:158 logsrvd/logsrvd_queue.c:189 #: logsrvd/logsrvd_queue.c:266 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 -#: logsrvd/sendlog.c:291 logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 -#: logsrvd/sendlog.c:1503 logsrvd/sendlog.c:1510 logsrvd/sendlog.c:1733 -#: logsrvd/sendlog.c:1801 logsrvd/tls_init.c:305 logsrvd/tls_init.c:329 -#: logsrvd/tls_init.c:340 plugins/sudoers/audit.c:116 +#: logsrvd/sendlog.c:292 logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 +#: logsrvd/sendlog.c:624 logsrvd/sendlog.c:1512 logsrvd/sendlog.c:1519 +#: logsrvd/sendlog.c:1742 logsrvd/sendlog.c:1810 logsrvd/tls_init.c:305 +#: logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 plugins/sudoers/audit.c:116 #: plugins/sudoers/auth/pam.c:502 plugins/sudoers/auth/pam.c:687 -#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:168 -#: plugins/sudoers/cvtsudoers.c:131 plugins/sudoers/cvtsudoers.c:174 -#: plugins/sudoers/cvtsudoers.c:191 plugins/sudoers/cvtsudoers.c:202 -#: plugins/sudoers/cvtsudoers.c:332 plugins/sudoers/cvtsudoers.c:536 -#: plugins/sudoers/cvtsudoers.c:669 plugins/sudoers/cvtsudoers.c:687 -#: plugins/sudoers/cvtsudoers.c:862 plugins/sudoers/cvtsudoers.c:869 -#: plugins/sudoers/cvtsudoers.c:1365 plugins/sudoers/cvtsudoers.c:1369 -#: plugins/sudoers/cvtsudoers.c:1471 plugins/sudoers/cvtsudoers_csv.c:182 -#: plugins/sudoers/cvtsudoers_csv.c:245 plugins/sudoers/cvtsudoers_json.c:75 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/canon_path.c:129 +#: plugins/sudoers/canon_path.c:160 plugins/sudoers/check_aliases.c:168 +#: plugins/sudoers/cvtsudoers.c:132 plugins/sudoers/cvtsudoers.c:175 +#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:203 +#: plugins/sudoers/cvtsudoers.c:333 plugins/sudoers/cvtsudoers.c:537 +#: plugins/sudoers/cvtsudoers.c:690 plugins/sudoers/cvtsudoers.c:708 +#: plugins/sudoers/cvtsudoers.c:883 plugins/sudoers/cvtsudoers.c:890 +#: plugins/sudoers/cvtsudoers.c:1386 plugins/sudoers/cvtsudoers.c:1390 +#: plugins/sudoers/cvtsudoers.c:1492 plugins/sudoers/cvtsudoers_csv.c:182 +#: plugins/sudoers/cvtsudoers_csv.c:246 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:375 plugins/sudoers/cvtsudoers_ldif.c:429 @@ -338,229 +348,214 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1157 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:188 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 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:227 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 +#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:211 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:464 -#: plugins/sudoers/ldap.c:755 plugins/sudoers/ldap.c:919 -#: plugins/sudoers/ldap.c:1335 plugins/sudoers/ldap.c:1761 -#: plugins/sudoers/ldap.c:1798 plugins/sudoers/ldap.c:1879 -#: plugins/sudoers/ldap.c:2014 plugins/sudoers/ldap.c:2115 -#: plugins/sudoers/ldap.c:2131 plugins/sudoers/ldap_conf.c:218 -#: plugins/sudoers/ldap_conf.c:250 plugins/sudoers/ldap_conf.c:302 -#: plugins/sudoers/ldap_conf.c:338 plugins/sudoers/ldap_conf.c:444 -#: plugins/sudoers/ldap_conf.c:459 plugins/sudoers/ldap_conf.c:564 -#: plugins/sudoers/ldap_conf.c:597 plugins/sudoers/ldap_conf.c:688 -#: plugins/sudoers/ldap_conf.c:771 plugins/sudoers/ldap_util.c:293 -#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:614 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:117 -#: plugins/sudoers/log_client.c:228 plugins/sudoers/log_client.c:250 -#: plugins/sudoers/log_client.c:264 plugins/sudoers/log_client.c:402 -#: plugins/sudoers/log_client.c:715 plugins/sudoers/log_client.c:736 -#: plugins/sudoers/log_client.c:1416 plugins/sudoers/log_client.c:1537 -#: plugins/sudoers/log_client.c:1637 plugins/sudoers/log_client.c:1973 -#: plugins/sudoers/log_client.c:2032 plugins/sudoers/logging.c:110 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:690 plugins/sudoers/ldap_conf.c:773 +#: plugins/sudoers/ldap_util.c:293 plugins/sudoers/ldap_util.c:300 +#: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 +#: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:228 +#: plugins/sudoers/log_client.c:250 plugins/sudoers/log_client.c:264 +#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:717 +#: plugins/sudoers/log_client.c:739 plugins/sudoers/log_client.c:744 +#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1544 +#: plugins/sudoers/log_client.c:1667 plugins/sudoers/log_client.c:1986 +#: plugins/sudoers/log_client.c:2045 plugins/sudoers/logging.c:110 #: plugins/sudoers/logging.c:188 plugins/sudoers/logging.c:189 -#: plugins/sudoers/logging.c:453 plugins/sudoers/logging.c:668 -#: plugins/sudoers/logging.c:805 plugins/sudoers/logging.c:876 -#: plugins/sudoers/logging.c:888 plugins/sudoers/match_command.c:334 -#: plugins/sudoers/match_command.c:602 plugins/sudoers/match_command.c:653 -#: plugins/sudoers/match_command.c:728 plugins/sudoers/match_command.c:775 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:226 -#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:262 -#: plugins/sudoers/parse.c:281 plugins/sudoers/parse.c:298 -#: plugins/sudoers/parse.c:321 plugins/sudoers/parse.c:332 -#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 -#: plugins/sudoers/parse_ldif.c:252 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:484 plugins/sudoers/parse_ldif.c:598 -#: plugins/sudoers/parse_ldif.c:627 plugins/sudoers/parse_ldif.c:652 -#: plugins/sudoers/parse_ldif.c:710 plugins/sudoers/parse_ldif.c:727 -#: plugins/sudoers/parse_ldif.c:755 plugins/sudoers/parse_ldif.c:762 -#: plugins/sudoers/policy.c:153 plugins/sudoers/policy.c:162 -#: plugins/sudoers/policy.c:171 plugins/sudoers/policy.c:199 -#: plugins/sudoers/policy.c:368 plugins/sudoers/policy.c:383 -#: plugins/sudoers/policy.c:385 plugins/sudoers/policy.c:423 -#: plugins/sudoers/policy.c:432 plugins/sudoers/policy.c:480 -#: plugins/sudoers/policy.c:490 plugins/sudoers/policy.c:499 -#: plugins/sudoers/policy.c:508 plugins/sudoers/policy.c:517 -#: plugins/sudoers/policy.c:624 plugins/sudoers/policy.c:1026 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:199 -#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 -#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:587 -#: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:857 -#: plugins/sudoers/pwutil.c:913 plugins/sudoers/pwutil.c:957 -#: plugins/sudoers/pwutil.c:1014 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:185 -#: plugins/sudoers/sssd.c:414 plugins/sudoers/sssd.c:479 -#: plugins/sudoers/sssd.c:505 plugins/sudoers/sssd.c:568 -#: plugins/sudoers/sssd.c:761 plugins/sudoers/strvec_join.c:53 -#: plugins/sudoers/stubs.c:112 plugins/sudoers/stubs.c:120 -#: plugins/sudoers/sudoers.c:354 plugins/sudoers/sudoers.c:380 -#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:457 -#: plugins/sudoers/sudoers.c:498 plugins/sudoers/sudoers.c:827 -#: plugins/sudoers/sudoers.c:877 plugins/sudoers/sudoers.c:1015 -#: plugins/sudoers/sudoers.c:1075 plugins/sudoers/sudoers.c:1330 -#: plugins/sudoers/sudoreplay.c:562 plugins/sudoers/sudoreplay.c:565 -#: plugins/sudoers/sudoreplay.c:1281 plugins/sudoers/sudoreplay.c:1503 -#: plugins/sudoers/sudoreplay.c:1507 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:588 plugins/sudoers/timestamp.c:451 -#: plugins/sudoers/timestamp.c:495 plugins/sudoers/timestamp.c:1017 -#: plugins/sudoers/timestamp.c:1146 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:734 plugins/sudoers/logging.c:846 +#: plugins/sudoers/logging.c:899 plugins/sudoers/logging.c:906 +#: plugins/sudoers/match_command.c:294 plugins/sudoers/match_command.c:562 +#: plugins/sudoers/match_command.c:628 plugins/sudoers/match_command.c:724 +#: plugins/sudoers/match_command.c:769 plugins/sudoers/match_digest.c:82 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:295 +#: plugins/sudoers/parse.c:314 plugins/sudoers/parse.c:333 +#: plugins/sudoers/parse.c:350 plugins/sudoers/parse.c:373 +#: plugins/sudoers/parse.c:384 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 +#: 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:484 +#: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:627 +#: plugins/sudoers/parse_ldif.c:652 plugins/sudoers/parse_ldif.c:710 +#: plugins/sudoers/parse_ldif.c:727 plugins/sudoers/parse_ldif.c:755 +#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:166 +#: plugins/sudoers/policy.c:196 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:381 plugins/sudoers/policy.c:383 +#: plugins/sudoers/policy.c:421 plugins/sudoers/policy.c:430 +#: plugins/sudoers/policy.c:478 plugins/sudoers/policy.c:488 +#: plugins/sudoers/policy.c:497 plugins/sudoers/policy.c:506 +#: plugins/sudoers/policy.c:515 plugins/sudoers/policy.c:622 +#: plugins/sudoers/policy.c:1050 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 +#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 +#: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 +#: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 +#: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 +#: plugins/sudoers/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 +#: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1324 plugins/sudoers/sudoers.c:1513 +#: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 +#: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 #: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 #: plugins/sudoers/toke_util.c:160 plugins/sudoers/toke_util.c:200 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:150 -#: plugins/sudoers/visudo.c:385 plugins/sudoers/visudo.c:391 -#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:1054 toke.l:1023 -#: toke.l:1155 toke.l:1218 toke.l:1226 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1086 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1288 toke.l:1299 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:314 lib/iolog/iolog_json.c:562 -#: lib/iolog/iolog_json.c:568 lib/iolog/iolog_json.c:574 -#: plugins/sudoers/cvtsudoers_csv.c:192 plugins/sudoers/cvtsudoers_csv.c:199 -#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:340 -#: plugins/sudoers/env.c:347 plugins/sudoers/env.c:458 -#: plugins/sudoers/ldap.c:526 plugins/sudoers/ldap.c:759 -#: plugins/sudoers/ldap.c:1132 plugins/sudoers/ldap_conf.c:222 -#: plugins/sudoers/ldap_conf.c:313 plugins/sudoers/ldap_util.c:486 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:813 plugins/sudoers/logging.c:823 -#: plugins/sudoers/policy.c:800 plugins/sudoers/policy.c:811 -#: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 -#: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 -#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:213 -#: toke.l:987 toke.l:1189 -#, c-format -msgid "internal error, %s overflow" -msgstr "interna eraro, troo en %s" - -#: lib/eventlog/eventlog.c:373 +#: lib/eventlog/eventlog.c:304 #, c-format msgid "unable to dup stdin: %m" msgstr "ne eblas kopii enigon: %m" -#: lib/eventlog/eventlog.c:415 +#: lib/eventlog/eventlog.c:346 #, c-format msgid "unable to execute %s: %m" msgstr "ne eblas plenumigi %s-on: %m" -#: lib/eventlog/eventlog.c:463 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:393 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "ne eblas forki" -#: lib/eventlog/eventlog.c:473 lib/eventlog/eventlog.c:538 +#: lib/eventlog/eventlog.c:403 lib/eventlog/eventlog.c:468 #, c-format msgid "unable to fork: %m" msgstr "ne eblas forki: %m" -#: lib/eventlog/eventlog.c:528 +#: lib/eventlog/eventlog.c:458 #, c-format msgid "unable to open pipe: %m" msgstr "ne eblas malfermi tubon: %m" -#: lib/eventlog/eventlog.c:1030 +#: lib/eventlog/eventlog.c:958 #, c-format msgid "%8s : %s" msgstr "%8s: %s" -#: lib/eventlog/eventlog.c:1059 +#: lib/eventlog/eventlog.c:987 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (komando daŭrigis) %s" -#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1242 -#: plugins/sudoers/sudoreplay.c:1293 plugins/sudoers/sudoreplay.c:1558 -#, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "malvalida regulesprimo \"%s\": %s" - -#: lib/iolog/iolog_json.c:140 +#: lib/eventlog/parse_json.c:175 #, c-format msgid "expected JSON_STRING, got %d" msgstr "atendita JSON_STRING, %d ricevita" -#: lib/iolog/iolog_json.c:145 +#: lib/eventlog/parse_json.c:180 msgid "JSON_ARRAY too large" msgstr "JSON_ARRAY tro grandas" -#: lib/iolog/iolog_json.c:404 +#: lib/eventlog/parse_json.c:494 msgid "missing double quote in name" msgstr "mankas duobla citilo en nomo" -#: lib/iolog/iolog_json.c:501 +#: lib/eventlog/parse_json.c:612 msgid "missing JSON_OBJECT" msgstr "mankanta JSON_OBJECT" -#: lib/iolog/iolog_json.c:505 +#: lib/eventlog/parse_json.c:616 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "atendita JSON_OBJECT, %d ricevita" -#: lib/iolog/iolog_json.c:661 +#: lib/eventlog/parse_json.c:750 #, c-format msgid "json stack exhausted (max %u frames)" msgstr "json-stako eluzita (maksimume %u kandroj)" -#: lib/iolog/iolog_json.c:735 +#: lib/eventlog/parse_json.c:828 msgid "objects must consist of name:value pairs" msgstr "objektoj devas konsisti el paroj nomo:valoro" -#: lib/iolog/iolog_json.c:740 lib/iolog/iolog_json.c:771 -#: lib/iolog/iolog_json.c:815 lib/iolog/iolog_json.c:837 -#: lib/iolog/iolog_json.c:859 lib/iolog/iolog_json.c:881 -#: lib/iolog/iolog_json.c:903 +#: lib/eventlog/parse_json.c:833 lib/eventlog/parse_json.c:864 +#: lib/eventlog/parse_json.c:908 lib/eventlog/parse_json.c:930 +#: lib/eventlog/parse_json.c:952 lib/eventlog/parse_json.c:974 +#: lib/eventlog/parse_json.c:996 msgid "missing separator between values" msgstr "mankanta apartigilo inter valoroj" -#: lib/iolog/iolog_json.c:755 lib/iolog/iolog_json.c:929 +#: lib/eventlog/parse_json.c:848 lib/eventlog/parse_json.c:1022 msgid "unmatched close brace" msgstr "'}' sen kongruanta '{'" -#: lib/iolog/iolog_json.c:766 +#: lib/eventlog/parse_json.c:859 msgid "unexpected array" msgstr "neatendita tabelo" -#: lib/iolog/iolog_json.c:786 lib/iolog/iolog_json.c:932 +#: lib/eventlog/parse_json.c:879 lib/eventlog/parse_json.c:1025 msgid "unmatched close bracket" msgstr "']' sen kongruanta '['" -#: lib/iolog/iolog_json.c:797 +#: lib/eventlog/parse_json.c:890 msgid "unexpected string" msgstr "neatendita ĉeno" -#: lib/iolog/iolog_json.c:808 +#: lib/eventlog/parse_json.c:901 msgid "missing colon after name" msgstr "mankas dupunkto post nomo" -#: lib/iolog/iolog_json.c:829 lib/iolog/iolog_json.c:851 +#: lib/eventlog/parse_json.c:922 lib/eventlog/parse_json.c:944 msgid "unexpected boolean" msgstr "neatendita bulea valoro" -#: lib/iolog/iolog_json.c:873 +#: lib/eventlog/parse_json.c:966 msgid "unexpected null" msgstr "neatendita nulo" -#: lib/iolog/iolog_json.c:894 +#: lib/eventlog/parse_json.c:987 msgid "unexpected number" msgstr "neatendita nombro" -#: lib/iolog/iolog_json.c:941 +#: lib/eventlog/parse_json.c:1033 msgid "parse error" msgstr "analiza eraro" +#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1241 +#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "malvalida regulesprimo \"%s\": %s" + #: lib/iolog/iolog_legacy.c:65 #, c-format msgid "%s: invalid log file" @@ -596,14 +591,14 @@ msgid "%s exists but is not a directory (0%o)" msgstr "%s ekzistas sed ne dosierujo (0%o)" -#: lib/iolog/iolog_mkdirs.c:123 lib/iolog/iolog_mkdtemp.c:78 -#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:209 +#: lib/iolog/iolog_mkdirs.c:123 lib/iolog/iolog_mkdtemp.c:79 +#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:234 #, c-format msgid "unable to mkdir %s" msgstr "ne eblas mkdir-i: %s" -#: lib/iolog/iolog_mkdtemp.c:83 plugins/sudoers/visudo.c:753 -#: plugins/sudoers/visudo.c:787 plugins/sudoers/visudo.c:793 +#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:760 +#: plugins/sudoers/visudo.c:794 plugins/sudoers/visudo.c:800 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "ne eblas ŝanĝi reĝimon de %s al 0%o" @@ -635,8 +630,8 @@ msgid "%s: protocol error: NULL value found in %s" msgstr "%s: protokoleraro: nul-valoro trovita en %s" -#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:976 -#: plugins/sudoers/policy.c:591 +#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:993 +#: plugins/sudoers/policy.c:589 msgid "unable to generate UUID" msgstr "ne eblas genero de UUID" @@ -688,27 +683,27 @@ 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:763 logsrvd/logsrvd_journal.c:382 +#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:390 #, 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:785 logsrvd/logsrvd_journal.c:425 +#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:433 #: logsrvd/logsrvd_queue.c:115 logsrvd/tls_init.c:256 -#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:730 -#: plugins/sudoers/cvtsudoers.c:751 plugins/sudoers/cvtsudoers.c:1431 -#: plugins/sudoers/cvtsudoers_csv.c:695 plugins/sudoers/cvtsudoers_json.c:898 -#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1113 -#: plugins/sudoers/sudoers.c:1143 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/timestamp.c:460 plugins/sudoers/tsdump.c:128 -#: plugins/sudoers/visudo.c:971 +#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:751 +#: plugins/sudoers/cvtsudoers.c:772 plugins/sudoers/cvtsudoers.c:1452 +#: plugins/sudoers/cvtsudoers_csv.c:697 plugins/sudoers/cvtsudoers_json.c:902 +#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1310 +#: plugins/sudoers/sudoers.c:1334 plugins/sudoers/sudoreplay.c:1496 +#: plugins/sudoers/timestamp.c:485 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:982 #, c-format msgid "unable to open %s" msgstr "ne eblas malfermi: %s" -#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:105 -#: logsrvd/logsrv_util.c:112 plugins/sudoers/sudoreplay.c:362 -#: plugins/sudoers/sudoreplay.c:368 +#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:111 +#: logsrvd/logsrv_util.c:118 plugins/sudoers/sudoreplay.c:355 +#: plugins/sudoers/sudoreplay.c:361 #, c-format msgid "unable to open %s/%s" msgstr "ne eblas malfermi: %s/%s" @@ -718,22 +713,22 @@ 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:839 logsrvd/logsrvd_journal.c:195 +#: logsrvd/iolog_writer.c:839 logsrvd/logsrvd_journal.c:198 #, c-format msgid "unable to rename %s to %s" msgstr "ne eblas alinomo de %s al %s" -#: logsrvd/logsrv_util.c:147 logsrvd/logsrv_util.c:176 +#: logsrvd/logsrv_util.c:153 logsrvd/logsrv_util.c:182 #, c-format msgid "%s/%s: unable to find resume point [%lld, %ld]" msgstr "%s/%s: ne eblas trovi daŭrigan punkton [%lld, %ld]" -#: logsrvd/logsrv_util.c:159 +#: logsrvd/logsrv_util.c:165 #, c-format msgid "missing I/O log file %s/%s" msgstr "mankas eneliga protokolo %s/%s" -#: logsrvd/logsrv_util.c:166 +#: logsrvd/logsrv_util.c:172 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: ne eblas serĉi antaŭen: %zu" @@ -742,223 +737,224 @@ msgid "unable to connect to relay" msgstr "ne eblas konektiĝi al relajso" -#: logsrvd/logsrvd.c:330 logsrvd/logsrvd_relay.c:842 +#: logsrvd/logsrvd.c:338 logsrvd/logsrvd_relay.c:844 #, c-format msgid "server message too large: %zu" msgstr "servila mesaĝo tro granda: %zu" -#: logsrvd/logsrvd.c:422 logsrvd/logsrvd.c:545 logsrvd/logsrvd.c:631 -#: logsrvd/logsrvd.c:873 logsrvd/logsrvd.c:887 logsrvd/logsrvd.c:1049 -#: logsrvd/logsrvd.c:1174 logsrvd/logsrvd.c:1347 logsrvd/logsrvd.c:1365 -#: logsrvd/logsrvd.c:1464 logsrvd/logsrvd.c:1589 logsrvd/logsrvd.c:1773 -#: logsrvd/logsrvd_journal.c:494 logsrvd/logsrvd_local.c:238 +#: logsrvd/logsrvd.c:430 logsrvd/logsrvd.c:553 logsrvd/logsrvd.c:639 +#: logsrvd/logsrvd.c:881 logsrvd/logsrvd.c:895 logsrvd/logsrvd.c:1057 +#: logsrvd/logsrvd.c:1182 logsrvd/logsrvd.c:1355 logsrvd/logsrvd.c:1373 +#: logsrvd/logsrvd.c:1472 logsrvd/logsrvd.c:1597 logsrvd/logsrvd.c:1784 +#: logsrvd/logsrvd_journal.c:502 logsrvd/logsrvd_local.c:238 #: logsrvd/logsrvd_queue.c:164 logsrvd/logsrvd_relay.c:172 #: logsrvd/logsrvd_relay.c:249 logsrvd/logsrvd_relay.c:253 -#: logsrvd/logsrvd_relay.c:389 logsrvd/logsrvd_relay.c:581 -#: logsrvd/logsrvd_relay.c:742 logsrvd/logsrvd_relay.c:1131 -#: logsrvd/sendlog.c:1291 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 -#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:278 -#: plugins/sudoers/iolog.c:1033 plugins/sudoers/iolog.c:1166 -#: plugins/sudoers/iolog.c:1264 plugins/sudoers/log_client.c:121 +#: logsrvd/logsrvd_relay.c:391 logsrvd/logsrvd_relay.c:583 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:1133 +#: logsrvd/sendlog.c:1300 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:277 +#: plugins/sudoers/iolog.c:1030 plugins/sudoers/iolog.c:1163 +#: plugins/sudoers/iolog.c:1261 plugins/sudoers/log_client.c:121 #: plugins/sudoers/log_client.c:343 plugins/sudoers/log_client.c:359 -#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:611 -#: plugins/sudoers/log_client.c:618 plugins/sudoers/log_client.c:1103 -#: plugins/sudoers/log_client.c:1385 plugins/sudoers/log_client.c:1426 -#: plugins/sudoers/log_client.c:1434 plugins/sudoers/log_client.c:1593 -#: plugins/sudoers/log_client.c:1711 plugins/sudoers/log_client.c:2040 -#: plugins/sudoers/log_client.c:2048 plugins/sudoers/logging.c:147 -#: plugins/sudoers/logging.c:205 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 +#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:613 +#: plugins/sudoers/log_client.c:620 plugins/sudoers/log_client.c:1111 +#: plugins/sudoers/log_client.c:1392 plugins/sudoers/log_client.c:1433 +#: plugins/sudoers/log_client.c:1441 plugins/sudoers/log_client.c:1600 +#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:2053 +#: plugins/sudoers/log_client.c:2061 plugins/sudoers/logging.c:147 +#: plugins/sudoers/logging.c:205 plugins/sudoers/sudoreplay.c:519 +#: plugins/sudoers/sudoreplay.c:566 plugins/sudoers/sudoreplay.c:808 +#: plugins/sudoers/sudoreplay.c:920 plugins/sudoers/sudoreplay.c:1011 +#: plugins/sudoers/sudoreplay.c:1026 plugins/sudoers/sudoreplay.c:1033 +#: plugins/sudoers/sudoreplay.c:1040 plugins/sudoers/sudoreplay.c:1047 +#: plugins/sudoers/sudoreplay.c:1054 plugins/sudoers/sudoreplay.c:1181 msgid "unable to add event to queue" msgstr "ne eblas aldoni eventon al atendovico" -#: logsrvd/logsrvd.c:446 logsrvd/logsrvd.c:483 logsrvd/logsrvd.c:515 -#: logsrvd/logsrvd.c:569 logsrvd/logsrvd.c:648 logsrvd/logsrvd.c:684 -#: logsrvd/logsrvd.c:720 logsrvd/logsrvd.c:756 logsrvd/logsrvd_relay.c:510 -#: logsrvd/logsrvd_relay.c:543 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:577 logsrvd/logsrvd.c:656 logsrvd/logsrvd.c:692 +#: logsrvd/logsrvd.c:728 logsrvd/logsrvd.c:764 logsrvd/logsrvd_relay.c:512 +#: logsrvd/logsrvd_relay.c:545 #, c-format msgid "unexpected state %d for %s" msgstr "neatendita stato %d por %s" -#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 -#: logsrvd/logsrvd.c:570 logsrvd/logsrvd.c:649 logsrvd/logsrvd.c:685 -#: logsrvd/logsrvd.c:721 logsrvd/logsrvd.c:757 logsrvd/logsrvd_relay.c:512 -#: logsrvd/logsrvd_relay.c:545 +#: logsrvd/logsrvd.c:455 logsrvd/logsrvd.c:492 logsrvd/logsrvd.c:524 +#: logsrvd/logsrvd.c:578 logsrvd/logsrvd.c:657 logsrvd/logsrvd.c:693 +#: logsrvd/logsrvd.c:729 logsrvd/logsrvd.c:765 logsrvd/logsrvd_relay.c:514 +#: logsrvd/logsrvd_relay.c:547 msgid "state machine error" msgstr "statmaŝina eraro" -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:454 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:462 msgid "invalid AcceptMessage" msgstr "nevalida AcceptMessage" -#: logsrvd/logsrvd.c:490 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:499 msgid "invalid RejectMessage" msgstr "nevalida RejectMessage" -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:530 logsrvd/logsrvd.c:531 msgid "invalid ExitMessage" msgstr "nevalida ExitMessage" -#: logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:577 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:585 msgid "invalid RestartMessage" msgstr "nevalida RestartMessage" -#: logsrvd/logsrvd.c:611 logsrvd/logsrvd.c:612 +#: logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:620 msgid "invalid AlertMessage" msgstr "nevalida AlertMessage" -#: logsrvd/logsrvd.c:653 logsrvd/logsrvd.c:689 logsrvd/logsrvd.c:725 +#: logsrvd/logsrvd.c:661 logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:733 #, c-format msgid "%s: unexpected IoBuffer" msgstr "%s: neatendita IoBuffer" -#: logsrvd/logsrvd.c:654 logsrvd/logsrvd.c:690 logsrvd/logsrvd.c:726 +#: logsrvd/logsrvd.c:662 logsrvd/logsrvd.c:698 logsrvd/logsrvd.c:734 msgid "protocol error" msgstr "protokolo-eraro" -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:661 +#: logsrvd/logsrvd.c:668 logsrvd/logsrvd.c:669 msgid "invalid IoBuffer" msgstr "malvalida IoBuffer" -#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:697 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:705 msgid "invalid ChangeWindowSize" msgstr "nevalida ChangeWindowSize" -#: logsrvd/logsrvd.c:732 logsrvd/logsrvd.c:733 +#: logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:741 msgid "invalid CommandSuspend" msgstr "nevalida CommandSuspend" -#: logsrvd/logsrvd.c:782 logsrvd/logsrvd_journal.c:293 -#: logsrvd/logsrvd_relay.c:652 logsrvd/sendlog.c:1192 -#: plugins/sudoers/log_client.c:1583 +#: logsrvd/logsrvd.c:790 logsrvd/logsrvd_journal.c:301 +#: logsrvd/logsrvd_relay.c:654 logsrvd/sendlog.c:1201 +#: plugins/sudoers/log_client.c:1590 #, c-format msgid "unable to unpack %s size %zu" msgstr "ne malpakeblas %s, grando %zu" -#: logsrvd/logsrvd.c:827 logsrvd/logsrvd_journal.c:367 -#: logsrvd/logsrvd_relay.c:676 +#: logsrvd/logsrvd.c:835 logsrvd/logsrvd_journal.c:375 +#: logsrvd/logsrvd_relay.c:678 #, 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:829 +#: logsrvd/logsrvd.c:837 msgid "unrecognized ClientMessage type" msgstr "nekonata ClientMessage-tipo" -#: logsrvd/logsrvd.c:919 +#: logsrvd/logsrvd.c:927 #, c-format msgid "timed out writing to client %s" msgstr "eksvalidiĝo dum skribado al kliento %s" -#: logsrvd/logsrvd.c:924 logsrvd/logsrvd_relay.c:914 logsrvd/sendlog.c:1395 +#: logsrvd/logsrvd.c:932 logsrvd/logsrvd_relay.c:916 logsrvd/sendlog.c:1404 #, c-format msgid "missing write buffer for client %s" msgstr "mankanta skribobufo por kliento %s" -#: logsrvd/logsrvd.c:1020 +#: logsrvd/logsrvd.c:1028 #, c-format msgid "timed out reading from client %s" msgstr "eksvalidiĝo dum legado el kliento %s" -#: logsrvd/logsrvd.c:1061 logsrvd/logsrvd_relay.c:777 +#: logsrvd/logsrvd.c:1069 logsrvd/logsrvd_relay.c:779 #, c-format msgid "EOF from %s without proper TLS shutdown" msgstr "Dosierfino de %s sen konvena TLS-finiĝo" -#: logsrvd/logsrvd.c:1105 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:322 -#: plugins/sudoers/log_client.c:721 +#: logsrvd/logsrvd.c:1113 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:331 +#: plugins/sudoers/log_client.c:723 #, c-format msgid "client message too large: %zu" msgstr "klienta mesaĝo tro grandas: %zu" -#: logsrvd/logsrvd.c:1106 logsrvd/logsrvd_journal.c:256 -#: logsrvd/logsrvd_journal.c:257 +#: logsrvd/logsrvd.c:1114 logsrvd/logsrvd_journal.c:259 +#: logsrvd/logsrvd_journal.c:260 msgid "client message too large" msgstr "klienta mesaĝo tro grandas" -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1125 +#: logsrvd/logsrvd.c:1132 logsrvd/logsrvd.c:1133 msgid "invalid ClientMessage" msgstr "nevalida ClientMessage" -#: logsrvd/logsrvd.c:1425 +#: logsrvd/logsrvd.c:1433 msgid "unable to get remote IP addr" msgstr "ne eblas atingi foran IP-adreson" -#: logsrvd/logsrvd.c:1456 logsrvd/tls_client.c:203 +#: logsrvd/logsrvd.c:1464 logsrvd/tls_client.c:203 #: plugins/sudoers/log_client.c:281 #, 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:1639 logsrvd/logsrvd.c:1992 +#: logsrvd/logsrvd.c:1647 logsrvd/logsrvd.c:2003 msgid "unable to setup listen socket" msgstr "ne eblas agordi aŭskultan ŝtopilingon" -#: logsrvd/logsrvd.c:1756 +#: logsrvd/logsrvd.c:1767 #, c-format msgid "unexpected signal %d" msgstr "neatendita signalo %d" -#: logsrvd/logsrvd.c:1894 +#: logsrvd/logsrvd.c:1905 msgid "sudo log server" msgstr "protokolo-servilo de sudo" -#: logsrvd/logsrvd.c:1896 logsrvd/sendlog.c:121 +#: logsrvd/logsrvd.c:1907 logsrvd/sendlog.c:121 msgid "Options:" msgstr "Modifiloj:" -#: logsrvd/logsrvd.c:1898 +#: logsrvd/logsrvd.c:1909 msgid "path to configuration file" msgstr "vojo al la agordo-dosiero" -#: logsrvd/logsrvd.c:1900 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1911 logsrvd/sendlog.c:123 msgid "display help message and exit" msgstr "montri helpan mesaĝon kaj finiĝi" -#: logsrvd/logsrvd.c:1902 +#: logsrvd/logsrvd.c:1913 msgid "do not fork, run in the foreground" msgstr "ne disforkiĝi, plenumiĝi en la malfono" -#: logsrvd/logsrvd.c:1904 +#: logsrvd/logsrvd.c:1915 msgid "percent chance connections will drop" msgstr "elcenta ŝanco, ke konektoj malkonektiĝos" -#: logsrvd/logsrvd.c:1906 logsrvd/sendlog.c:153 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:153 msgid "display version information and exit" msgstr "montri eldonan informon kaj finiĝi" -#: logsrvd/logsrvd.c:1956 logsrvd/sendlog.c:1702 +#: logsrvd/logsrvd.c:1967 logsrvd/sendlog.c:1711 msgid "Protobuf-C version 1.3 or higher required" msgstr "Protobuf-C, eldono 1.3 aŭ pli postulata" -#: logsrvd/logsrvd.c:1972 +#: logsrvd/logsrvd.c:1983 #, c-format msgid "invalid random drop value: %s" msgstr "validiga hazarda interrompiĝo-valoro: %s" -#: logsrvd/logsrvd.c:1975 logsrvd/sendlog.c:1756 -#: plugins/sudoers/cvtsudoers.c:246 plugins/sudoers/sudoreplay.c:301 -#: plugins/sudoers/visudo.c:182 +#: logsrvd/logsrvd.c:1986 logsrvd/sendlog.c:1765 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/sudoreplay.c:294 +#: plugins/sudoers/visudo.c:186 #, c-format msgid "%s version %s\n" msgstr "%s eldono %s\n" -#: logsrvd/logsrvd_conf.c:422 plugins/sudoers/check.c:353 +#: logsrvd/logsrvd_conf.c:422 plugins/sudoers/check.c:358 #: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:122 -#: plugins/sudoers/policy.c:1264 plugins/sudoers/sudoers.c:505 -#: plugins/sudoers/sudoers.c:1372 plugins/sudoers/testsudoers.c:215 -#: plugins/sudoers/testsudoers.c:382 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:939 +#: plugins/sudoers/sudoers.c:1041 plugins/sudoers/sudoers.c:1062 +#: plugins/sudoers/sudoers.c:1555 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:393 #, c-format msgid "unknown user %s" msgstr "nekonata uzanto %s" #: logsrvd/logsrvd_conf.c:439 plugins/sudoers/iolog.c:148 -#: plugins/sudoers/sudoers.c:510 plugins/sudoers/sudoers.c:1406 -#: plugins/sudoers/testsudoers.c:406 +#: plugins/sudoers/sudoers.c:453 plugins/sudoers/sudoers.c:1589 +#: plugins/sudoers/testsudoers.c:417 #, c-format msgid "unknown group %s" msgstr "nekonata grupo %s" @@ -1030,8 +1026,8 @@ msgid "%s:%d [%s] illegal key: %s" msgstr "%s:%d [%s] nevalida ŝlosilo: %s" -#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:268 -#: plugins/sudoers/logging.c:1029 +#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:269 +#: plugins/sudoers/logging.c:1046 #, c-format msgid "unable to open log file %s" msgstr "ne eblas malfermi protokolon %s" @@ -1044,49 +1040,49 @@ msgid "unable to initialize relay TLS context" msgstr "ne eblas ekigi relajsan SSL-kuntekston" -#: logsrvd/logsrvd_journal.c:146 logsrvd/logsrvd_journal.c:421 -#: logsrvd/logsrvd_journal.c:426 +#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:434 msgid "unable to create journal file" msgstr "ne eblas krei ĵurnalon" -#: logsrvd/logsrvd_journal.c:150 logsrvd/logsrvd_queue.c:109 -#: plugins/sudoers/visudo.c:1026 +#: logsrvd/logsrvd_journal.c:153 logsrvd/logsrvd_queue.c:109 +#: plugins/sudoers/visudo.c:1038 #, c-format msgid "unable to lock %s" msgstr "ne eblas ŝlosi: %s" -#: logsrvd/logsrvd_journal.c:153 +#: logsrvd/logsrvd_journal.c:156 msgid "unable to lock journal file" msgstr "ne eblas ŝlosi ĵurnalon" -#: logsrvd/logsrvd_journal.c:161 +#: logsrvd/logsrvd_journal.c:164 msgid "unable to open journal file" msgstr "ne eblas malfermi ĵurnalon" -#: logsrvd/logsrvd_journal.c:182 logsrvd/logsrvd_journal.c:457 -#: logsrvd/logsrvd_journal.c:462 +#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:470 msgid "unable to write journal file" msgstr "ne eblas skribi ĵurnalon: %s" -#: logsrvd/logsrvd_journal.c:190 logsrvd/logsrvd_journal.c:197 +#: logsrvd/logsrvd_journal.c:193 logsrvd/logsrvd_journal.c:200 msgid "unable to rename journal file" msgstr "ne eblas alinomi ĵurnalon" -#: logsrvd/logsrvd_journal.c:244 logsrvd/logsrvd_journal.c:245 -#: logsrvd/logsrvd_journal.c:279 logsrvd/logsrvd_journal.c:280 +#: logsrvd/logsrvd_journal.c:247 logsrvd/logsrvd_journal.c:248 +#: logsrvd/logsrvd_journal.c:287 logsrvd/logsrvd_journal.c:288 msgid "unexpected EOF reading journal file" msgstr "neatendita dosierfino en ĵurnalo" -#: logsrvd/logsrvd_journal.c:248 logsrvd/logsrvd_journal.c:249 -#: logsrvd/logsrvd_journal.c:283 logsrvd/logsrvd_journal.c:284 +#: logsrvd/logsrvd_journal.c:251 logsrvd/logsrvd_journal.c:252 +#: logsrvd/logsrvd_journal.c:291 logsrvd/logsrvd_journal.c:292 msgid "error reading journal file" msgstr "eraro dum legi prelegan ĵurnalon" -#: logsrvd/logsrvd_journal.c:295 logsrvd/logsrvd_journal.c:381 +#: logsrvd/logsrvd_journal.c:303 logsrvd/logsrvd_journal.c:389 msgid "invalid journal file, unable to restart" msgstr "nevalida ĵurnalo, ne eblas restarti" -#: logsrvd/logsrvd_journal.c:440 +#: logsrvd/logsrvd_journal.c:448 #, c-format msgid "unable to seek to [%lld, %ld] in journal file %s" msgstr "ne eblas atingi punkton [%lld, %ld] en ĵurnalo %s" @@ -1144,7 +1140,7 @@ #: logsrvd/logsrvd_local.c:599 logsrvd/logsrvd_local.c:607 #: logsrvd/logsrvd_local.c:655 logsrvd/logsrvd_local.c:690 -#: plugins/sudoers/sudoreplay.c:351 +#: plugins/sudoers/sudoreplay.c:344 toke.l:982 toke.l:985 #, c-format msgid "%s/%s: %s" msgstr "%s/%s: %s" @@ -1165,69 +1161,69 @@ msgid "error writing CommandSuspend" msgstr "neskribela CommandSuspend" -#: logsrvd/logsrvd_relay.c:435 +#: logsrvd/logsrvd_relay.c:437 msgid "TLS handshake with relay host failed" msgstr "Malsukcesis TLS-manpremo kun relajsa retnodo" -#: logsrvd/logsrvd_relay.c:463 +#: logsrvd/logsrvd_relay.c:465 msgid "unable to connect to relay host" msgstr "ne eblas konektiĝi al relajsa retnodo" -#: logsrvd/logsrvd_relay.c:518 +#: logsrvd/logsrvd_relay.c:520 #, c-format msgid "%s: invalid ServerHello, missing server_id" msgstr "%s: nevalida ServerHello, server_id mankas" -#: logsrvd/logsrvd_relay.c:520 logsrvd/sendlog.c:1096 -#: plugins/sudoers/log_client.c:1469 +#: logsrvd/logsrvd_relay.c:522 logsrvd/sendlog.c:1105 +#: plugins/sudoers/log_client.c:1476 msgid "invalid ServerHello" msgstr "nevalida ServerHello" -#: logsrvd/logsrvd_relay.c:679 +#: logsrvd/logsrvd_relay.c:681 msgid "unrecognized ServerMessage type" msgstr "nekonata ServerMessage-tipo" -#: logsrvd/logsrvd_relay.c:708 +#: logsrvd/logsrvd_relay.c:710 #, c-format msgid "timed out reading from relay %s (%s)" msgstr "eksvalidiĝo dum legado el relajso %s (%s)" -#: logsrvd/logsrvd_relay.c:710 +#: logsrvd/logsrvd_relay.c:712 msgid "timeout reading from relay" msgstr "eksvalidiĝo dum legado el relajso" -#: logsrvd/logsrvd_relay.c:762 +#: logsrvd/logsrvd_relay.c:764 msgid "relay host name does not match certificate" msgstr "relajsa retnodnomo ne kongruas kun atestilo" -#: logsrvd/logsrvd_relay.c:768 logsrvd/logsrvd_relay.c:782 -#: logsrvd/logsrvd_relay.c:789 +#: logsrvd/logsrvd_relay.c:770 logsrvd/logsrvd_relay.c:784 +#: logsrvd/logsrvd_relay.c:791 msgid "error reading from relay" msgstr "eraro dum legi el relajso" -#: logsrvd/logsrvd_relay.c:810 +#: logsrvd/logsrvd_relay.c:812 msgid "unable to read from relay" msgstr "ne eblas legi el relajso" -#: logsrvd/logsrvd_relay.c:825 logsrvd/logsrvd_relay.c:943 +#: logsrvd/logsrvd_relay.c:827 logsrvd/logsrvd_relay.c:945 msgid "relay server closed connection" msgstr "relajsa servilo fermis la konekton" -#: logsrvd/logsrvd_relay.c:843 +#: logsrvd/logsrvd_relay.c:845 msgid "server message too large" msgstr "servila mesaĝo tro granda" -#: logsrvd/logsrvd_relay.c:907 +#: logsrvd/logsrvd_relay.c:909 #, c-format msgid "timed out writing to relay %s (%s)" msgstr "eksvalidiĝo dum skribado al relajso %s (%s)" -#: logsrvd/logsrvd_relay.c:909 +#: logsrvd/logsrvd_relay.c:911 msgid "timeout writing to relay" msgstr "eksvalidiĝo dum skribado al relajso" -#: logsrvd/logsrvd_relay.c:962 logsrvd/logsrvd_relay.c:969 -#: logsrvd/logsrvd_relay.c:981 +#: logsrvd/logsrvd_relay.c:964 logsrvd/logsrvd_relay.c:971 +#: logsrvd/logsrvd_relay.c:983 msgid "error writing to relay" msgstr "eraro dum skribi al relajso" @@ -1292,79 +1288,79 @@ msgid "unable to get server IP addr" msgstr "ne eblas atingi servilan IP-adreson" -#: logsrvd/sendlog.c:300 plugins/sudoers/sudoreplay.c:871 +#: logsrvd/sendlog.c:309 plugins/sudoers/sudoreplay.c:868 #, c-format msgid "unable to read %s/%s: %s" msgstr "ne eblas legi je %s/%s: %s" -#: logsrvd/sendlog.c:1020 plugins/sudoers/iolog.c:951 -#: plugins/sudoers/iolog.c:1026 +#: logsrvd/sendlog.c:1029 plugins/sudoers/iolog.c:948 +#: plugins/sudoers/iolog.c:1023 #, c-format msgid "unexpected I/O event %d" msgstr "neatendita eneliga evento %d" -#: logsrvd/sendlog.c:1073 logsrvd/sendlog.c:1090 logsrvd/sendlog.c:1124 -#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1395 -#: plugins/sudoers/log_client.c:1463 plugins/sudoers/log_client.c:1502 +#: logsrvd/sendlog.c:1082 logsrvd/sendlog.c:1099 logsrvd/sendlog.c:1133 +#: plugins/sudoers/log_client.c:1126 plugins/sudoers/log_client.c:1402 +#: plugins/sudoers/log_client.c:1470 plugins/sudoers/log_client.c:1509 #, c-format msgid "%s: unexpected state %d" msgstr "%s: neatendita stato %d" -#: logsrvd/sendlog.c:1160 plugins/sudoers/log_client.c:1551 +#: logsrvd/sendlog.c:1169 plugins/sudoers/log_client.c:1558 #, c-format msgid "error message received from server: %s" msgstr "erarmesaĝo ricevita el servilo: %s" -#: logsrvd/sendlog.c:1173 plugins/sudoers/log_client.c:1564 +#: logsrvd/sendlog.c:1182 plugins/sudoers/log_client.c:1571 #, c-format msgid "abort message received from server: %s" msgstr "abortiga mesaĝo ricevita el servilo: %s" -#: logsrvd/sendlog.c:1232 plugins/sudoers/log_client.c:1614 +#: logsrvd/sendlog.c:1241 plugins/sudoers/log_client.c:1621 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s neatendita valoro %d de type_case" -#: logsrvd/sendlog.c:1261 +#: logsrvd/sendlog.c:1270 msgid "timeout reading from server" msgstr "eksvalidiĝo dum legado el servilo" -#: logsrvd/sendlog.c:1310 plugins/sudoers/log_client.c:1730 +#: logsrvd/sendlog.c:1319 plugins/sudoers/log_client.c:1743 msgid "host name does not match certificate" msgstr "retnodnomo ne kongruas kun atestilo" -#: logsrvd/sendlog.c:1343 +#: logsrvd/sendlog.c:1352 msgid "premature EOF" msgstr "trofrua dosierfino" -#: logsrvd/sendlog.c:1356 plugins/sudoers/log_client.c:1777 +#: logsrvd/sendlog.c:1365 plugins/sudoers/log_client.c:1790 #, c-format msgid "server message too large: %u" msgstr "servila mesaĝo tro granda: %u" -#: logsrvd/sendlog.c:1412 +#: logsrvd/sendlog.c:1421 msgid "timeout writing to server" msgstr "eksvalidiĝo dum skribado al servilo" -#: logsrvd/sendlog.c:1779 +#: logsrvd/sendlog.c:1788 msgid "both restart point and iolog ID must be specified" msgstr "kaj restartiga punkto kaj iolog-identigilo estas specifendaj" -#: logsrvd/sendlog.c:1783 +#: logsrvd/sendlog.c:1792 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:1859 +#: logsrvd/sendlog.c:1868 #, c-format msgid "exited prematurely with state %d" msgstr "trofrue finiĝis kun stato %d" -#: logsrvd/sendlog.c:1860 +#: logsrvd/sendlog.c:1869 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "pasinta tempo sentita al servilo [%lld, %ld]" -#: logsrvd/sendlog.c:1862 +#: logsrvd/sendlog.c:1871 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "kunsendita punkto ricevita el servilo [%lld, %ld]" @@ -1422,12 +1418,12 @@ msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "ne ablas elekti minimuman eldonon de TLS al 1.2: %s" -#: plugins/sudoers/audit.c:269 plugins/sudoers/audit.c:429 -#: plugins/sudoers/log_client.c:951 plugins/sudoers/log_client.c:1000 -#: plugins/sudoers/log_client.c:1049 plugins/sudoers/log_client.c:1175 -#: plugins/sudoers/logging.c:591 plugins/sudoers/logging.c:689 -#: plugins/sudoers/logging.c:792 plugins/sudoers/logging.c:983 -#: plugins/sudoers/policy.c:124 +#: plugins/sudoers/audit.c:268 plugins/sudoers/audit.c:428 +#: plugins/sudoers/log_client.c:959 plugins/sudoers/log_client.c:1008 +#: plugins/sudoers/log_client.c:1057 plugins/sudoers/log_client.c:1182 +#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:711 +#: plugins/sudoers/logging.c:833 plugins/sudoers/logging.c:1000 +#: plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "ne eblas akiri la tempon de la tago" @@ -1436,28 +1432,28 @@ msgid "unable to change password for %s" msgstr "ne eblas ŝanĝi pasvorton por %s" -#: plugins/sudoers/auth/bsdauth.c:74 +#: plugins/sudoers/auth/bsdauth.c:77 #, c-format msgid "unable to get login class for user %s" msgstr "ne eblas akiri ensalutan klason por uzanto %s" -#: plugins/sudoers/auth/bsdauth.c:79 -msgid "unable to begin bsd authentication" -msgstr "ne eblas komenci bsd-aŭtentikigon" - -#: plugins/sudoers/auth/bsdauth.c:87 +#: plugins/sudoers/auth/bsdauth.c:84 msgid "invalid authentication type" msgstr "malvalida aŭtentikiga tipo" +#: plugins/sudoers/auth/bsdauth.c:89 +msgid "unable to begin BSD authentication" +msgstr "ne eblas komenci BSD-aŭtentikigon" + #: plugins/sudoers/auth/bsdauth.c:96 msgid "unable to initialize BSD authentication" msgstr "ne eblas komenci BSD-aŭtentikigon" -#: plugins/sudoers/auth/bsdauth.c:186 +#: plugins/sudoers/auth/bsdauth.c:188 msgid "your account has expired" -msgstr "via konto ekzvalidiĝis" +msgstr "via konto eksvalidiĝis" -#: plugins/sudoers/auth/bsdauth.c:188 +#: plugins/sudoers/auth/bsdauth.c:190 msgid "approval failed" msgstr "aprobo malsukcesis" @@ -1581,11 +1577,11 @@ msgid "User ID locked for SecurID Authentication" msgstr "Uzanto-identigilo ŝlosita pro Aŭtentikigo SecurID" -#: plugins/sudoers/auth/securid5.c:119 plugins/sudoers/auth/securid5.c:170 +#: plugins/sudoers/auth/securid5.c:119 plugins/sudoers/auth/securid5.c:171 msgid "invalid username length for SecurID" msgstr "malvalida salutnoma longo por SecurID" -#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:175 +#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:176 msgid "invalid Authentication Handle for SecurID" msgstr "malvalida Aŭtentikiga Traktilo por SecurID" @@ -1593,11 +1589,11 @@ msgid "SecurID communication failed" msgstr "Komunikiĝo kun SecurID malsukcesis" -#: plugins/sudoers/auth/securid5.c:131 plugins/sudoers/auth/securid5.c:218 +#: plugins/sudoers/auth/securid5.c:131 plugins/sudoers/auth/securid5.c:219 msgid "unknown SecurID error" msgstr "nekonata SecurID-eraro" -#: plugins/sudoers/auth/securid5.c:165 +#: plugins/sudoers/auth/securid5.c:166 msgid "invalid passcode length for SecurID" msgstr "malvalida paskoda longo por SecurID" @@ -1667,14 +1663,21 @@ " #3) Granda povo devigas grandan responson.\n" "\n" -#: plugins/sudoers/check.c:348 plugins/sudoers/check.c:358 -#: plugins/sudoers/parse.c:64 plugins/sudoers/sudoers.c:920 -#: plugins/sudoers/sudoers.c:941 plugins/sudoers/tsdump.c:119 +#: plugins/sudoers/check.c:309 +msgid "" +"For security reasons, the password you type will not be visible.\n" +"\n" +msgstr "" +"Pro sekureco la pasvorto, kiun vi tajpos, ne videblos.\n" +"\n" + +#: plugins/sudoers/check.c:353 plugins/sudoers/check.c:363 +#: plugins/sudoers/parse.c:80 plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid %u" msgstr "nekonata uid %u" -#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1279 +#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1278 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" @@ -1689,85 +1692,84 @@ msgid "%s \"%s\" referenced but not defined" msgstr "%s \"%s\" estas referencita sed ne difinita" -#: plugins/sudoers/cvtsudoers.c:209 +#: plugins/sudoers/cvtsudoers.c:210 #, c-format msgid "order increment: %s: %s" msgstr "alkremento de ordo: %s: %s" -#: plugins/sudoers/cvtsudoers.c:228 +#: plugins/sudoers/cvtsudoers.c:229 #, c-format msgid "starting order: %s: %s" msgstr "komenca ordo: %s: %s" -#: plugins/sudoers/cvtsudoers.c:238 +#: plugins/sudoers/cvtsudoers.c:239 #, c-format msgid "order padding: %s: %s" msgstr "ŝtopado de ordo: %s: %s" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/visudo.c:184 +#: plugins/sudoers/cvtsudoers.c:249 plugins/sudoers/visudo.c:188 #, c-format msgid "%s grammar version %d\n" msgstr "%s gramatika eldono %d\n" -#: plugins/sudoers/cvtsudoers.c:277 plugins/sudoers/testsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:278 plugins/sudoers/testsudoers.c:163 #, c-format msgid "unsupported input format %s" msgstr "nesubtenata enig-formo %s" -#: plugins/sudoers/cvtsudoers.c:295 +#: plugins/sudoers/cvtsudoers.c:296 #, c-format msgid "unsupported output format %s" msgstr "nesubtenata elig-formo %s" -#: plugins/sudoers/cvtsudoers.c:385 +#: plugins/sudoers/cvtsudoers.c:386 #, c-format msgid "%s: input and output files must be different" msgstr "%s: eliga kaj eniga dosieroj devas esti malsamaj" -#: plugins/sudoers/cvtsudoers.c:399 plugins/sudoers/sudoers.c:166 -#: plugins/sudoers/sudoers.c:222 plugins/sudoers/testsudoers.c:254 -#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:650 -#: plugins/sudoers/visudo.c:975 +#: plugins/sudoers/cvtsudoers.c:400 plugins/sudoers/sudoers.c:163 +#: plugins/sudoers/sudoers.c:221 plugins/sudoers/testsudoers.c:263 +#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:657 msgid "unable to initialize sudoers default values" msgstr "ne eblas ekigi aŭtomatajn valorojn de sudoers" -#: plugins/sudoers/cvtsudoers.c:525 plugins/sudoers/ldap_conf.c:434 +#: plugins/sudoers/cvtsudoers.c:526 plugins/sudoers/ldap_conf.c:431 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" -#: plugins/sudoers/cvtsudoers.c:584 +#: plugins/sudoers/cvtsudoers.c:605 #, c-format msgid "%s: unknown key word %s" msgstr "%s: nekonata ŝlosilvorto %s" -#: plugins/sudoers/cvtsudoers.c:630 +#: plugins/sudoers/cvtsudoers.c:651 #, c-format msgid "invalid defaults type: %s" msgstr "malvalida defaŭlto-tipo: %s" -#: plugins/sudoers/cvtsudoers.c:653 +#: plugins/sudoers/cvtsudoers.c:674 #, c-format msgid "invalid suppression type: %s" msgstr "malvalida demeto-tipo: %s" -#: plugins/sudoers/cvtsudoers.c:694 plugins/sudoers/cvtsudoers.c:710 +#: plugins/sudoers/cvtsudoers.c:715 plugins/sudoers/cvtsudoers.c:731 #, c-format msgid "invalid filter: %s" msgstr "malvalida filtro: %s" -#: plugins/sudoers/cvtsudoers.c:754 plugins/sudoers/visudo.c:980 +#: plugins/sudoers/cvtsudoers.c:775 plugins/sudoers/visudo.c:992 #, c-format msgid "failed to parse %s file, unknown error" msgstr "malsukcesis analizi dosieron %s, nekonata eraro" -#: plugins/sudoers/cvtsudoers.c:1478 plugins/sudoers/sudoreplay.c:1145 -#: plugins/sudoers/timestamp.c:343 plugins/sudoers/timestamp.c:346 +#: plugins/sudoers/cvtsudoers.c:1499 plugins/sudoers/sudoreplay.c:1142 +#: plugins/sudoers/timestamp.c:368 plugins/sudoers/timestamp.c:371 #, c-format msgid "unable to write to %s" msgstr "ne eblas skribi al %s" -#: plugins/sudoers/cvtsudoers.c:1506 +#: plugins/sudoers/cvtsudoers.c:1527 #, c-format msgid "" "%s - convert between sudoers file formats\n" @@ -1776,7 +1778,7 @@ "%s - konverti inter dosierformoj de sudoers\n" "\n" -#: plugins/sudoers/cvtsudoers.c:1508 +#: plugins/sudoers/cvtsudoers.c:1529 msgid "" "\n" "Options:\n" @@ -1816,22 +1818,40 @@ " -s, --suppress=sekcioj demeti eligon el kelkaj sekcioj\n" " -V, --version montri informon pri versio kaj eliri" -#: plugins/sudoers/cvtsudoers_csv.c:452 plugins/sudoers/cvtsudoers_csv.c:466 -#: plugins/sudoers/cvtsudoers_json.c:657 plugins/sudoers/cvtsudoers_json.c:672 +#: plugins/sudoers/cvtsudoers_csv.c:192 plugins/sudoers/cvtsudoers_csv.c:199 +#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 +#: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:340 +#: plugins/sudoers/env.c:347 plugins/sudoers/env.c:458 +#: plugins/sudoers/ldap.c:509 plugins/sudoers/ldap.c:626 +#: plugins/sudoers/ldap.c:999 plugins/sudoers/ldap_conf.c:219 +#: plugins/sudoers/ldap_conf.c:310 plugins/sudoers/ldap_util.c:486 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:461 +#: plugins/sudoers/policy.c:824 plugins/sudoers/policy.c:835 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 +#: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/sudoreplay.c:1339 plugins/sudoers/sudoreplay.c:1345 +#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/toke_util.c:213 toke.l:996 toke.l:1259 +#, c-format +msgid "internal error, %s overflow" +msgstr "interna eraro, troo en %s" + +#: plugins/sudoers/cvtsudoers_csv.c:454 plugins/sudoers/cvtsudoers_csv.c:468 +#: plugins/sudoers/cvtsudoers_json.c:661 plugins/sudoers/cvtsudoers_json.c:676 #: plugins/sudoers/cvtsudoers_ldif.c:347 plugins/sudoers/cvtsudoers_ldif.c:360 -#: plugins/sudoers/ldap.c:510 +#: plugins/sudoers/ldap.c:493 msgid "unable to get GMT time" msgstr "ne eblas atingi GMT-tempon" -#: plugins/sudoers/cvtsudoers_csv.c:457 plugins/sudoers/cvtsudoers_csv.c:471 -#: plugins/sudoers/cvtsudoers_json.c:662 plugins/sudoers/cvtsudoers_json.c:677 +#: plugins/sudoers/cvtsudoers_csv.c:459 plugins/sudoers/cvtsudoers_csv.c:473 +#: plugins/sudoers/cvtsudoers_json.c:666 plugins/sudoers/cvtsudoers_json.c:681 #: plugins/sudoers/cvtsudoers_ldif.c:352 plugins/sudoers/cvtsudoers_ldif.c:365 -#: plugins/sudoers/ldap.c:518 +#: plugins/sudoers/ldap.c:501 msgid "unable to format timestamp" msgstr "ne eblas aranĝi tempo-indikilon" -#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:515 -#: plugins/sudoers/cvtsudoers_json.c:728 +#: plugins/sudoers/cvtsudoers_json.c:481 plugins/sudoers/cvtsudoers_json.c:516 +#: plugins/sudoers/cvtsudoers_json.c:732 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" msgstr "%s:%d:%d: nekonata ero de defaults \"%s\"" @@ -2640,66 +2660,65 @@ msgid "value \"%s\" is invalid for option \"%s\"" msgstr "valoro \"%s\" estas malvalida por parametro \"%s\"" -#: plugins/sudoers/defaults.c:1128 plugins/sudoers/policy.c:208 -#: plugins/sudoers/policy.c:217 +#: plugins/sudoers/defaults.c:1127 plugins/sudoers/policy.c:205 +#: plugins/sudoers/policy.c:214 #, c-format msgid "path name for \"%s\" too long" msgstr "vojnomo por \"%s\" tro longas" -#: plugins/sudoers/defaults.c:1134 +#: plugins/sudoers/defaults.c:1133 #, c-format msgid "values for \"%s\" must start with a '/', '~', or '*'" msgstr "valoroj por \"%s\" devas komenciĝi per '/', '~' aŭ '*'" -#: plugins/sudoers/defaults.c:1141 +#: plugins/sudoers/defaults.c:1140 #, c-format msgid "values for \"%s\" must start with a '/'" msgstr "valoroj por \"%s\" devas komenciĝi per '/'" +#: plugins/sudoers/editor.c:180 +#, c-format +msgid "ignoring editor: %.*s" +msgstr "ignoras redaktilon: %.*s" + +#: plugins/sudoers/editor.c:181 +msgid "editor arguments may not contain \"--\"" +msgstr "redaktiloj parametroj ne povas enhavi \"--\"" + #: plugins/sudoers/env.c:426 msgid "sudo_putenv: corrupted envp, length mismatch" msgstr "sudo_putenv: medio tro granda" -#: plugins/sudoers/env.c:1109 +#: plugins/sudoers/env.c:1113 msgid "unable to rebuild the environment" msgstr "ne eblas rekonstrui la medion" -#: plugins/sudoers/env.c:1183 +#: plugins/sudoers/env.c:1192 #, c-format 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/filedigest.c:49 +#: plugins/sudoers/filedigest.c:50 #, c-format -msgid "unsupported digest type %d for %s" -msgstr "nekonata resuma tipo %d por %s" +msgid "unsupported digest type %u for %s" +msgstr "nekonata resumo-tipo %u por %s" -#: plugins/sudoers/filedigest.c:78 +#: plugins/sudoers/filedigest.c:79 #, c-format msgid "%s: read error" msgstr "%s: lega eraro" -#: plugins/sudoers/group_plugin.c:169 -#, c-format -msgid "%s must be owned by uid %d" -msgstr "%s devas esti estrata de uid %d" - -#: plugins/sudoers/group_plugin.c:173 -#, c-format -msgid "%s must only be writable by owner" -msgstr "%s devas esti skribebla nur de estro" - -#: plugins/sudoers/group_plugin.c:185 plugins/sudoers/sssd.c:576 +#: plugins/sudoers/group_plugin.c:169 plugins/sudoers/sssd.c:576 #, c-format msgid "unable to load %s: %s" msgstr "ne eblas ŝarĝi je %s: %s" -#: plugins/sudoers/group_plugin.c:197 +#: plugins/sudoers/group_plugin.c:181 #, c-format msgid "unable to find symbol \"group_plugin\" in %s" msgstr "ne eblas trovi simbolon \"group_plugin\" en %s" -#: plugins/sudoers/group_plugin.c:202 +#: plugins/sudoers/group_plugin.c:186 #, c-format msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s: nekongrua grupa kromprogramo: ĉefa eldono %d, atendita %d" @@ -2718,80 +2737,80 @@ msgid "Local IP address and netmask pairs:\n" msgstr "Loka IP-adresa kaj retmaska paroj:\n" -#: plugins/sudoers/iolog.c:685 +#: plugins/sudoers/iolog.c:684 msgid "unable to update sequence file" msgstr "ne eblas ĝisdatigi sinsekvan dosieron" -#: plugins/sudoers/iolog.c:719 plugins/sudoers/iolog.c:909 -#: plugins/sudoers/iolog.c:1071 plugins/sudoers/iolog.c:1078 -#: plugins/sudoers/iolog.c:1199 plugins/sudoers/iolog.c:1206 -#: plugins/sudoers/iolog.c:1305 plugins/sudoers/iolog.c:1312 +#: plugins/sudoers/iolog.c:718 plugins/sudoers/iolog.c:906 +#: plugins/sudoers/iolog.c:1068 plugins/sudoers/iolog.c:1075 +#: plugins/sudoers/iolog.c:1196 plugins/sudoers/iolog.c:1203 +#: plugins/sudoers/iolog.c:1302 plugins/sudoers/iolog.c:1309 #, c-format msgid "unable to write to I/O log file: %s" msgstr "ne eblas skribi al eneliga protokoldosiero: %s" -#: plugins/sudoers/iolog.c:727 +#: plugins/sudoers/iolog.c:726 #, c-format msgid "unable to create %s/%s" msgstr "ne eblas krei: %s/%s" -#: plugins/sudoers/iolog.c:957 +#: plugins/sudoers/iolog.c:954 #, 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:1056 plugins/sudoers/iolog.c:1184 -#: plugins/sudoers/iolog.c:1289 plugins/sudoers/timestamp.c:879 -#: plugins/sudoers/timestamp.c:971 plugins/sudoers/visudo.c:552 -#: plugins/sudoers/visudo.c:558 +#: plugins/sudoers/iolog.c:1053 plugins/sudoers/iolog.c:1181 +#: plugins/sudoers/iolog.c:1286 plugins/sudoers/timestamp.c:904 +#: plugins/sudoers/timestamp.c:996 plugins/sudoers/visudo.c:559 +#: plugins/sudoers/visudo.c:565 msgid "unable to read the clock" msgstr "ne eblas legi la horloĝon" -#: plugins/sudoers/iolog.c:1281 plugins/sudoers/log_client.c:1193 -#: plugins/sudoers/log_client.c:1203 plugins/sudoers/log_client.c:1207 +#: plugins/sudoers/iolog.c:1278 plugins/sudoers/log_client.c:1200 +#: plugins/sudoers/log_client.c:1210 plugins/sudoers/log_client.c:1214 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: interna eraro, malvalida signalo %d" -#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:292 +#: plugins/sudoers/ldap.c:154 plugins/sudoers/ldap_conf.c:289 msgid "starttls not supported when using ldaps" msgstr "starttls ne estas regata dum uzo de ldaps" -#: plugins/sudoers/ldap.c:248 +#: plugins/sudoers/ldap.c:225 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "ne eblas ekigi SSL-asertilon kaj ŝlosilan datumbazon: %s" -#: plugins/sudoers/ldap.c:251 +#: plugins/sudoers/ldap.c:228 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "por uzi SSL, TLS_CERT devas havi valoron en %s" -#: plugins/sudoers/ldap.c:1712 +#: plugins/sudoers/ldap.c:1587 #, c-format msgid "unable to initialize LDAP: %s" msgstr "ne eblas ekigi LDAP-on: %s" -#: plugins/sudoers/ldap.c:1749 +#: plugins/sudoers/ldap.c:1624 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "start_tls specifita sed LDAP-bibliotekoj ne havas la funkciojn ldap_start_tls_s() kaj ldap_start_tls_s_np()" -#: plugins/sudoers/ldap.c:1886 plugins/sudoers/parse_ldif.c:748 +#: plugins/sudoers/ldap.c:1761 plugins/sudoers/parse_ldif.c:748 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "malvalida atributo de sudoOrder: %s" -#: plugins/sudoers/ldap_conf.c:200 +#: plugins/sudoers/ldap_conf.c:197 #, c-format msgid "%s: port too large" msgstr "%s: pordo tro grandas" -#: plugins/sudoers/ldap_conf.c:261 +#: plugins/sudoers/ldap_conf.c:258 #, c-format msgid "unsupported LDAP uri type: %s" msgstr "nekonata retadresa tipo de LDAP: %s" -#: plugins/sudoers/ldap_conf.c:288 +#: plugins/sudoers/ldap_conf.c:285 msgid "unable to mix ldap and ldaps URIs" msgstr "ne eblas miksi sekurajn kaj nesekurajn retadresojn de LDAP" @@ -2817,7 +2836,7 @@ msgstr "ne eblas sendi revizian mesaĝon" #: plugins/sudoers/log_client.c:125 plugins/sudoers/log_client.c:412 -#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:2056 +#: plugins/sudoers/log_client.c:1447 plugins/sudoers/log_client.c:2069 msgid "error in event loop" msgstr "eraro en evento-iteracio" @@ -2851,28 +2870,28 @@ msgid "TLS connection to %s:%s failed: %s" msgstr "TLS-konekto al %s:%s malsukcesis: %s" -#: plugins/sudoers/log_client.c:543 +#: plugins/sudoers/log_client.c:545 msgid "TLS initialization was unsuccessful" msgstr "TLS-komenciĝo malsukcesis" -#: plugins/sudoers/log_client.c:553 +#: plugins/sudoers/log_client.c:555 msgid "TLS handshake was unsuccessful" msgstr "TLS-manpremo malsukcesis" -#: plugins/sudoers/log_client.c:1211 +#: plugins/sudoers/log_client.c:1218 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: interna eraro, malvalida finiĝo-stato %d" -#: plugins/sudoers/log_client.c:1740 plugins/sudoers/log_client.c:1764 +#: plugins/sudoers/log_client.c:1753 plugins/sudoers/log_client.c:1777 msgid "lost connection to log server" msgstr "konekto al protokolo-servilo perdita" -#: plugins/sudoers/log_client.c:1841 +#: plugins/sudoers/log_client.c:1854 msgid "missing write buffer" msgstr "mankanta skribobufo" -#: plugins/sudoers/log_client.c:1995 +#: plugins/sudoers/log_client.c:2008 msgid "unable to connect to log server" msgstr "ne eblas konektiĝi al protokolo-servilo" @@ -2905,22 +2924,22 @@ #: plugins/sudoers/logging.c:324 #, 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" +msgid "Sorry, user %s is not allowed to execute '%s%s%s%s' as %s%s%s on %s.\n" +msgstr "Bedaŭre uzanto %s ne rajtas plenumigi '%s%s%s%s' kiel %s%s%s en %s.\n" #: plugins/sudoers/logging.c:334 msgid "This incident has been reported to the administrator.\n" msgstr "Ĉi tiu okazo raportiĝis al la administranto.\n" -#: plugins/sudoers/logging.c:365 plugins/sudoers/sudoers.c:648 -#: plugins/sudoers/sudoers.c:650 plugins/sudoers/sudoers.c:652 -#: plugins/sudoers/sudoers.c:654 plugins/sudoers/sudoers.c:805 -#: plugins/sudoers/sudoers.c:807 +#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:566 +#: plugins/sudoers/sudoers.c:567 plugins/sudoers/sudoers.c:569 +#: plugins/sudoers/sudoers.c:570 plugins/sudoers/sudoers.c:791 +#: plugins/sudoers/sudoers.c:793 #, c-format msgid "%s: command not found" msgstr "%s: komando ne trovita" -#: plugins/sudoers/logging.c:367 plugins/sudoers/sudoers.c:644 +#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:562 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2929,46 +2948,46 @@ "ni malatentas \"%s\" trovita en '.'\n" "Uzu \"sudo ./%s\" se tio estas la \"%s\" , kiun vi volas plenumigi." -#: plugins/sudoers/logging.c:387 +#: plugins/sudoers/logging.c:391 #, 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:477 +#: plugins/sudoers/logging.c:481 msgid "authentication failure" msgstr "aŭtentiga malsukceso" -#: plugins/sudoers/logging.c:516 plugins/sudoers/logging.c:535 +#: plugins/sudoers/logging.c:520 plugins/sudoers/logging.c:539 msgid "a password is required" msgstr "pasvorto estas bezonata" -#: plugins/sudoers/logging.c:799 plugins/sudoers/logging.c:811 +#: plugins/sudoers/logging.c:855 msgid "problem parsing sudoers" msgstr "problemo dum analizi dosieron sudoers" -#: plugins/sudoers/logging.c:873 plugins/sudoers/logging.c:885 +#: plugins/sudoers/logging.c:896 plugins/sudoers/logging.c:904 #, c-format msgid "%s:%d:%d: %s" msgstr "%s:%d:%d: %s" -#: plugins/sudoers/logging.c:1062 +#: plugins/sudoers/logging.c:1079 #, c-format msgid "unable to write log file: %s" msgstr "ne eblas skribi al protokolo: %s" -#: plugins/sudoers/match_digest.c:112 +#: plugins/sudoers/match_digest.c:101 #, c-format msgid "digest for %s (%s) bad length %zu, expected %zu" msgstr "resumo por %s (%s): malbona longo %zu, atendita %zu" -#: plugins/sudoers/match_digest.c:131 +#: plugins/sudoers/match_digest.c:120 #, c-format 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:591 +#: plugins/sudoers/parse.c:643 #, c-format msgid "" "\n" @@ -2977,7 +2996,7 @@ "\n" "LDAP-rolo: %s\n" -#: plugins/sudoers/parse.c:594 +#: plugins/sudoers/parse.c:646 msgid "" "\n" "Sudoers entry:\n" @@ -2985,38 +3004,38 @@ "\n" "Ero en sudoers:\n" -#: plugins/sudoers/parse.c:596 +#: plugins/sudoers/parse.c:648 msgid " RunAsUsers: " msgstr " RunAsUsers: " -#: plugins/sudoers/parse.c:611 +#: plugins/sudoers/parse.c:663 msgid " RunAsGroups: " msgstr " RunAsGroups: " -#: plugins/sudoers/parse.c:621 +#: plugins/sudoers/parse.c:673 msgid " Options: " msgstr " Modifiloj: " -#: plugins/sudoers/parse.c:685 +#: plugins/sudoers/parse.c:737 msgid " Commands:\n" msgstr " Komandoj:\n" -#: plugins/sudoers/parse.c:876 +#: plugins/sudoers/parse.c:928 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Kongruantaj eroj de Defaults: %s en %s:\n" -#: plugins/sudoers/parse.c:894 +#: plugins/sudoers/parse.c:946 #, 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:912 +#: plugins/sudoers/parse.c:964 #, 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:927 +#: plugins/sudoers/parse.c:979 #, 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" @@ -3031,64 +3050,72 @@ msgid "invalid LDIF attribute: %s" msgstr "malvalida LDIF-atributo: %s" -#: plugins/sudoers/policy.c:81 plugins/sudoers/policy.c:112 +#: plugins/sudoers/pivot.c:74 +msgid "unable to restore root directory" +msgstr "ne eblas restarigi la radikan dosierujon" + +#: plugins/sudoers/pivot.c:82 +msgid "unable to restore current working directory" +msgstr "ne eblas restarigi la nunan labor-dosierujon" + +#: 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:358 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:356 plugins/sudoers/testsudoers.c:277 msgid "unable to parse network address list" msgstr "ne eblas trakti reto-adresan liston" -#: plugins/sudoers/policy.c:526 +#: plugins/sudoers/policy.c:524 msgid "user name not set by sudo front-end" msgstr "uzantnomo ne difinita de sudo-fasado" -#: plugins/sudoers/policy.c:530 +#: plugins/sudoers/policy.c:528 msgid "user-ID not set by sudo front-end" msgstr "uzanto-ID ne difinita de sudo-fasado" -#: plugins/sudoers/policy.c:534 +#: plugins/sudoers/policy.c:532 msgid "group-ID not set by sudo front-end" msgstr "grupo-ID ne difinita de sudo-fasado" -#: plugins/sudoers/policy.c:538 +#: plugins/sudoers/policy.c:536 msgid "host name not set by sudo front-end" msgstr "gastiganta nomo ne difinita de sudo-fasado" -#: plugins/sudoers/policy.c:730 +#: plugins/sudoers/policy.c:754 #, c-format msgid "invalid working directory: %s" msgstr "nevalida kuranta dosierujo: %s" -#: plugins/sudoers/policy.c:914 +#: plugins/sudoers/policy.c:938 #, c-format msgid "invalid chroot directory: %s" msgstr "malvalida chroot-dosierujo: %s" -#: plugins/sudoers/policy.c:1101 plugins/sudoers/visudo.c:259 -#: plugins/sudoers/visudo.c:902 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/visudo.c:910 +#: plugins/sudoers/visudo.c:1209 #, c-format msgid "unable to execute %s" msgstr "ne eblas plenumigi: %s" -#: plugins/sudoers/policy.c:1171 plugins/sudoers/policy.c:1208 -#: plugins/sudoers/policy.c:1230 plugins/sudoers/policy.c:1256 +#: plugins/sudoers/policy.c:1195 plugins/sudoers/policy.c:1230 +#: plugins/sudoers/policy.c:1252 plugins/sudoers/policy.c:1274 #, 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:1292 +#: plugins/sudoers/policy.c:1294 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Eldono %s de la konduta kromprogramo\n" -#: plugins/sudoers/policy.c:1294 +#: plugins/sudoers/policy.c:1296 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Eldono %d de la gramatikilo de sudoers\n" -#: plugins/sudoers/policy.c:1298 +#: plugins/sudoers/policy.c:1300 #, c-format msgid "" "\n" @@ -3097,27 +3124,27 @@ "\n" "Vojo de sudoers: %s\n" -#: plugins/sudoers/policy.c:1301 +#: plugins/sudoers/policy.c:1303 #, c-format msgid "nsswitch path: %s\n" msgstr "vojo de nsswitch: %s\n" -#: plugins/sudoers/policy.c:1303 +#: plugins/sudoers/policy.c:1305 #, c-format msgid "ldap.conf path: %s\n" msgstr "vojo de ldap.conf: %s\n" -#: plugins/sudoers/policy.c:1304 +#: plugins/sudoers/policy.c:1306 #, c-format msgid "ldap.secret path: %s\n" msgstr "vojo de ldap.secret: %s\n" -#: plugins/sudoers/policy.c:1337 +#: plugins/sudoers/policy.c:1339 #, 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:1355 +#: plugins/sudoers/policy.c:1357 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "ne eblas malregistri hokon el tipo %d (versio %d.%d)" @@ -3164,70 +3191,70 @@ msgid "unable to cache group %s, already exists" msgstr "ne eblas konservi grupon %s, jam ekzistas" -#: plugins/sudoers/pwutil.c:880 plugins/sudoers/pwutil.c:931 -#: plugins/sudoers/pwutil.c:981 plugins/sudoers/pwutil.c:1033 +#: plugins/sudoers/pwutil.c:880 plugins/sudoers/pwutil.c:963 +#: plugins/sudoers/pwutil.c:1017 plugins/sudoers/pwutil.c:1071 #, c-format msgid "unable to cache group list for %s, already exists" msgstr "ne eblas konservi grupan liston por %s, jam ekzistas" -#: plugins/sudoers/pwutil.c:886 plugins/sudoers/pwutil.c:936 -#: plugins/sudoers/pwutil.c:987 plugins/sudoers/pwutil.c:1038 +#: plugins/sudoers/pwutil.c:886 plugins/sudoers/pwutil.c:968 +#: plugins/sudoers/pwutil.c:1023 plugins/sudoers/pwutil.c:1076 #, c-format msgid "unable to cache group list for %s" msgstr "ne eblas konservi grupliston por %s" -#: plugins/sudoers/pwutil.c:925 +#: plugins/sudoers/pwutil.c:957 #, c-format msgid "unable to parse groups for %s" msgstr "ne eblas trakti grupon en %s" -#: plugins/sudoers/pwutil.c:1027 +#: plugins/sudoers/pwutil.c:1065 #, c-format 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:445 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 -#: plugins/sudoers/set_perms.c:1460 +#: plugins/sudoers/set_perms.c:115 plugins/sudoers/set_perms.c:451 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1178 +#: plugins/sudoers/set_perms.c:1481 msgid "perm stack overflow" msgstr "permeso-staka troo" -#: 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 +#: plugins/sudoers/set_perms.c:126 plugins/sudoers/set_perms.c:382 +#: plugins/sudoers/set_perms.c:462 plugins/sudoers/set_perms.c:730 +#: plugins/sudoers/set_perms.c:874 plugins/sudoers/set_perms.c:1102 +#: plugins/sudoers/set_perms.c:1189 plugins/sudoers/set_perms.c:1414 +#: plugins/sudoers/set_perms.c:1492 plugins/sudoers/set_perms.c:1583 msgid "perm stack underflow" msgstr "permeso-staka maltroo" -#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 -#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 +#: plugins/sudoers/set_perms.c:186 plugins/sudoers/set_perms.c:509 +#: plugins/sudoers/set_perms.c:1243 plugins/sudoers/set_perms.c:1526 msgid "unable to change to root gid" msgstr "ne eblas ŝanĝi al radika gid" -#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 -#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 +#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:606 +#: plugins/sudoers/set_perms.c:1006 plugins/sudoers/set_perms.c:1320 msgid "unable to change to runas gid" msgstr "ne eblas ŝanĝi al plenumigkiela gid" -#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 -#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 +#: plugins/sudoers/set_perms.c:282 plugins/sudoers/set_perms.c:611 +#: plugins/sudoers/set_perms.c:1011 plugins/sudoers/set_perms.c:1325 msgid "unable to set runas group vector" msgstr "ne eblas elekti vektoron de plenumigkiela grupo" -#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 -#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:293 plugins/sudoers/set_perms.c:622 +#: plugins/sudoers/set_perms.c:1020 plugins/sudoers/set_perms.c:1334 msgid "unable to change to runas uid" msgstr "ne eblas ŝanĝi al plenumigkiela uid" -#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 -#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 +#: plugins/sudoers/set_perms.c:315 plugins/sudoers/set_perms.c:644 +#: plugins/sudoers/set_perms.c:1040 plugins/sudoers/set_perms.c:1354 msgid "unable to change to sudoers gid" msgstr "ne eblas ŝanĝi al gid de sudo-redaktantoj" -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 msgid "too many processes" msgstr "tro da procezoj" @@ -3256,250 +3283,254 @@ msgid "unable to find symbol \"%s\" in %s" msgstr "ne eblas trovi simbolon \"%s\" en %s" -#: plugins/sudoers/sudoers.c:263 +#: plugins/sudoers/sudoers.c:261 #, c-format msgid "unable to get defaults from %s" msgstr "ne eblas atingi aprioraĵojn el %s" -#: plugins/sudoers/sudoers.c:270 +#: plugins/sudoers/sudoers.c:268 msgid "no valid sudoers sources found, quitting" msgstr "ne validaj fontotekstoj de sudoers trovita, ĉesiganta" -#: plugins/sudoers/sudoers.c:346 +#: plugins/sudoers/sudoers.c:344 #, 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:348 +#: plugins/sudoers/sudoers.c:346 #, 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:373 +#: plugins/sudoers/sudoers.c:371 #, c-format msgid "user not allowed to change directory to %s" msgstr "uzanto ne rajtas ŝanĝi dosierujon al %s" -#: plugins/sudoers/sudoers.c:374 +#: plugins/sudoers/sudoers.c:372 #, 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:401 -msgid "no command specified" -msgstr "Neniu komando donita" - -#: plugins/sudoers/sudoers.c:426 +#: plugins/sudoers/sudoers.c:412 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers specifas, ke ĉefuzanto ne rajtas sudo-i" -#: plugins/sudoers/sudoers.c:476 +#: plugins/sudoers/sudoers.c:421 msgid "user not allowed to override closefrom limit" msgstr "uzanto ne permesata superregi la limigon de closefrom" -#: plugins/sudoers/sudoers.c:477 +#: plugins/sudoers/sudoers.c:422 msgid "you are not permitted to use the -C option" msgstr "vi ne rajtas uzi la parametron -C" -#: plugins/sudoers/sudoers.c:537 -#, c-format -msgid "timestamp owner (%s): No such user" -msgstr "tempo-indikila posedanto (%s): Nenia uzanto" - -#: plugins/sudoers/sudoers.c:552 +#: plugins/sudoers/sudoers.c:468 msgid "no tty" msgstr "neniu tty" -#: plugins/sudoers/sudoers.c:553 +#: plugins/sudoers/sudoers.c:469 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:560 +#: plugins/sudoers/sudoers.c:477 #, c-format msgid "invalid shell for user %s: %s" msgstr "nevalida ŝelo por uzanto %s: %s" -#: plugins/sudoers/sudoers.c:643 +#: plugins/sudoers/sudoers.c:561 msgid "command in current directory" msgstr "komando en nuna dosierujo" -#: plugins/sudoers/sudoers.c:658 +#: plugins/sudoers/sudoers.c:574 msgid "\"cd\" is a shell built-in command, it cannot be run directly." msgstr "\"cd\" estas apriora ŝelkomando, ne eblas rekte plenumigi ĝin" -#: plugins/sudoers/sudoers.c:660 +#: plugins/sudoers/sudoers.c:576 msgid "the -s option may be used to run a privileged shell." msgstr "La elekton -s oni rajtas uzi por plenumigi privilegiitan ŝelon." -#: plugins/sudoers/sudoers.c:662 +#: plugins/sudoers/sudoers.c:578 msgid "the -D option may be used to run a command in a specific directory." msgstr "la elekto -D oni rajtas uzi por plenumigi komandon en specifa dosierujo." -#: plugins/sudoers/sudoers.c:671 +#: plugins/sudoers/sudoers.c:587 msgid "user not allowed to set a command timeout" msgstr "uzanto ne rajtas elekti komando-eksvalidiĝon" -#: plugins/sudoers/sudoers.c:673 +#: plugins/sudoers/sudoers.c:589 msgid "sorry, you are not allowed set a command timeout" msgstr "bedaŭre vi ne rajtas elekti komando-eksvalidiĝon" -#: plugins/sudoers/sudoers.c:681 +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to preserve the environment" msgstr "uzanto ne rajtas konservi la medion" -#: plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:599 msgid "sorry, you are not allowed to preserve the environment" msgstr "bedaŭre vi ne rajtas konservi la medion" -#: plugins/sudoers/sudoers.c:1073 +#: plugins/sudoers/sudoers.c:635 +msgid "no command specified" +msgstr "Neniu komando donita" + +#: plugins/sudoers/sudoers.c:774 +msgid "error setting user-specified environment variables" +msgstr "eraro dum valorizo de medivariablojn valorizitaj de la uzanto" + +#: plugins/sudoers/sudoers.c:1239 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit ne devas plenumiĝi per sudo" -#: plugins/sudoers/sudoers.c:1118 plugins/sudoers/sudoreplay.c:1584 +#: plugins/sudoers/sudoers.c:1314 plugins/sudoers/sudoreplay.c:1612 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "ne eblas legi %s" -#: plugins/sudoers/sudoers.c:1147 plugins/sudoers/visudo.c:1064 +#: plugins/sudoers/sudoers.c:1337 plugins/sudoers/visudo.c:1114 #, c-format msgid "%s is not a regular file" msgstr "%s ne estas normala dosiero" -#: plugins/sudoers/sudoers.c:1151 plugins/sudoers/timestamp.c:263 toke.l:1247 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/timestamp.c:288 toke.l:1325 #, 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:1155 plugins/sudoers/timestamp.c:270 toke.l:1252 +#: plugins/sudoers/sudoers.c:1345 plugins/sudoers/timestamp.c:295 toke.l:1330 #, c-format msgid "%s is world writable" msgstr "%s estas skribebla de ĉiuj" -#: plugins/sudoers/sudoers.c:1159 plugins/sudoers/timestamp.c:275 toke.l:1255 +#: plugins/sudoers/sudoers.c:1349 plugins/sudoers/timestamp.c:300 toke.l:1333 #, 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:1194 +#: plugins/sudoers/sudoers.c:1377 #, c-format msgid "only root can use \"-c %s\"" msgstr "nur ĉefuzanto rajtas uzi \"-c %s\"" -#: plugins/sudoers/sudoers.c:1213 +#: plugins/sudoers/sudoers.c:1396 #, c-format msgid "unknown login class %s" msgstr "nekonata ensaluta klaso: %s" -#: plugins/sudoers/sudoers.c:1300 plugins/sudoers/sudoers.c:1315 +#: plugins/sudoers/sudoers.c:1483 plugins/sudoers/sudoers.c:1498 #, c-format msgid "unable to resolve host %s" msgstr "ne eblas trovi gastiganton %s" -#: plugins/sudoers/sudoreplay.c:259 +#: plugins/sudoers/sudoers.c:1636 +#, c-format +msgid "%s:%d:%d timestampowner: unknown user %s" +msgstr "%s:%d:%d: timestampowner: nekonata uzanto %s" + +#: plugins/sudoers/sudoreplay.c:252 #, c-format msgid "invalid filter option: %s" msgstr "malvalida filtrila elekto: %s" -#: plugins/sudoers/sudoreplay.c:275 +#: plugins/sudoers/sudoreplay.c:268 #, c-format msgid "invalid max wait: %s" msgstr "malvalida maksimuma atendo: %s" -#: plugins/sudoers/sudoreplay.c:298 +#: plugins/sudoers/sudoreplay.c:291 #, c-format msgid "invalid speed factor: %s" msgstr "malvalida rapida faktoro: %s" -#: plugins/sudoers/sudoreplay.c:333 +#: plugins/sudoers/sudoreplay.c:326 #, c-format msgid "invalid time offset %s" msgstr "nevalida eksvalidiĝo-deŝovo %s" -#: plugins/sudoers/sudoreplay.c:342 +#: plugins/sudoers/sudoreplay.c:335 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:347 +#: plugins/sudoers/sudoreplay.c:340 #, c-format msgid "%s/timing: %s" msgstr "%s/tempo-registrado: %s" -#: plugins/sudoers/sudoreplay.c:375 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "Replaying sudo session: %s" msgstr "Refaranta sudo-seancon: %s" -#: plugins/sudoers/sudoreplay.c:637 +#: plugins/sudoers/sudoreplay.c:634 msgid "unable to set tty to raw mode" msgstr "ne eblas elekti tty-on en nudan reĝimon" -#: plugins/sudoers/sudoreplay.c:688 +#: plugins/sudoers/sudoreplay.c:685 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:689 +#: plugins/sudoers/sudoreplay.c:686 #, 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:717 +#: plugins/sudoers/sudoreplay.c:714 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:1219 plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1216 plugins/sudoers/sudoreplay.c:1246 #, c-format msgid "ambiguous expression \"%s\"" msgstr "ambigua esprimo \"%s\"" -#: plugins/sudoers/sudoreplay.c:1271 +#: plugins/sudoers/sudoreplay.c:1268 msgid "unmatched ')' in expression" msgstr "mankas krampo kongruanta al ')' en esprimo" -#: plugins/sudoers/sudoreplay.c:1275 +#: plugins/sudoers/sudoreplay.c:1272 #, c-format msgid "unknown search term \"%s\"" msgstr "nekonata serĉaĵo \"%s\"" -#: plugins/sudoers/sudoreplay.c:1290 +#: plugins/sudoers/sudoreplay.c:1287 #, c-format msgid "%s requires an argument" msgstr "%s bezonas parametron" -#: plugins/sudoers/sudoreplay.c:1300 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "ne eblis analizi daton \"%s\"" -#: plugins/sudoers/sudoreplay.c:1309 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "mankas krampo kongruanta al '(' en esprimo" -#: plugins/sudoers/sudoreplay.c:1311 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "malvalida posta \"or\"" -#: plugins/sudoers/sudoreplay.c:1313 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "malvalida posta \"!\"" -#: plugins/sudoers/sudoreplay.c:1371 +#: plugins/sudoers/sudoreplay.c:1416 #, c-format msgid "unknown search type %d" msgstr "nekonata serĉtipo %d" -#: plugins/sudoers/sudoreplay.c:1650 +#: plugins/sudoers/sudoreplay.c:1678 #, 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:1652 +#: plugins/sudoers/sudoreplay.c:1680 #, 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:1666 +#: plugins/sudoers/sudoreplay.c:1694 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -3508,7 +3539,7 @@ "%s - refari sudo-seancajn protokolojn\n" "\n" -#: plugins/sudoers/sudoreplay.c:1668 +#: plugins/sudoers/sudoreplay.c:1696 msgid "" "\n" "Options:\n" @@ -3536,11 +3567,11 @@ " -s, --speed=num rapidigi aŭ malrapidigi eligon\n" " -V, --version eligi eldonan informon kaj eliri" -#: plugins/sudoers/testsudoers.c:344 +#: plugins/sudoers/testsudoers.c:355 msgid "\thost unmatched" msgstr "\thost sen egalo" -#: plugins/sudoers/testsudoers.c:347 +#: plugins/sudoers/testsudoers.c:358 msgid "" "\n" "Command allowed" @@ -3548,7 +3579,7 @@ "\n" "Komando permesata" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command denied" @@ -3556,7 +3587,7 @@ "\n" "Komando rifuzata" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command unmatched" @@ -3564,21 +3595,21 @@ "\n" "Komando sen egalo" -#: plugins/sudoers/timestamp.c:354 plugins/sudoers/timestamp.c:693 +#: plugins/sudoers/timestamp.c:379 plugins/sudoers/timestamp.c:718 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "ne eblas mallongigi tempo-indikilan dosieron ĝis %lld bajtoj" -#: plugins/sudoers/timestamp.c:890 +#: plugins/sudoers/timestamp.c:915 msgid "ignoring time stamp from the future" msgstr "ignoranta tempo-indikilon el la estonteco" -#: plugins/sudoers/timestamp.c:913 +#: plugins/sudoers/timestamp.c:938 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "tempo-indikilo tro estonte: %20.20s" -#: plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1067 #, c-format msgid "unable to lock time stamp file %s" msgstr "ne eblas ŝlosi tempo-indikilan dosieron %s" @@ -3587,99 +3618,91 @@ msgid "sudoedit should not be specified with a path" msgstr "sudoedit plej bone ne specifiĝu kun vojo" -#: plugins/sudoers/visudo.c:254 -msgid "the -x option will be removed in a future release" -msgstr "la elekto -x estos forigita en posta eldono" - -#: plugins/sudoers/visudo.c:256 -msgid "please consider using the cvtsudoers utility instead" -msgstr "bonvolu konsideri uzi la utilaĵon cvtsudoers anstataŭe" - -#: plugins/sudoers/visudo.c:311 plugins/sudoers/visudo.c:698 +#: plugins/sudoers/visudo.c:314 plugins/sudoers/visudo.c:705 #, c-format msgid "press return to edit %s: " msgstr "premu enen-klavon por redakti %s-on: " -#: plugins/sudoers/visudo.c:326 +#: plugins/sudoers/visudo.c:329 #, c-format msgid "contents of edit session left in %s" msgstr "enhavo de redakto-seanco restigita en %s" -#: plugins/sudoers/visudo.c:402 +#: plugins/sudoers/visudo.c:406 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "specifita tekstoredaktilo (%s) ne ekzistas" -#: plugins/sudoers/visudo.c:404 +#: plugins/sudoers/visudo.c:411 #, c-format msgid "no editor found (editor path = %s)" msgstr "neniu tekstoredaktilo trovita (vojo = %s)" -#: plugins/sudoers/visudo.c:491 plugins/sudoers/visudo.c:770 +#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:777 #, c-format msgid "unable to stat %s" msgstr "ne eblas apliki stat al %s" -#: plugins/sudoers/visudo.c:511 plugins/sudoers/visudo.c:519 +#: plugins/sudoers/visudo.c:518 plugins/sudoers/visudo.c:526 msgid "write error" msgstr "skriba eraro" -#: plugins/sudoers/visudo.c:565 +#: plugins/sudoers/visudo.c:572 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "ne eblas apliki stat al provizora dosiero (%s), %s neŝanĝita" -#: plugins/sudoers/visudo.c:572 +#: plugins/sudoers/visudo.c:579 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "nul-longa provizora dosiero (%s), %s neŝanĝita" -#: plugins/sudoers/visudo.c:578 +#: plugins/sudoers/visudo.c:585 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "redaktilo (%s) malsukcesis, %s neŝanĝita" -#: plugins/sudoers/visudo.c:600 +#: plugins/sudoers/visudo.c:607 #, c-format msgid "%s unchanged" msgstr "%s neŝanĝita" -#: plugins/sudoers/visudo.c:645 +#: plugins/sudoers/visudo.c:652 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "ne eblas remalfermi provizoran dosieron (%s), %s neŝanĝita." -#: plugins/sudoers/visudo.c:658 +#: plugins/sudoers/visudo.c:665 #, c-format msgid "unable to parse temporary file (%s), unknown error" msgstr "ne eblas analizi provizoran dosieron (%s), nekonata eraro" -#: plugins/sudoers/visudo.c:744 plugins/sudoers/visudo.c:774 -#: plugins/sudoers/visudo.c:781 +#: plugins/sudoers/visudo.c:751 plugins/sudoers/visudo.c:781 +#: plugins/sudoers/visudo.c:788 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "ne eblas ŝanĝi (uid, gid) de %s al (%u, %u)" -#: plugins/sudoers/visudo.c:809 +#: plugins/sudoers/visudo.c:816 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "%s kaj %s ne estas la sama dosiersistemo, uzanta mv-on por alinomi" -#: plugins/sudoers/visudo.c:820 +#: plugins/sudoers/visudo.c:827 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "komando malsukcesis: '%s %s %s', %s neŝanĝita" -#: plugins/sudoers/visudo.c:827 +#: plugins/sudoers/visudo.c:834 #, c-format msgid "error renaming %s, %s unchanged" msgstr "eraro dum alinomi %s-on; %s neŝanĝita" -#: plugins/sudoers/visudo.c:847 +#: plugins/sudoers/visudo.c:855 msgid "What now? " msgstr "Kion nun? " -#: plugins/sudoers/visudo.c:861 +#: plugins/sudoers/visudo.c:869 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -3691,41 +3714,49 @@ " (x) eliri sen konservi ŝanĝojn al sudoers-dosiero\n" " (Q) Eliri kaj konservi ŝanĝojn al sudoers-dosiero (DANĜERA!)\n" -#: plugins/sudoers/visudo.c:907 +#: plugins/sudoers/visudo.c:915 #, c-format msgid "unable to run %s" msgstr "ne eblas plenumigi: %s" -#: plugins/sudoers/visudo.c:938 +#: plugins/sudoers/visudo.c:946 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s: malĝusta estro (uid, gid) devas esti (%u, %u)\n" -#: plugins/sudoers/visudo.c:949 +#: plugins/sudoers/visudo.c:957 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s: misaj permesoj, devas esti reĝimo 0%o\n" -#: plugins/sudoers/visudo.c:997 plugins/sudoers/visudo.c:1004 +#: plugins/sudoers/visudo.c:1009 plugins/sudoers/visudo.c:1016 #, c-format msgid "%s: parsed OK\n" msgstr "%s: analizita senerare\n" -#: plugins/sudoers/visudo.c:1023 +#: plugins/sudoers/visudo.c:1035 #, c-format msgid "%s busy, try again later" msgstr "%s okupata, reprovu pli malfrue" -#: plugins/sudoers/visudo.c:1027 +#: plugins/sudoers/visudo.c:1039 msgid "Edit anyway? [y/N]" msgstr "Ĉu redakti ja? [y/N]" -#: plugins/sudoers/visudo.c:1128 +#: plugins/sudoers/visudo.c:1197 +msgid "the -x option will be removed in a future release" +msgstr "la elekto -x estos forigita en posta eldono" + +#: plugins/sudoers/visudo.c:1199 +msgid "please consider using the cvtsudoers utility instead" +msgstr "bonvolu konsideri uzi la utilaĵon cvtsudoers anstataŭe" + +#: plugins/sudoers/visudo.c:1219 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Averto: %s:%d:%d: neuzata %s \"%s\"" -#: plugins/sudoers/visudo.c:1240 +#: plugins/sudoers/visudo.c:1332 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3734,7 +3765,7 @@ "%s - sekure redakti la dosieron sudoers\n" "\n" -#: plugins/sudoers/visudo.c:1242 +#: plugins/sudoers/visudo.c:1334 msgid "" "\n" "Options:\n" @@ -3756,34 +3787,42 @@ " -s, --strict severa kontrolado de sintakso\n" " -V, --version montri eldonon kaj eliri\n" -#: toke.l:189 +#: toke.l:184 msgid "empty string" msgstr "malplena ĉeno" -#: toke.l:201 toke.l:571 +#: toke.l:196 toke.l:566 msgid "empty group" msgstr "malplena grupo" -#: toke.l:211 toke.l:569 +#: toke.l:206 toke.l:564 msgid "empty netgroup" msgstr "malplena retgrupo" -#: toke.l:289 +#: toke.l:284 msgid "unterminated regular expression" msgstr "nefinigita regulesprimo: %s" -#: toke.l:363 toke.l:375 toke.l:387 toke.l:403 toke.l:422 toke.l:462 +#: toke.l:358 toke.l:370 toke.l:382 toke.l:398 toke.l:417 toke.l:457 msgid "invalid line continuation" msgstr "malvalida linio-daŭrigo" -#: toke.l:608 toke.l:620 +#: toke.l:603 toke.l:615 msgid "invalid IPv6 address" msgstr "malvalida IPv6-adreso" -#: toke.l:868 +#: toke.l:863 msgid "unexpected line break in string" msgstr "neatendita linirompo en ĉeno" -#: toke.l:1218 +#: toke.l:983 +msgid "ignoring editor backup file" +msgstr "ignoras redaktilan savkopian dosieron" + +#: toke.l:986 +msgid "ignoring file name containing '.'" +msgstr "ignoras dosiernomon kun '.'" + +#: toke.l:1289 msgid "too many levels of includes" msgstr "tro da niveloj de inkluzivaĵoj" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/plugins/sudoers/po/fr.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/plugins/sudoers/po/fr.mo differ diff -Nru sudo-1.9.13p3/plugins/sudoers/po/fr.po sudo-1.9.14p2/plugins/sudoers/po/fr.po --- sudo-1.9.13p3/plugins/sudoers/po/fr.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/po/fr.po 2023-07-15 15:37:21.000000000 +0000 @@ -5,10 +5,10 @@ # Frédéric Marchal , 2023 msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.13b2\n" +"Project-Id-Version: sudoers 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-26 12:21+0100\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-08 21:18+0200\n" "Last-Translator: Frédéric Marchal \n" "Language-Team: French \n" "Language: fr\n" @@ -18,7 +18,7 @@ "X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=2; plural=(n >= 2);\n" -#: confstr.sh:1 gram.y:1220 plugins/sudoers/logging.c:866 +#: confstr.sh:1 gram.y:1240 plugins/sudoers/logging.c:885 msgid "syntax error" msgstr "erreur de syntaxe" @@ -42,34 +42,34 @@ msgid "Sorry, try again." msgstr "Désolé, essayez de nouveau." -#: gram.y:237 gram.y:304 gram.y:313 gram.y:322 gram.y:332 gram.y:342 -#: gram.y:366 gram.y:393 gram.y:402 gram.y:410 gram.y:419 gram.y:428 -#: gram.y:502 gram.y:512 gram.y:524 gram.y:572 gram.y:581 gram.y:590 -#: gram.y:599 gram.y:731 gram.y:739 gram.y:750 gram.y:762 gram.y:781 -#: gram.y:944 gram.y:949 gram.y:957 gram.y:971 gram.y:977 gram.y:1099 -#: gram.y:1108 gram.y:1116 gram.y:1125 gram.y:1134 gram.y:1163 gram.y:1172 -#: gram.y:1180 gram.y:1280 gram.y:1410 gram.y:1777 gram.y:1827 -#: lib/eventlog/eventlog.c:235 lib/eventlog/eventlog.c:312 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:834 -#: lib/eventlog/eventlog.c:1135 lib/iolog/iolog_filter.c:142 +#: gram.y:236 gram.y:303 gram.y:312 gram.y:321 gram.y:331 gram.y:341 +#: gram.y:365 gram.y:392 gram.y:401 gram.y:409 gram.y:418 gram.y:427 +#: gram.y:501 gram.y:511 gram.y:523 gram.y:571 gram.y:580 gram.y:589 +#: gram.y:598 gram.y:730 gram.y:738 gram.y:749 gram.y:761 gram.y:780 +#: gram.y:943 gram.y:948 gram.y:956 gram.y:970 gram.y:976 gram.y:988 +#: gram.y:994 gram.y:1119 gram.y:1128 gram.y:1136 gram.y:1145 gram.y:1154 +#: gram.y:1183 gram.y:1192 gram.y:1200 gram.y:1300 gram.y:1430 gram.y:1808 +#: gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:313 lib/eventlog/eventlog.c:755 +#: lib/eventlog/eventlog.c:832 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:472 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 #: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:233 -#: lib/iolog/iolog_json.c:150 lib/iolog/iolog_json.c:382 -#: lib/iolog/iolog_json.c:412 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:212 -#: logsrvd/iolog_writer.c:95 logsrvd/iolog_writer.c:100 -#: logsrvd/iolog_writer.c:134 logsrvd/iolog_writer.c:182 -#: logsrvd/iolog_writer.c:215 logsrvd/iolog_writer.c:225 -#: logsrvd/iolog_writer.c:254 logsrvd/iolog_writer.c:275 -#: logsrvd/iolog_writer.c:287 logsrvd/iolog_writer.c:297 -#: logsrvd/iolog_writer.c:307 logsrvd/iolog_writer.c:317 -#: logsrvd/iolog_writer.c:329 logsrvd/iolog_writer.c:364 -#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:377 -#: logsrvd/iolog_writer.c:383 logsrvd/iolog_writer.c:567 -#: logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 logsrvd/logsrvd.c:310 -#: logsrvd/logsrvd.c:1050 logsrvd/logsrvd.c:1113 logsrvd/logsrvd.c:1582 -#: logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 logsrvd/logsrvd.c:1988 +#: 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:212 logsrvd/iolog_writer.c:95 +#: logsrvd/iolog_writer.c:100 logsrvd/iolog_writer.c:134 +#: logsrvd/iolog_writer.c:182 logsrvd/iolog_writer.c:215 +#: logsrvd/iolog_writer.c:225 logsrvd/iolog_writer.c:254 +#: logsrvd/iolog_writer.c:275 logsrvd/iolog_writer.c:287 +#: logsrvd/iolog_writer.c:297 logsrvd/iolog_writer.c:307 +#: logsrvd/iolog_writer.c:317 logsrvd/iolog_writer.c:329 +#: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 +#: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:1058 logsrvd/logsrvd.c:1121 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 #: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 #: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 #: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 @@ -84,29 +84,31 @@ #: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1743 #: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:216 #: logsrvd/logsrvd_journal.c:217 logsrvd/logsrvd_journal.c:273 -#: logsrvd/logsrvd_journal.c:433 logsrvd/logsrvd_journal.c:435 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:216 -#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:279 -#: logsrvd/logsrvd_local.c:417 logsrvd/logsrvd_local.c:466 -#: logsrvd/logsrvd_local.c:467 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:473 logsrvd/logsrvd_queue.c:159 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/logsrvd_relay.c:444 logsrvd/logsrvd_relay.c:743 -#: logsrvd/logsrvd_relay.c:850 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 -#: logsrvd/sendlog.c:291 logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 -#: logsrvd/sendlog.c:1801 plugins/sudoers/audit.c:116 -#: plugins/sudoers/auth/bsdauth.c:150 plugins/sudoers/auth/kerb5.c:121 +#: logsrvd/logsrvd_journal.c:278 logsrvd/logsrvd_journal.c:438 +#: logsrvd/logsrvd_journal.c:440 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:216 logsrvd/logsrvd_local.c:278 +#: logsrvd/logsrvd_local.c:279 logsrvd/logsrvd_local.c:417 +#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:467 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:473 +#: logsrvd/logsrvd_queue.c:159 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/logsrvd_relay.c:446 +#: logsrvd/logsrvd_relay.c:745 logsrvd/logsrvd_relay.c:852 +#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:292 +#: logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 logsrvd/sendlog.c:624 +#: logsrvd/sendlog.c:1810 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/bsdauth.c:152 plugins/sudoers/auth/kerb5.c:121 #: plugins/sudoers/auth/kerb5.c:148 plugins/sudoers/auth/pam.c:687 #: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:175 plugins/sudoers/cvtsudoers.c:192 -#: plugins/sudoers/cvtsudoers.c:203 plugins/sudoers/cvtsudoers.c:333 -#: plugins/sudoers/cvtsudoers.c:372 plugins/sudoers/cvtsudoers.c:392 -#: plugins/sudoers/cvtsudoers.c:537 plugins/sudoers/cvtsudoers.c:670 -#: plugins/sudoers/cvtsudoers.c:688 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:870 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:246 +#: plugins/sudoers/canon_path.c:129 plugins/sudoers/canon_path.c:160 +#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:132 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:193 +#: plugins/sudoers/cvtsudoers.c:204 plugins/sudoers/cvtsudoers.c:334 +#: plugins/sudoers/cvtsudoers.c:373 plugins/sudoers/cvtsudoers.c:393 +#: plugins/sudoers/cvtsudoers.c:538 plugins/sudoers/cvtsudoers.c:691 +#: plugins/sudoers/cvtsudoers.c:709 plugins/sudoers/cvtsudoers.c:883 +#: plugins/sudoers/cvtsudoers.c:891 plugins/sudoers/cvtsudoers.c:1386 +#: plugins/sudoers/cvtsudoers.c:1390 plugins/sudoers/cvtsudoers.c:1492 +#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:247 #: 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:376 @@ -124,143 +126,152 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1158 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:212 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:689 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:691 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:294 plugins/sudoers/ldap_util.c:301 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:402 -#: plugins/sudoers/log_client.c:715 plugins/sudoers/log_client.c:736 -#: plugins/sudoers/log_client.c:1415 plugins/sudoers/log_client.c:1536 -#: plugins/sudoers/log_client.c:1636 plugins/sudoers/log_client.c:1972 -#: plugins/sudoers/log_client.c:2031 plugins/sudoers/logging.c:110 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/match_command.c:335 plugins/sudoers/match_command.c:603 -#: plugins/sudoers/match_command.c:654 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:776 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:267 plugins/sudoers/parse.c:284 -#: plugins/sudoers/parse.c:303 plugins/sudoers/parse.c:322 -#: plugins/sudoers/parse.c:339 plugins/sudoers/parse.c:362 -#: plugins/sudoers/parse.c:373 plugins/sudoers/parse_ldif.c:153 -#: plugins/sudoers/parse_ldif.c:184 plugins/sudoers/parse_ldif.c:253 -#: plugins/sudoers/parse_ldif.c:261 plugins/sudoers/parse_ldif.c:266 -#: plugins/sudoers/parse_ldif.c:342 plugins/sudoers/parse_ldif.c:353 -#: plugins/sudoers/parse_ldif.c:380 plugins/sudoers/parse_ldif.c:397 -#: plugins/sudoers/parse_ldif.c:409 plugins/sudoers/parse_ldif.c:413 -#: plugins/sudoers/parse_ldif.c:427 plugins/sudoers/parse_ldif.c:484 -#: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:628 -#: plugins/sudoers/parse_ldif.c:653 plugins/sudoers/parse_ldif.c:711 -#: plugins/sudoers/parse_ldif.c:728 plugins/sudoers/parse_ldif.c:756 -#: plugins/sudoers/parse_ldif.c:763 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 -#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 -#: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 -#: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 -#: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:185 -#: plugins/sudoers/sssd.c:414 plugins/sudoers/sssd.c:479 -#: plugins/sudoers/sssd.c:505 plugins/sudoers/sssd.c:568 -#: plugins/sudoers/sssd.c:761 plugins/sudoers/strvec_join.c:53 -#: plugins/sudoers/stubs.c:112 plugins/sudoers/stubs.c:120 -#: plugins/sudoers/sudoers.c:354 plugins/sudoers/sudoers.c:380 -#: plugins/sudoers/sudoers.c:447 plugins/sudoers/sudoers.c:464 -#: plugins/sudoers/sudoers.c:505 plugins/sudoers/sudoers.c:849 -#: plugins/sudoers/sudoers.c:902 plugins/sudoers/sudoers.c:1054 -#: plugins/sudoers/sudoers.c:1114 plugins/sudoers/sudoers.c:1369 +#: plugins/sudoers/log_client.c:717 plugins/sudoers/log_client.c:739 +#: plugins/sudoers/log_client.c:744 plugins/sudoers/log_client.c:1423 +#: plugins/sudoers/log_client.c:1544 plugins/sudoers/log_client.c:1667 +#: plugins/sudoers/log_client.c:1986 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:846 plugins/sudoers/match_command.c:295 +#: plugins/sudoers/match_command.c:563 plugins/sudoers/match_command.c:629 +#: plugins/sudoers/match_command.c:724 plugins/sudoers/match_command.c:770 +#: plugins/sudoers/match_digest.c:82 plugins/sudoers/parse.c:279 +#: plugins/sudoers/parse.c:296 plugins/sudoers/parse.c:315 +#: plugins/sudoers/parse.c:334 plugins/sudoers/parse.c:351 +#: plugins/sudoers/parse.c:374 plugins/sudoers/parse.c:385 +#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 +#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:261 +#: plugins/sudoers/parse_ldif.c:266 plugins/sudoers/parse_ldif.c:342 +#: plugins/sudoers/parse_ldif.c:353 plugins/sudoers/parse_ldif.c:380 +#: plugins/sudoers/parse_ldif.c:397 plugins/sudoers/parse_ldif.c:409 +#: plugins/sudoers/parse_ldif.c:413 plugins/sudoers/parse_ldif.c:427 +#: plugins/sudoers/parse_ldif.c:484 plugins/sudoers/parse_ldif.c:598 +#: plugins/sudoers/parse_ldif.c:628 plugins/sudoers/parse_ldif.c:653 +#: plugins/sudoers/parse_ldif.c:711 plugins/sudoers/parse_ldif.c:728 +#: plugins/sudoers/parse_ldif.c:756 plugins/sudoers/parse_ldif.c:763 +#: plugins/sudoers/policy.c:622 plugins/sudoers/policy.c:1050 +#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:199 +#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 +#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:587 +#: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:857 +#: plugins/sudoers/pwutil.c:945 plugins/sudoers/pwutil.c:993 +#: plugins/sudoers/pwutil.c:1052 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 +#: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1325 plugins/sudoers/sudoers.c:1513 #: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 #: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 #: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 -#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 -#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:588 -#: plugins/sudoers/timestamp.c:451 plugins/sudoers/timestamp.c:495 -#: plugins/sudoers/timestamp.c:1017 plugins/sudoers/timestamp.c:1146 -#: plugins/sudoers/toke_util.c:78 plugins/sudoers/toke_util.c:106 -#: plugins/sudoers/toke_util.c:131 plugins/sudoers/toke_util.c:161 -#: plugins/sudoers/toke_util.c:200 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:150 plugins/sudoers/visudo.c:385 -#: plugins/sudoers/visudo.c:391 plugins/sudoers/visudo.c:502 -#: plugins/sudoers/visudo.c:1056 toke.l:1031 toke.l:1163 toke.l:1234 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 +#: plugins/sudoers/toke_util.c:161 plugins/sudoers/toke_util.c:200 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1087 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1299 msgid "unable to allocate memory" msgstr "impossible d'allouer la mémoire" -#: gram.y:623 +#: gram.y:622 msgid "a digest requires a path name" msgstr "un résumé (digest) nécessite un chemin d'accès" -#: gram.y:645 +#: gram.y:644 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "les valeurs de « CWD » doivent commencer par « / », « ~ » ou « * »" -#: gram.y:651 +#: gram.y:650 msgid "\"CWD\" path too long" msgstr "chemin trop long pour « CWD »" -#: gram.y:661 +#: gram.y:660 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "les valeurs de « CHROOT » doivent commencer par « / », « ~ » ou « * »" -#: gram.y:667 +#: gram.y:666 msgid "\"CHROOT\" path too long" msgstr "chemin trop long pour « CHROOT »" -#: gram.y:802 +#: gram.y:801 #, 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:825 +#: gram.y:824 msgid "invalid notbefore value" msgstr "valeur « notbefore » (pas avant) invalide" -#: gram.y:834 +#: gram.y:833 msgid "invalid notafter value" msgstr "valeur « notafter » (pas après) invalide" -#: gram.y:844 plugins/sudoers/policy.c:385 +#: gram.y:843 plugins/sudoers/policy.c:381 msgid "timeout value too large" msgstr "valeur trop grande pour le délai d'expiration" -#: gram.y:846 plugins/sudoers/policy.c:387 +#: gram.y:845 plugins/sudoers/policy.c:383 msgid "invalid timeout value" msgstr "valeur invalide pour le délai d'expiration" -#: gram.y:967 plugins/sudoers/sudoers.c:1072 +#: gram.y:966 plugins/sudoers/sudoers.c:1192 msgid "command too long" msgstr "commande trop longue" -#: gram.y:1224 plugins/sudoers/check_aliases.c:96 -#: plugins/sudoers/defaults.c:1276 +#: gram.y:1000 +msgid "expected a fully-qualified path name" +msgstr "nom de chemin totalement défini attendu" + +#: gram.y:1244 plugins/sudoers/check_aliases.c:96 +#: plugins/sudoers/defaults.c:1275 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1278 +#: gram.y:1298 #, c-format msgid "Alias \"%s\" already defined" msgstr "L'alias « %s » est déjà défini" -#: gram.y:1777 gram.y:1827 lib/eventlog/eventlog.c:235 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:830 -#: lib/eventlog/eventlog.c:833 lib/eventlog/eventlog.c:1135 -#: lib/iolog/iolog_filter.c:142 lib/iolog/iolog_filter.c:202 -#: lib/iolog/iolog_filter.c:232 lib/iolog/iolog_json.c:150 -#: lib/iolog/iolog_json.c:381 lib/iolog/iolog_json.c:412 +#: gram.y:1808 gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:755 lib/eventlog/eventlog.c:828 +#: lib/eventlog/eventlog.c:831 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:471 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 +#: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:232 #: 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 @@ -275,55 +286,56 @@ #: logsrvd/iolog_writer.c:316 logsrvd/iolog_writer.c:328 #: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 #: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 -#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 -#: logsrvd/logsrvd.c:310 logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:490 -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:611 -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:732 -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1439 logsrvd/logsrvd.c:1446 -#: logsrvd/logsrvd.c:1582 logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 -#: logsrvd/logsrvd.c:1988 logsrvd/logsrvd_conf.c:357 -#: logsrvd/logsrvd_conf.c:370 logsrvd/logsrvd_conf.c:511 -#: logsrvd/logsrvd_conf.c:534 logsrvd/logsrvd_conf.c:538 -#: logsrvd/logsrvd_conf.c:556 logsrvd/logsrvd_conf.c:626 -#: logsrvd/logsrvd_conf.c:649 logsrvd/logsrvd_conf.c:678 -#: logsrvd/logsrvd_conf.c:692 logsrvd/logsrvd_conf.c:706 -#: logsrvd/logsrvd_conf.c:720 logsrvd/logsrvd_conf.c:734 -#: logsrvd/logsrvd_conf.c:748 logsrvd/logsrvd_conf.c:829 -#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1053 -#: logsrvd/logsrvd_conf.c:1448 logsrvd/logsrvd_conf.c:1595 -#: logsrvd/logsrvd_conf.c:1621 logsrvd/logsrvd_conf.c:1633 -#: logsrvd/logsrvd_conf.c:1640 logsrvd/logsrvd_conf.c:1646 -#: logsrvd/logsrvd_conf.c:1742 logsrvd/logsrvd_journal.c:76 -#: logsrvd/logsrvd_journal.c:125 logsrvd/logsrvd_journal.c:216 -#: logsrvd/logsrvd_journal.c:246 logsrvd/logsrvd_journal.c:250 -#: logsrvd/logsrvd_journal.c:258 logsrvd/logsrvd_journal.c:281 -#: logsrvd/logsrvd_journal.c:285 logsrvd/logsrvd_journal.c:433 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:278 -#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:491 logsrvd/logsrvd_queue.c:158 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:291 -#: logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 logsrvd/sendlog.c:1503 -#: logsrvd/sendlog.c:1510 logsrvd/sendlog.c:1733 logsrvd/sendlog.c:1801 -#: logsrvd/tls_init.c:305 logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 -#: plugins/sudoers/audit.c:116 plugins/sudoers/auth/pam.c:502 -#: plugins/sudoers/auth/pam.c:687 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:174 plugins/sudoers/cvtsudoers.c:191 -#: plugins/sudoers/cvtsudoers.c:202 plugins/sudoers/cvtsudoers.c:332 -#: plugins/sudoers/cvtsudoers.c:536 plugins/sudoers/cvtsudoers.c:669 -#: plugins/sudoers/cvtsudoers.c:687 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:869 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:182 plugins/sudoers/cvtsudoers_csv.c:245 -#: 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:375 -#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:437 -#: plugins/sudoers/cvtsudoers_ldif.c:448 plugins/sudoers/cvtsudoers_ldif.c:455 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:480 -#: plugins/sudoers/cvtsudoers_ldif.c:488 plugins/sudoers/cvtsudoers_ldif.c:635 -#: plugins/sudoers/cvtsudoers_merge.c:47 plugins/sudoers/cvtsudoers_merge.c:51 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:530 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:668 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:1132 +#: logsrvd/logsrvd.c:1447 logsrvd/logsrvd.c:1454 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 +#: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 +#: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 +#: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 +#: logsrvd/logsrvd_conf.c:626 logsrvd/logsrvd_conf.c:649 +#: logsrvd/logsrvd_conf.c:678 logsrvd/logsrvd_conf.c:692 +#: logsrvd/logsrvd_conf.c:706 logsrvd/logsrvd_conf.c:720 +#: logsrvd/logsrvd_conf.c:734 logsrvd/logsrvd_conf.c:748 +#: logsrvd/logsrvd_conf.c:829 logsrvd/logsrvd_conf.c:1036 +#: logsrvd/logsrvd_conf.c:1053 logsrvd/logsrvd_conf.c:1448 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1621 +#: logsrvd/logsrvd_conf.c:1633 logsrvd/logsrvd_conf.c:1640 +#: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1742 +#: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:125 +#: logsrvd/logsrvd_journal.c:216 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:250 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:290 +#: logsrvd/logsrvd_journal.c:438 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:466 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:491 +#: logsrvd/logsrvd_queue.c:158 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 +#: logsrvd/sendlog.c:292 logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 +#: logsrvd/sendlog.c:624 logsrvd/sendlog.c:1512 logsrvd/sendlog.c:1519 +#: logsrvd/sendlog.c:1742 logsrvd/sendlog.c:1810 logsrvd/tls_init.c:305 +#: logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/pam.c:502 plugins/sudoers/auth/pam.c:687 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/canon_path.c:129 +#: plugins/sudoers/canon_path.c:160 plugins/sudoers/check_aliases.c:168 +#: plugins/sudoers/cvtsudoers.c:132 plugins/sudoers/cvtsudoers.c:175 +#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:203 +#: plugins/sudoers/cvtsudoers.c:333 plugins/sudoers/cvtsudoers.c:537 +#: plugins/sudoers/cvtsudoers.c:690 plugins/sudoers/cvtsudoers.c:708 +#: plugins/sudoers/cvtsudoers.c:883 plugins/sudoers/cvtsudoers.c:890 +#: plugins/sudoers/cvtsudoers.c:1386 plugins/sudoers/cvtsudoers.c:1390 +#: plugins/sudoers/cvtsudoers.c:1492 plugins/sudoers/cvtsudoers_csv.c:182 +#: plugins/sudoers/cvtsudoers_csv.c:246 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:375 plugins/sudoers/cvtsudoers_ldif.c:429 +#: plugins/sudoers/cvtsudoers_ldif.c:437 plugins/sudoers/cvtsudoers_ldif.c:448 +#: plugins/sudoers/cvtsudoers_ldif.c:455 plugins/sudoers/cvtsudoers_ldif.c:467 +#: plugins/sudoers/cvtsudoers_ldif.c:480 plugins/sudoers/cvtsudoers_ldif.c:488 +#: plugins/sudoers/cvtsudoers_ldif.c:635 plugins/sudoers/cvtsudoers_merge.c:47 +#: plugins/sudoers/cvtsudoers_merge.c:51 #: plugins/sudoers/cvtsudoers_merge.c:353 #: plugins/sudoers/cvtsudoers_merge.c:399 #: plugins/sudoers/cvtsudoers_merge.c:445 @@ -335,42 +347,43 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1157 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:211 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:688 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:690 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:293 plugins/sudoers/ldap_util.c:300 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:228 #: plugins/sudoers/log_client.c:250 plugins/sudoers/log_client.c:264 -#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:715 -#: plugins/sudoers/log_client.c:736 plugins/sudoers/log_client.c:1415 -#: plugins/sudoers/log_client.c:1536 plugins/sudoers/log_client.c:1636 -#: plugins/sudoers/log_client.c:1972 plugins/sudoers/log_client.c:2031 -#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:188 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/logging.c:880 plugins/sudoers/logging.c:892 -#: plugins/sudoers/match_command.c:334 plugins/sudoers/match_command.c:602 -#: plugins/sudoers/match_command.c:653 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:775 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:266 plugins/sudoers/parse.c:283 -#: plugins/sudoers/parse.c:302 plugins/sudoers/parse.c:321 -#: plugins/sudoers/parse.c:338 plugins/sudoers/parse.c:361 -#: plugins/sudoers/parse.c:372 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:717 +#: plugins/sudoers/log_client.c:739 plugins/sudoers/log_client.c:744 +#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1544 +#: plugins/sudoers/log_client.c:1667 plugins/sudoers/log_client.c:1986 +#: plugins/sudoers/log_client.c:2045 plugins/sudoers/logging.c:110 +#: plugins/sudoers/logging.c:188 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:734 plugins/sudoers/logging.c:846 +#: plugins/sudoers/logging.c:899 plugins/sudoers/logging.c:906 +#: plugins/sudoers/match_command.c:294 plugins/sudoers/match_command.c:562 +#: plugins/sudoers/match_command.c:628 plugins/sudoers/match_command.c:724 +#: plugins/sudoers/match_command.c:769 plugins/sudoers/match_digest.c:82 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:295 +#: plugins/sudoers/parse.c:314 plugins/sudoers/parse.c:333 +#: plugins/sudoers/parse.c:350 plugins/sudoers/parse.c:373 +#: plugins/sudoers/parse.c:384 plugins/sudoers/parse_ldif.c:152 #: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 #: plugins/sudoers/parse_ldif.c:260 plugins/sudoers/parse_ldif.c:265 #: plugins/sudoers/parse_ldif.c:341 plugins/sudoers/parse_ldif.c:352 @@ -380,56 +393,60 @@ #: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:627 #: plugins/sudoers/parse_ldif.c:652 plugins/sudoers/parse_ldif.c:710 #: plugins/sudoers/parse_ldif.c:727 plugins/sudoers/parse_ldif.c:755 -#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:154 -#: plugins/sudoers/policy.c:163 plugins/sudoers/policy.c:172 -#: plugins/sudoers/policy.c:201 plugins/sudoers/policy.c:370 -#: plugins/sudoers/policy.c:385 plugins/sudoers/policy.c:387 -#: plugins/sudoers/policy.c:425 plugins/sudoers/policy.c:434 -#: plugins/sudoers/policy.c:482 plugins/sudoers/policy.c:492 -#: plugins/sudoers/policy.c:501 plugins/sudoers/policy.c:510 -#: plugins/sudoers/policy.c:519 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:166 +#: plugins/sudoers/policy.c:196 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:381 plugins/sudoers/policy.c:383 +#: plugins/sudoers/policy.c:421 plugins/sudoers/policy.c:430 +#: plugins/sudoers/policy.c:478 plugins/sudoers/policy.c:488 +#: plugins/sudoers/policy.c:497 plugins/sudoers/policy.c:506 +#: plugins/sudoers/policy.c:515 plugins/sudoers/policy.c:622 +#: plugins/sudoers/policy.c:1050 plugins/sudoers/prompt.c:93 #: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 #: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 #: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 #: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 #: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 plugins/sudoers/sssd.c:144 #: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 #: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 -#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:761 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:112 -#: plugins/sudoers/stubs.c:120 plugins/sudoers/sudoers.c:354 -#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:447 -#: plugins/sudoers/sudoers.c:464 plugins/sudoers/sudoers.c:505 -#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:902 -#: plugins/sudoers/sudoers.c:1054 plugins/sudoers/sudoers.c:1114 -#: plugins/sudoers/sudoers.c:1369 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:562 plugins/sudoers/sudoreplay.c:1278 -#: plugins/sudoers/sudoreplay.c:1334 plugins/sudoers/sudoreplay.c:1530 -#: plugins/sudoers/sudoreplay.c:1534 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:588 plugins/sudoers/timestamp.c:451 -#: plugins/sudoers/timestamp.c:495 plugins/sudoers/timestamp.c:1017 -#: plugins/sudoers/timestamp.c:1146 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1324 plugins/sudoers/sudoers.c:1513 +#: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 +#: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 #: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 #: plugins/sudoers/toke_util.c:160 plugins/sudoers/toke_util.c:200 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:150 -#: plugins/sudoers/visudo.c:385 plugins/sudoers/visudo.c:391 -#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:1056 toke.l:1031 -#: toke.l:1163 toke.l:1226 toke.l:1234 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1086 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1288 toke.l:1299 #, c-format msgid "%s: %s" msgstr "%s : %s" -#: lib/eventlog/eventlog.c:303 +#: lib/eventlog/eventlog.c:304 #, c-format msgid "unable to dup stdin: %m" msgstr "duplication (dup) de stdin impossible : %m" -#: lib/eventlog/eventlog.c:345 +#: lib/eventlog/eventlog.c:346 #, c-format msgid "unable to execute %s: %m" msgstr "exécution de %s impossible : %m" @@ -448,96 +465,96 @@ msgid "unable to open pipe: %m" msgstr "ouverture du tube impossible : %m" -#: lib/eventlog/eventlog.c:960 +#: lib/eventlog/eventlog.c:958 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:989 +#: lib/eventlog/eventlog.c:987 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (suite de la commande) %s" -#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1242 -#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 -#, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "expression régulière « %s » invalide : %s" - -#: lib/iolog/iolog_json.c:140 +#: lib/eventlog/parse_json.c:175 #, c-format msgid "expected JSON_STRING, got %d" msgstr "JSON_STRING attendue, %d obtenu" -#: lib/iolog/iolog_json.c:145 +#: lib/eventlog/parse_json.c:180 msgid "JSON_ARRAY too large" msgstr "JSON_ARRAY trop grand" -#: lib/iolog/iolog_json.c:404 +#: lib/eventlog/parse_json.c:494 msgid "missing double quote in name" msgstr "guillemet manquante dans le nom" -#: lib/iolog/iolog_json.c:511 +#: lib/eventlog/parse_json.c:612 msgid "missing JSON_OBJECT" msgstr "JSON_OBJECT manquant" -#: lib/iolog/iolog_json.c:515 +#: lib/eventlog/parse_json.c:616 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "JSON_OBJECT attendu, %d obtenu" -#: lib/iolog/iolog_json.c:632 +#: lib/eventlog/parse_json.c:750 #, c-format msgid "json stack exhausted (max %u frames)" msgstr "pile json épuisée (max %u trames)" -#: lib/iolog/iolog_json.c:706 +#: lib/eventlog/parse_json.c:828 msgid "objects must consist of name:value pairs" msgstr "les objets doivent être des paires nom:valeur" -#: lib/iolog/iolog_json.c:711 lib/iolog/iolog_json.c:742 -#: lib/iolog/iolog_json.c:786 lib/iolog/iolog_json.c:808 -#: lib/iolog/iolog_json.c:830 lib/iolog/iolog_json.c:852 -#: lib/iolog/iolog_json.c:874 +#: lib/eventlog/parse_json.c:833 lib/eventlog/parse_json.c:864 +#: lib/eventlog/parse_json.c:908 lib/eventlog/parse_json.c:930 +#: lib/eventlog/parse_json.c:952 lib/eventlog/parse_json.c:974 +#: lib/eventlog/parse_json.c:996 msgid "missing separator between values" msgstr "séparateur manquant entre les valeurs" -#: lib/iolog/iolog_json.c:726 lib/iolog/iolog_json.c:900 +#: lib/eventlog/parse_json.c:848 lib/eventlog/parse_json.c:1022 msgid "unmatched close brace" msgstr "accolade fermante non appariée" -#: lib/iolog/iolog_json.c:737 +#: lib/eventlog/parse_json.c:859 msgid "unexpected array" msgstr "tableau attendu" -#: lib/iolog/iolog_json.c:757 lib/iolog/iolog_json.c:903 +#: lib/eventlog/parse_json.c:879 lib/eventlog/parse_json.c:1025 msgid "unmatched close bracket" msgstr "crochet fermant non apparié" -#: lib/iolog/iolog_json.c:768 +#: lib/eventlog/parse_json.c:890 msgid "unexpected string" msgstr "chaîne inattendue" -#: lib/iolog/iolog_json.c:779 +#: lib/eventlog/parse_json.c:901 msgid "missing colon after name" msgstr "deux points manquants après le nom" -#: lib/iolog/iolog_json.c:800 lib/iolog/iolog_json.c:822 +#: lib/eventlog/parse_json.c:922 lib/eventlog/parse_json.c:944 msgid "unexpected boolean" msgstr "booléen inattendu" -#: lib/iolog/iolog_json.c:844 +#: lib/eventlog/parse_json.c:966 msgid "unexpected null" msgstr "nul inattendu" -#: lib/iolog/iolog_json.c:865 +#: lib/eventlog/parse_json.c:987 msgid "unexpected number" msgstr "nombre inattendu" -#: lib/iolog/iolog_json.c:912 +#: lib/eventlog/parse_json.c:1033 msgid "parse error" msgstr "erreur d'analyse grammaticale" +#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1241 +#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "expression régulière « %s » invalide : %s" + #: lib/iolog/iolog_legacy.c:65 #, c-format msgid "%s: invalid log file" @@ -574,13 +591,13 @@ msgstr "%s existe mais n'est pas un répertoire (0%o)" #: lib/iolog/iolog_mkdirs.c:123 lib/iolog/iolog_mkdtemp.c:79 -#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:209 +#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:234 #, c-format msgid "unable to mkdir %s" msgstr "création du répertoire (mkdir) %s impossible" -#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:757 -#: plugins/sudoers/visudo.c:791 plugins/sudoers/visudo.c:797 +#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:760 +#: plugins/sudoers/visudo.c:794 plugins/sudoers/visudo.c:800 #, 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" @@ -612,8 +629,8 @@ msgid "%s: protocol error: NULL value found in %s" msgstr "%s : erreur de protocole : valeur NULL trouvée dans %s" -#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:980 -#: plugins/sudoers/policy.c:593 +#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:993 +#: plugins/sudoers/policy.c:589 msgid "unable to generate UUID" msgstr "impossible de générer le UUID" @@ -665,26 +682,26 @@ 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:763 logsrvd/logsrvd_journal.c:385 +#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:390 #, 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:785 logsrvd/logsrvd_journal.c:428 +#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:433 #: logsrvd/logsrvd_queue.c:115 logsrvd/tls_init.c:256 -#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:730 -#: plugins/sudoers/cvtsudoers.c:751 plugins/sudoers/cvtsudoers.c:1431 -#: plugins/sudoers/cvtsudoers_csv.c:695 plugins/sudoers/cvtsudoers_json.c:898 -#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1152 -#: plugins/sudoers/sudoers.c:1182 plugins/sudoers/sudoreplay.c:1496 -#: plugins/sudoers/timestamp.c:460 plugins/sudoers/tsdump.c:128 -#: plugins/sudoers/visudo.c:975 +#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:751 +#: plugins/sudoers/cvtsudoers.c:772 plugins/sudoers/cvtsudoers.c:1452 +#: plugins/sudoers/cvtsudoers_csv.c:697 plugins/sudoers/cvtsudoers_json.c:902 +#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1310 +#: plugins/sudoers/sudoers.c:1334 plugins/sudoers/sudoreplay.c:1496 +#: plugins/sudoers/timestamp.c:485 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:982 #, c-format msgid "unable to open %s" msgstr "ouverture de %s impossible" -#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:105 -#: logsrvd/logsrv_util.c:112 plugins/sudoers/sudoreplay.c:355 +#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:111 +#: logsrvd/logsrv_util.c:118 plugins/sudoers/sudoreplay.c:355 #: plugins/sudoers/sudoreplay.c:361 #, c-format msgid "unable to open %s/%s" @@ -700,17 +717,17 @@ msgid "unable to rename %s to %s" msgstr "impossible de renommer %s en %s" -#: logsrvd/logsrv_util.c:147 logsrvd/logsrv_util.c:176 +#: logsrvd/logsrv_util.c:153 logsrvd/logsrv_util.c:182 #, 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/logsrv_util.c:159 +#: logsrvd/logsrv_util.c:165 #, c-format msgid "missing I/O log file %s/%s" msgstr "fichier du journal E/S %s/%s manquant" -#: logsrvd/logsrv_util.c:166 +#: logsrvd/logsrv_util.c:172 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s : impossible d'examiner vers l'avant de %zu" @@ -719,31 +736,31 @@ msgid "unable to connect to relay" msgstr "impossible de se connecter au relai" -#: logsrvd/logsrvd.c:330 logsrvd/logsrvd_relay.c:842 +#: logsrvd/logsrvd.c:338 logsrvd/logsrvd_relay.c:844 #, c-format msgid "server message too large: %zu" msgstr "message serveur trop grand : %zu" -#: logsrvd/logsrvd.c:422 logsrvd/logsrvd.c:545 logsrvd/logsrvd.c:631 -#: logsrvd/logsrvd.c:873 logsrvd/logsrvd.c:887 logsrvd/logsrvd.c:1049 -#: logsrvd/logsrvd.c:1174 logsrvd/logsrvd.c:1347 logsrvd/logsrvd.c:1365 -#: logsrvd/logsrvd.c:1464 logsrvd/logsrvd.c:1589 logsrvd/logsrvd.c:1773 -#: logsrvd/logsrvd_journal.c:497 logsrvd/logsrvd_local.c:238 +#: logsrvd/logsrvd.c:430 logsrvd/logsrvd.c:553 logsrvd/logsrvd.c:639 +#: logsrvd/logsrvd.c:881 logsrvd/logsrvd.c:895 logsrvd/logsrvd.c:1057 +#: logsrvd/logsrvd.c:1182 logsrvd/logsrvd.c:1355 logsrvd/logsrvd.c:1373 +#: logsrvd/logsrvd.c:1472 logsrvd/logsrvd.c:1597 logsrvd/logsrvd.c:1784 +#: logsrvd/logsrvd_journal.c:502 logsrvd/logsrvd_local.c:238 #: logsrvd/logsrvd_queue.c:164 logsrvd/logsrvd_relay.c:172 #: logsrvd/logsrvd_relay.c:249 logsrvd/logsrvd_relay.c:253 -#: logsrvd/logsrvd_relay.c:389 logsrvd/logsrvd_relay.c:581 -#: logsrvd/logsrvd_relay.c:742 logsrvd/logsrvd_relay.c:1131 -#: logsrvd/sendlog.c:1291 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 -#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:278 -#: plugins/sudoers/iolog.c:1031 plugins/sudoers/iolog.c:1164 -#: plugins/sudoers/iolog.c:1262 plugins/sudoers/log_client.c:121 +#: logsrvd/logsrvd_relay.c:391 logsrvd/logsrvd_relay.c:583 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:1133 +#: logsrvd/sendlog.c:1300 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:277 +#: plugins/sudoers/iolog.c:1030 plugins/sudoers/iolog.c:1163 +#: plugins/sudoers/iolog.c:1261 plugins/sudoers/log_client.c:121 #: plugins/sudoers/log_client.c:343 plugins/sudoers/log_client.c:359 -#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:611 -#: plugins/sudoers/log_client.c:618 plugins/sudoers/log_client.c:1103 -#: plugins/sudoers/log_client.c:1384 plugins/sudoers/log_client.c:1425 -#: plugins/sudoers/log_client.c:1433 plugins/sudoers/log_client.c:1592 -#: plugins/sudoers/log_client.c:1710 plugins/sudoers/log_client.c:2039 -#: plugins/sudoers/log_client.c:2047 plugins/sudoers/logging.c:147 +#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:613 +#: plugins/sudoers/log_client.c:620 plugins/sudoers/log_client.c:1111 +#: plugins/sudoers/log_client.c:1392 plugins/sudoers/log_client.c:1433 +#: plugins/sudoers/log_client.c:1441 plugins/sudoers/log_client.c:1600 +#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:2053 +#: plugins/sudoers/log_client.c:2061 plugins/sudoers/logging.c:147 #: plugins/sudoers/logging.c:205 plugins/sudoers/sudoreplay.c:519 #: plugins/sudoers/sudoreplay.c:566 plugins/sudoers/sudoreplay.c:808 #: plugins/sudoers/sudoreplay.c:920 plugins/sudoers/sudoreplay.c:1011 @@ -753,189 +770,190 @@ msgid "unable to add event to queue" msgstr "impossible d'ajouter l'événement à la queue" -#: logsrvd/logsrvd.c:446 logsrvd/logsrvd.c:483 logsrvd/logsrvd.c:515 -#: logsrvd/logsrvd.c:569 logsrvd/logsrvd.c:648 logsrvd/logsrvd.c:684 -#: logsrvd/logsrvd.c:720 logsrvd/logsrvd.c:756 logsrvd/logsrvd_relay.c:510 -#: logsrvd/logsrvd_relay.c:543 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:577 logsrvd/logsrvd.c:656 logsrvd/logsrvd.c:692 +#: logsrvd/logsrvd.c:728 logsrvd/logsrvd.c:764 logsrvd/logsrvd_relay.c:512 +#: logsrvd/logsrvd_relay.c:545 #, c-format msgid "unexpected state %d for %s" msgstr "état %d inattendu pour %s" -#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 -#: logsrvd/logsrvd.c:570 logsrvd/logsrvd.c:649 logsrvd/logsrvd.c:685 -#: logsrvd/logsrvd.c:721 logsrvd/logsrvd.c:757 logsrvd/logsrvd_relay.c:512 -#: logsrvd/logsrvd_relay.c:545 +#: logsrvd/logsrvd.c:455 logsrvd/logsrvd.c:492 logsrvd/logsrvd.c:524 +#: logsrvd/logsrvd.c:578 logsrvd/logsrvd.c:657 logsrvd/logsrvd.c:693 +#: logsrvd/logsrvd.c:729 logsrvd/logsrvd.c:765 logsrvd/logsrvd_relay.c:514 +#: logsrvd/logsrvd_relay.c:547 msgid "state machine error" msgstr "erreur de la machine à états" -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:454 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:462 msgid "invalid AcceptMessage" msgstr "AcceptMessage invalide" -#: logsrvd/logsrvd.c:490 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:499 msgid "invalid RejectMessage" msgstr "RejectMessage invalide" -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:530 logsrvd/logsrvd.c:531 msgid "invalid ExitMessage" msgstr "ExitMessage invalide" -#: logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:577 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:585 msgid "invalid RestartMessage" msgstr "RestartMessage invalide" -#: logsrvd/logsrvd.c:611 logsrvd/logsrvd.c:612 +#: logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:620 msgid "invalid AlertMessage" msgstr "AlertMessage invalide" -#: logsrvd/logsrvd.c:653 logsrvd/logsrvd.c:689 logsrvd/logsrvd.c:725 +#: logsrvd/logsrvd.c:661 logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:733 #, c-format msgid "%s: unexpected IoBuffer" msgstr "%s : IoBuffer inattendu" -#: logsrvd/logsrvd.c:654 logsrvd/logsrvd.c:690 logsrvd/logsrvd.c:726 +#: logsrvd/logsrvd.c:662 logsrvd/logsrvd.c:698 logsrvd/logsrvd.c:734 msgid "protocol error" msgstr "erreur protocole" -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:661 +#: logsrvd/logsrvd.c:668 logsrvd/logsrvd.c:669 msgid "invalid IoBuffer" msgstr "IoBuffer invalide" -#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:697 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:705 msgid "invalid ChangeWindowSize" msgstr "ChangeWindowSize invalide" -#: logsrvd/logsrvd.c:732 logsrvd/logsrvd.c:733 +#: logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:741 msgid "invalid CommandSuspend" msgstr "CommandSuspend invalide" -#: logsrvd/logsrvd.c:782 logsrvd/logsrvd_journal.c:296 -#: logsrvd/logsrvd_relay.c:652 logsrvd/sendlog.c:1192 -#: plugins/sudoers/log_client.c:1582 +#: logsrvd/logsrvd.c:790 logsrvd/logsrvd_journal.c:301 +#: logsrvd/logsrvd_relay.c:654 logsrvd/sendlog.c:1201 +#: plugins/sudoers/log_client.c:1590 #, c-format msgid "unable to unpack %s size %zu" msgstr "impossible de décompresser %s avec une taille de %zu" -#: logsrvd/logsrvd.c:827 logsrvd/logsrvd_journal.c:370 -#: logsrvd/logsrvd_relay.c:676 +#: logsrvd/logsrvd.c:835 logsrvd/logsrvd_journal.c:375 +#: logsrvd/logsrvd_relay.c:678 #, 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:829 +#: logsrvd/logsrvd.c:837 msgid "unrecognized ClientMessage type" msgstr "type de ClientMessage non reconnu" -#: logsrvd/logsrvd.c:919 +#: logsrvd/logsrvd.c:927 #, 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:924 logsrvd/logsrvd_relay.c:914 logsrvd/sendlog.c:1395 +#: logsrvd/logsrvd.c:932 logsrvd/logsrvd_relay.c:916 logsrvd/sendlog.c:1404 #, c-format msgid "missing write buffer for client %s" msgstr "tampon d'écriture manquant pour le client %s" -#: logsrvd/logsrvd.c:1020 +#: logsrvd/logsrvd.c:1028 #, 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:1061 logsrvd/logsrvd_relay.c:777 +#: logsrvd/logsrvd.c:1069 logsrvd/logsrvd_relay.c:779 #, 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:1105 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:322 -#: plugins/sudoers/log_client.c:721 +#: logsrvd/logsrvd.c:1113 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:331 +#: plugins/sudoers/log_client.c:723 #, c-format msgid "client message too large: %zu" msgstr "message client trop grand : %zu" -#: logsrvd/logsrvd.c:1106 logsrvd/logsrvd_journal.c:259 +#: logsrvd/logsrvd.c:1114 logsrvd/logsrvd_journal.c:259 #: logsrvd/logsrvd_journal.c:260 msgid "client message too large" msgstr "message client trop grand" -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1125 +#: logsrvd/logsrvd.c:1132 logsrvd/logsrvd.c:1133 msgid "invalid ClientMessage" msgstr "ClientMessage invalide" -#: logsrvd/logsrvd.c:1425 +#: logsrvd/logsrvd.c:1433 msgid "unable to get remote IP addr" msgstr "impossible d'obtenir l'adresse IP distante" -#: logsrvd/logsrvd.c:1456 logsrvd/tls_client.c:203 +#: logsrvd/logsrvd.c:1464 logsrvd/tls_client.c:203 #: plugins/sudoers/log_client.c:281 #, 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:1639 logsrvd/logsrvd.c:1992 +#: logsrvd/logsrvd.c:1647 logsrvd/logsrvd.c:2003 msgid "unable to setup listen socket" msgstr "configuration du socket d'écoute impossible" -#: logsrvd/logsrvd.c:1756 +#: logsrvd/logsrvd.c:1767 #, c-format msgid "unexpected signal %d" msgstr "signal %d inattendu" -#: logsrvd/logsrvd.c:1894 +#: logsrvd/logsrvd.c:1905 msgid "sudo log server" msgstr "serveur de journalisation de sudo" -#: logsrvd/logsrvd.c:1896 logsrvd/sendlog.c:121 +#: logsrvd/logsrvd.c:1907 logsrvd/sendlog.c:121 msgid "Options:" msgstr "Options :" -#: logsrvd/logsrvd.c:1898 +#: logsrvd/logsrvd.c:1909 msgid "path to configuration file" msgstr "chemin du fichier de configuration" -#: logsrvd/logsrvd.c:1900 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1911 logsrvd/sendlog.c:123 msgid "display help message and exit" msgstr "afficher le message d'aide et quitter" -#: logsrvd/logsrvd.c:1902 +#: logsrvd/logsrvd.c:1913 msgid "do not fork, run in the foreground" msgstr "ne pas cloner, exécuter à l'avant plan" -#: logsrvd/logsrvd.c:1904 +#: logsrvd/logsrvd.c:1915 msgid "percent chance connections will drop" msgstr "pourcentage de chance que les connections soient abandonnées" -#: logsrvd/logsrvd.c:1906 logsrvd/sendlog.c:153 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:153 msgid "display version information and exit" msgstr "afficher l'information de version et quitter" -#: logsrvd/logsrvd.c:1956 logsrvd/sendlog.c:1702 +#: logsrvd/logsrvd.c:1967 logsrvd/sendlog.c:1711 msgid "Protobuf-C version 1.3 or higher required" msgstr "Version 1.3 ou supérieure de Protobuf-C requise" -#: logsrvd/logsrvd.c:1972 +#: logsrvd/logsrvd.c:1983 #, c-format msgid "invalid random drop value: %s" msgstr "valeur d'abandon aléatoire invalide : %s" -#: logsrvd/logsrvd.c:1975 logsrvd/sendlog.c:1756 -#: plugins/sudoers/cvtsudoers.c:246 plugins/sudoers/sudoreplay.c:294 -#: plugins/sudoers/visudo.c:182 +#: logsrvd/logsrvd.c:1986 logsrvd/sendlog.c:1765 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/sudoreplay.c:294 +#: plugins/sudoers/visudo.c:186 #, c-format msgid "%s version %s\n" msgstr "%s version %s\n" #: logsrvd/logsrvd_conf.c:422 plugins/sudoers/check.c:358 #: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:122 -#: plugins/sudoers/policy.c:1271 plugins/sudoers/sudoers.c:512 -#: plugins/sudoers/sudoers.c:1411 plugins/sudoers/testsudoers.c:215 -#: plugins/sudoers/testsudoers.c:382 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:939 +#: plugins/sudoers/sudoers.c:1041 plugins/sudoers/sudoers.c:1062 +#: plugins/sudoers/sudoers.c:1555 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:393 #, c-format msgid "unknown user %s" msgstr "utilisateur %s inconnu" #: logsrvd/logsrvd_conf.c:439 plugins/sudoers/iolog.c:148 -#: plugins/sudoers/sudoers.c:517 plugins/sudoers/sudoers.c:1445 -#: plugins/sudoers/testsudoers.c:406 +#: plugins/sudoers/sudoers.c:453 plugins/sudoers/sudoers.c:1589 +#: plugins/sudoers/testsudoers.c:417 #, c-format msgid "unknown group %s" msgstr "groupe %s inconnu" @@ -1007,8 +1025,8 @@ msgid "%s:%d [%s] illegal key: %s" msgstr "%s:%d [%s] clé illégale : %s" -#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:268 -#: plugins/sudoers/logging.c:1033 +#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:269 +#: plugins/sudoers/logging.c:1046 #, c-format msgid "unable to open log file %s" msgstr "ouverture du fichier de journalisation %s impossible" @@ -1021,13 +1039,13 @@ msgid "unable to initialize relay TLS context" msgstr "impossible d'initialiser le contexte TLS du relai : %s" -#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:424 -#: logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:434 msgid "unable to create journal file" msgstr "impossible de créer le fichier de journalisation" #: logsrvd/logsrvd_journal.c:153 logsrvd/logsrvd_queue.c:109 -#: plugins/sudoers/visudo.c:1028 +#: plugins/sudoers/visudo.c:1038 #, c-format msgid "unable to lock %s" msgstr "impossible de verrouiller %s" @@ -1040,8 +1058,8 @@ msgid "unable to open journal file" msgstr "impossible d'ouvrir le fichier de journalisation" -#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:460 -#: logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:470 msgid "unable to write journal file" msgstr "impossible d'écrire le fichier de journalisation" @@ -1050,20 +1068,20 @@ msgstr "impossible de renommer le fichier de journalisation" #: logsrvd/logsrvd_journal.c:247 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:282 logsrvd/logsrvd_journal.c:283 +#: logsrvd/logsrvd_journal.c:287 logsrvd/logsrvd_journal.c:288 msgid "unexpected EOF reading journal file" msgstr "fin de fichier inattendue en lisant le fichier de journalisation" #: logsrvd/logsrvd_journal.c:251 logsrvd/logsrvd_journal.c:252 -#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:287 +#: logsrvd/logsrvd_journal.c:291 logsrvd/logsrvd_journal.c:292 msgid "error reading journal file" msgstr "erreur de lecture dans le fichier de journalisation" -#: logsrvd/logsrvd_journal.c:298 logsrvd/logsrvd_journal.c:384 +#: logsrvd/logsrvd_journal.c:303 logsrvd/logsrvd_journal.c:389 msgid "invalid journal file, unable to restart" msgstr "fichier de journalisation invalide, impossible de redémarrer" -#: logsrvd/logsrvd_journal.c:443 +#: logsrvd/logsrvd_journal.c:448 #, 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" @@ -1121,7 +1139,7 @@ #: logsrvd/logsrvd_local.c:599 logsrvd/logsrvd_local.c:607 #: logsrvd/logsrvd_local.c:655 logsrvd/logsrvd_local.c:690 -#: plugins/sudoers/sudoreplay.c:344 +#: plugins/sudoers/sudoreplay.c:344 toke.l:982 toke.l:985 #, c-format msgid "%s/%s: %s" msgstr "%s/%s : %s" @@ -1142,69 +1160,69 @@ msgid "error writing CommandSuspend" msgstr "erreur de l'écriture de CommandSuspend" -#: logsrvd/logsrvd_relay.c:435 +#: logsrvd/logsrvd_relay.c:437 msgid "TLS handshake with relay host failed" msgstr "la négociation TLS avec l'hôte relai a échouée" -#: logsrvd/logsrvd_relay.c:463 +#: logsrvd/logsrvd_relay.c:465 msgid "unable to connect to relay host" msgstr "impossible de se connecter à l'hôte relai" -#: logsrvd/logsrvd_relay.c:518 +#: logsrvd/logsrvd_relay.c:520 #, c-format msgid "%s: invalid ServerHello, missing server_id" msgstr "%s : ServerHello invalide, le server_id manque" -#: logsrvd/logsrvd_relay.c:520 logsrvd/sendlog.c:1096 -#: plugins/sudoers/log_client.c:1468 +#: logsrvd/logsrvd_relay.c:522 logsrvd/sendlog.c:1105 +#: plugins/sudoers/log_client.c:1476 msgid "invalid ServerHello" msgstr "ServerHello invalide" -#: logsrvd/logsrvd_relay.c:679 +#: logsrvd/logsrvd_relay.c:681 msgid "unrecognized ServerMessage type" msgstr "type de ServerMessage non reconnu" -#: logsrvd/logsrvd_relay.c:708 +#: logsrvd/logsrvd_relay.c:710 #, 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:710 +#: logsrvd/logsrvd_relay.c:712 msgid "timeout reading from relay" msgstr "délai d'attente expiré durant la lecture depuis le relai" -#: logsrvd/logsrvd_relay.c:762 +#: logsrvd/logsrvd_relay.c:764 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:768 logsrvd/logsrvd_relay.c:782 -#: logsrvd/logsrvd_relay.c:789 +#: logsrvd/logsrvd_relay.c:770 logsrvd/logsrvd_relay.c:784 +#: logsrvd/logsrvd_relay.c:791 msgid "error reading from relay" msgstr "erreur de lecture depuis le relai" -#: logsrvd/logsrvd_relay.c:810 +#: logsrvd/logsrvd_relay.c:812 msgid "unable to read from relay" msgstr "impossible de lire depuis le relai" -#: logsrvd/logsrvd_relay.c:825 logsrvd/logsrvd_relay.c:943 +#: logsrvd/logsrvd_relay.c:827 logsrvd/logsrvd_relay.c:945 msgid "relay server closed connection" msgstr "le serveur relai a fermé la connexion" -#: logsrvd/logsrvd_relay.c:843 +#: logsrvd/logsrvd_relay.c:845 msgid "server message too large" msgstr "message serveur trop grand" -#: logsrvd/logsrvd_relay.c:907 +#: logsrvd/logsrvd_relay.c:909 #, 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:909 +#: logsrvd/logsrvd_relay.c:911 msgid "timeout writing to relay" msgstr "délai d'attente expiré durant l'écriture vers le relai" -#: logsrvd/logsrvd_relay.c:962 logsrvd/logsrvd_relay.c:969 -#: logsrvd/logsrvd_relay.c:981 +#: logsrvd/logsrvd_relay.c:964 logsrvd/logsrvd_relay.c:971 +#: logsrvd/logsrvd_relay.c:983 msgid "error writing to relay" msgstr "erreur d'écriture dans le relai" @@ -1269,79 +1287,79 @@ msgid "unable to get server IP addr" msgstr "impossible d'obtenir l'adresse IP du serveur" -#: logsrvd/sendlog.c:300 plugins/sudoers/sudoreplay.c:868 +#: logsrvd/sendlog.c:309 plugins/sudoers/sudoreplay.c:868 #, c-format msgid "unable to read %s/%s: %s" msgstr "impossible de lire %s/%s : %s" -#: logsrvd/sendlog.c:1020 plugins/sudoers/iolog.c:949 -#: plugins/sudoers/iolog.c:1024 +#: logsrvd/sendlog.c:1029 plugins/sudoers/iolog.c:948 +#: plugins/sudoers/iolog.c:1023 #, c-format msgid "unexpected I/O event %d" msgstr "événement d'E/S %d inattendu" -#: logsrvd/sendlog.c:1073 logsrvd/sendlog.c:1090 logsrvd/sendlog.c:1124 -#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1394 -#: plugins/sudoers/log_client.c:1462 plugins/sudoers/log_client.c:1501 +#: logsrvd/sendlog.c:1082 logsrvd/sendlog.c:1099 logsrvd/sendlog.c:1133 +#: plugins/sudoers/log_client.c:1126 plugins/sudoers/log_client.c:1402 +#: plugins/sudoers/log_client.c:1470 plugins/sudoers/log_client.c:1509 #, c-format msgid "%s: unexpected state %d" msgstr "%s: état %d inattendu" -#: logsrvd/sendlog.c:1160 plugins/sudoers/log_client.c:1550 +#: logsrvd/sendlog.c:1169 plugins/sudoers/log_client.c:1558 #, c-format msgid "error message received from server: %s" msgstr "message d'erreur reçu du serveur : %s" -#: logsrvd/sendlog.c:1173 plugins/sudoers/log_client.c:1563 +#: logsrvd/sendlog.c:1182 plugins/sudoers/log_client.c:1571 #, c-format msgid "abort message received from server: %s" msgstr "message d'interruption reçu du serveur : %s" -#: logsrvd/sendlog.c:1232 plugins/sudoers/log_client.c:1613 +#: logsrvd/sendlog.c:1241 plugins/sudoers/log_client.c:1621 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: valeur type_case %d inattendue" -#: logsrvd/sendlog.c:1261 +#: logsrvd/sendlog.c:1270 msgid "timeout reading from server" msgstr "délai d'attente expiré durant la lecture depuis le serveur" -#: logsrvd/sendlog.c:1310 plugins/sudoers/log_client.c:1729 +#: logsrvd/sendlog.c:1319 plugins/sudoers/log_client.c:1743 msgid "host name does not match certificate" msgstr "le nom de l'hôte ne correspond pas au certificat" -#: logsrvd/sendlog.c:1343 +#: logsrvd/sendlog.c:1352 msgid "premature EOF" msgstr "fin de fichier prématurée" -#: logsrvd/sendlog.c:1356 plugins/sudoers/log_client.c:1776 +#: logsrvd/sendlog.c:1365 plugins/sudoers/log_client.c:1790 #, c-format msgid "server message too large: %u" msgstr "message serveur trop grand : %u" -#: logsrvd/sendlog.c:1412 +#: logsrvd/sendlog.c:1421 msgid "timeout writing to server" msgstr "délai d'attente expiré durant l'écriture vers le serveur" -#: logsrvd/sendlog.c:1779 +#: logsrvd/sendlog.c:1788 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:1783 +#: logsrvd/sendlog.c:1792 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:1859 +#: logsrvd/sendlog.c:1868 #, c-format msgid "exited prematurely with state %d" msgstr "terminé prématurément avec l'état %d" -#: logsrvd/sendlog.c:1860 +#: logsrvd/sendlog.c:1869 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "temps écoulé envoyé au serveur [%lld, %ld]" -#: logsrvd/sendlog.c:1862 +#: logsrvd/sendlog.c:1871 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "point d'enregistrement reçu du serveur [%lld, %ld]" @@ -1399,12 +1417,12 @@ 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" -#: plugins/sudoers/audit.c:269 plugins/sudoers/audit.c:429 -#: plugins/sudoers/log_client.c:951 plugins/sudoers/log_client.c:1000 -#: plugins/sudoers/log_client.c:1049 plugins/sudoers/log_client.c:1174 -#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:693 -#: plugins/sudoers/logging.c:796 plugins/sudoers/logging.c:987 -#: plugins/sudoers/policy.c:125 +#: plugins/sudoers/audit.c:268 plugins/sudoers/audit.c:428 +#: plugins/sudoers/log_client.c:959 plugins/sudoers/log_client.c:1008 +#: plugins/sudoers/log_client.c:1057 plugins/sudoers/log_client.c:1182 +#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:711 +#: plugins/sudoers/logging.c:833 plugins/sudoers/logging.c:1000 +#: plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "récupération de l'heure du jour impossible" @@ -1413,28 +1431,28 @@ msgid "unable to change password for %s" msgstr "changement du mot de passe impossible pour %s" -#: plugins/sudoers/auth/bsdauth.c:74 +#: plugins/sudoers/auth/bsdauth.c:77 #, c-format msgid "unable to get login class for user %s" msgstr "récupération de la classe de connexion impossible pour l'utilisateur %s" -#: plugins/sudoers/auth/bsdauth.c:79 -msgid "unable to begin bsd authentication" -msgstr "démarrage de l'authentification bsd impossible" - -#: plugins/sudoers/auth/bsdauth.c:87 +#: plugins/sudoers/auth/bsdauth.c:84 msgid "invalid authentication type" msgstr "type d'authentification non valide" +#: plugins/sudoers/auth/bsdauth.c:89 +msgid "unable to begin BSD authentication" +msgstr "impossible de commencer l'authentification BSD" + #: plugins/sudoers/auth/bsdauth.c:96 msgid "unable to initialize BSD authentication" msgstr "démarrage de l'authentification BSD impossible" -#: plugins/sudoers/auth/bsdauth.c:186 +#: plugins/sudoers/auth/bsdauth.c:188 msgid "your account has expired" msgstr "votre compte est expiré" -#: plugins/sudoers/auth/bsdauth.c:188 +#: plugins/sudoers/auth/bsdauth.c:190 msgid "approval failed" msgstr "échec de l'approbation" @@ -1653,13 +1671,12 @@ "\n" #: plugins/sudoers/check.c:353 plugins/sudoers/check.c:363 -#: plugins/sudoers/parse.c:82 plugins/sudoers/sudoers.c:945 -#: plugins/sudoers/sudoers.c:966 plugins/sudoers/tsdump.c:119 +#: plugins/sudoers/parse.c:80 plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid %u" msgstr "identifiant utilisateur %u inconnu" -#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1279 +#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1278 #, c-format msgid "%s: %s\n" msgstr "%s : %s\n" @@ -1674,84 +1691,84 @@ msgid "%s \"%s\" referenced but not defined" msgstr "il est fait mention de %s « %s » alors qu'il n'a pas été défini" -#: plugins/sudoers/cvtsudoers.c:209 +#: plugins/sudoers/cvtsudoers.c:210 #, c-format msgid "order increment: %s: %s" msgstr "incrément d'ordre : %s : %s" -#: plugins/sudoers/cvtsudoers.c:228 +#: plugins/sudoers/cvtsudoers.c:229 #, c-format msgid "starting order: %s: %s" msgstr "ordre de départ : %s : %s" -#: plugins/sudoers/cvtsudoers.c:238 +#: plugins/sudoers/cvtsudoers.c:239 #, c-format msgid "order padding: %s: %s" msgstr "remplissage de l'ordre : %s : %s" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/visudo.c:184 +#: plugins/sudoers/cvtsudoers.c:249 plugins/sudoers/visudo.c:188 #, c-format msgid "%s grammar version %d\n" msgstr "Version de la grammaire de %s : %d\n" -#: plugins/sudoers/cvtsudoers.c:277 plugins/sudoers/testsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:278 plugins/sudoers/testsudoers.c:163 #, c-format msgid "unsupported input format %s" msgstr "format d'entrée %s non supporté" -#: plugins/sudoers/cvtsudoers.c:295 +#: plugins/sudoers/cvtsudoers.c:296 #, c-format msgid "unsupported output format %s" msgstr "format de sortie %s non supporté" -#: plugins/sudoers/cvtsudoers.c:385 +#: plugins/sudoers/cvtsudoers.c:386 #, c-format 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:399 plugins/sudoers/sudoers.c:166 -#: plugins/sudoers/sudoers.c:222 plugins/sudoers/testsudoers.c:254 -#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:654 +#: plugins/sudoers/cvtsudoers.c:400 plugins/sudoers/sudoers.c:163 +#: plugins/sudoers/sudoers.c:221 plugins/sudoers/testsudoers.c:263 +#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:657 msgid "unable to initialize sudoers default values" msgstr "initialisation des valeurs par défaut de sudoers impossible" -#: plugins/sudoers/cvtsudoers.c:525 plugins/sudoers/ldap_conf.c:434 +#: plugins/sudoers/cvtsudoers.c:526 plugins/sudoers/ldap_conf.c:431 #, c-format msgid "%s: %s: %s: %s" msgstr "%s : %s : %s : %s" -#: plugins/sudoers/cvtsudoers.c:584 +#: plugins/sudoers/cvtsudoers.c:605 #, c-format msgid "%s: unknown key word %s" msgstr "%s: mot clé %s inconnu" -#: plugins/sudoers/cvtsudoers.c:630 +#: plugins/sudoers/cvtsudoers.c:651 #, c-format msgid "invalid defaults type: %s" msgstr "type par défaut invalide : %s" -#: plugins/sudoers/cvtsudoers.c:653 +#: plugins/sudoers/cvtsudoers.c:674 #, c-format msgid "invalid suppression type: %s" msgstr "type de suppression invalide : %s" -#: plugins/sudoers/cvtsudoers.c:694 plugins/sudoers/cvtsudoers.c:710 +#: plugins/sudoers/cvtsudoers.c:715 plugins/sudoers/cvtsudoers.c:731 #, c-format msgid "invalid filter: %s" msgstr "filtre invalide : %s" -#: plugins/sudoers/cvtsudoers.c:754 plugins/sudoers/visudo.c:982 +#: plugins/sudoers/cvtsudoers.c:775 plugins/sudoers/visudo.c:992 #, c-format msgid "failed to parse %s file, unknown error" msgstr "échec lors de l'analyse grammaticale de %s, erreur inconnue" -#: plugins/sudoers/cvtsudoers.c:1478 plugins/sudoers/sudoreplay.c:1142 -#: plugins/sudoers/timestamp.c:343 plugins/sudoers/timestamp.c:346 +#: plugins/sudoers/cvtsudoers.c:1499 plugins/sudoers/sudoreplay.c:1142 +#: plugins/sudoers/timestamp.c:368 plugins/sudoers/timestamp.c:371 #, c-format msgid "unable to write to %s" msgstr "écriture impossible dans %s" -#: plugins/sudoers/cvtsudoers.c:1506 +#: plugins/sudoers/cvtsudoers.c:1527 #, c-format msgid "" "%s - convert between sudoers file formats\n" @@ -1760,7 +1777,7 @@ "%s - convertir entre des formats de fichiers sudoers\n" "\n" -#: plugins/sudoers/cvtsudoers.c:1508 +#: plugins/sudoers/cvtsudoers.c:1529 msgid "" "\n" "Options:\n" @@ -1806,37 +1823,36 @@ #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 #: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:340 #: plugins/sudoers/env.c:347 plugins/sudoers/env.c:458 -#: plugins/sudoers/ldap.c:528 plugins/sudoers/ldap.c:761 -#: plugins/sudoers/ldap.c:1134 plugins/sudoers/ldap_conf.c:222 -#: plugins/sudoers/ldap_conf.c:313 plugins/sudoers/ldap_util.c:486 +#: plugins/sudoers/ldap.c:509 plugins/sudoers/ldap.c:626 +#: plugins/sudoers/ldap.c:999 plugins/sudoers/ldap_conf.c:219 +#: plugins/sudoers/ldap_conf.c:310 plugins/sudoers/ldap_util.c:486 #: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:461 -#: plugins/sudoers/logging.c:817 plugins/sudoers/logging.c:827 -#: plugins/sudoers/policy.c:807 plugins/sudoers/policy.c:818 +#: plugins/sudoers/policy.c:824 plugins/sudoers/policy.c:835 #: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 #: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/sudoreplay.c:1339 plugins/sudoers/sudoreplay.c:1345 -#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/toke_util.c:213 toke.l:995 toke.l:1197 +#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/toke_util.c:213 toke.l:996 toke.l:1259 #, c-format msgid "internal error, %s overflow" msgstr "erreur interne, dépassement de %s" -#: plugins/sudoers/cvtsudoers_csv.c:452 plugins/sudoers/cvtsudoers_csv.c:466 -#: plugins/sudoers/cvtsudoers_json.c:657 plugins/sudoers/cvtsudoers_json.c:672 +#: plugins/sudoers/cvtsudoers_csv.c:454 plugins/sudoers/cvtsudoers_csv.c:468 +#: plugins/sudoers/cvtsudoers_json.c:661 plugins/sudoers/cvtsudoers_json.c:676 #: plugins/sudoers/cvtsudoers_ldif.c:347 plugins/sudoers/cvtsudoers_ldif.c:360 -#: plugins/sudoers/ldap.c:512 +#: plugins/sudoers/ldap.c:493 msgid "unable to get GMT time" msgstr "récupération de l'heure GMT impossible" -#: plugins/sudoers/cvtsudoers_csv.c:457 plugins/sudoers/cvtsudoers_csv.c:471 -#: plugins/sudoers/cvtsudoers_json.c:662 plugins/sudoers/cvtsudoers_json.c:677 +#: plugins/sudoers/cvtsudoers_csv.c:459 plugins/sudoers/cvtsudoers_csv.c:473 +#: plugins/sudoers/cvtsudoers_json.c:666 plugins/sudoers/cvtsudoers_json.c:681 #: plugins/sudoers/cvtsudoers_ldif.c:352 plugins/sudoers/cvtsudoers_ldif.c:365 -#: plugins/sudoers/ldap.c:520 +#: plugins/sudoers/ldap.c:501 msgid "unable to format timestamp" msgstr "impossible de formater l'horodatage" -#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:515 -#: plugins/sudoers/cvtsudoers_json.c:728 +#: plugins/sudoers/cvtsudoers_json.c:481 plugins/sudoers/cvtsudoers_json.c:516 +#: plugins/sudoers/cvtsudoers_json.c:732 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" msgstr "%s:%d:%d: entrées par défaut inconnues « %s »" @@ -2645,18 +2661,18 @@ msgid "value \"%s\" is invalid for option \"%s\"" msgstr "la valeur « %s » ne convient pas pour l'option « %s »" -#: plugins/sudoers/defaults.c:1128 plugins/sudoers/policy.c:210 -#: plugins/sudoers/policy.c:219 +#: plugins/sudoers/defaults.c:1127 plugins/sudoers/policy.c:205 +#: plugins/sudoers/policy.c:214 #, c-format msgid "path name for \"%s\" too long" msgstr "chemin trop long pour « %s »" -#: plugins/sudoers/defaults.c:1134 +#: plugins/sudoers/defaults.c:1133 #, c-format msgid "values for \"%s\" must start with a '/', '~', or '*'" msgstr "les valeurs de « %s » doivent commencer par « / », « ~ » ou « * »" -#: plugins/sudoers/defaults.c:1141 +#: plugins/sudoers/defaults.c:1140 #, c-format msgid "values for \"%s\" must start with a '/'" msgstr "les valeurs de « %s » doivent commencer par « / »" @@ -2683,12 +2699,12 @@ 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/filedigest.c:49 +#: plugins/sudoers/filedigest.c:50 #, c-format -msgid "unsupported digest type %d for %s" -msgstr "le type résumé (digest type) %d pour n'est pas autorisé pour %s" +msgid "unsupported digest type %u for %s" +msgstr "le type résumé (digest type) %u pour n'est pas autorisé pour %s" -#: plugins/sudoers/filedigest.c:78 +#: plugins/sudoers/filedigest.c:79 #, c-format msgid "%s: read error" msgstr "%s : erreur en lecture" @@ -2722,80 +2738,80 @@ msgid "Local IP address and netmask pairs:\n" msgstr "Couples adresse IP locale/masque de sous-réseau :\n" -#: plugins/sudoers/iolog.c:685 +#: plugins/sudoers/iolog.c:684 msgid "unable to update sequence file" msgstr "mise à jour du fichier de séquence impossible" -#: plugins/sudoers/iolog.c:719 plugins/sudoers/iolog.c:907 -#: plugins/sudoers/iolog.c:1069 plugins/sudoers/iolog.c:1076 -#: plugins/sudoers/iolog.c:1197 plugins/sudoers/iolog.c:1204 -#: plugins/sudoers/iolog.c:1303 plugins/sudoers/iolog.c:1310 +#: plugins/sudoers/iolog.c:718 plugins/sudoers/iolog.c:906 +#: plugins/sudoers/iolog.c:1068 plugins/sudoers/iolog.c:1075 +#: plugins/sudoers/iolog.c:1196 plugins/sudoers/iolog.c:1203 +#: plugins/sudoers/iolog.c:1302 plugins/sudoers/iolog.c:1309 #, 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:727 +#: plugins/sudoers/iolog.c:726 #, c-format msgid "unable to create %s/%s" msgstr "impossible de créer %s/%s" -#: plugins/sudoers/iolog.c:955 +#: plugins/sudoers/iolog.c:954 #, 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:1054 plugins/sudoers/iolog.c:1182 -#: plugins/sudoers/iolog.c:1287 plugins/sudoers/timestamp.c:879 -#: plugins/sudoers/timestamp.c:971 plugins/sudoers/visudo.c:556 -#: plugins/sudoers/visudo.c:562 +#: plugins/sudoers/iolog.c:1053 plugins/sudoers/iolog.c:1181 +#: plugins/sudoers/iolog.c:1286 plugins/sudoers/timestamp.c:904 +#: plugins/sudoers/timestamp.c:996 plugins/sudoers/visudo.c:559 +#: plugins/sudoers/visudo.c:565 msgid "unable to read the clock" msgstr "lecture de l'horloge impossible" -#: plugins/sudoers/iolog.c:1279 plugins/sudoers/log_client.c:1192 -#: plugins/sudoers/log_client.c:1202 plugins/sudoers/log_client.c:1206 +#: plugins/sudoers/iolog.c:1278 plugins/sudoers/log_client.c:1200 +#: plugins/sudoers/log_client.c:1210 plugins/sudoers/log_client.c:1214 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: erreur interne, signal %d invalide" -#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:292 +#: plugins/sudoers/ldap.c:154 plugins/sudoers/ldap_conf.c:289 msgid "starttls not supported when using ldaps" msgstr "starttls n'est pas pris en charge lors de l'utilisation de ldap" -#: plugins/sudoers/ldap.c:248 +#: plugins/sudoers/ldap.c:225 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "impossible d'initialiser le certificat SSL et la base de clés : %s" -#: plugins/sudoers/ldap.c:251 +#: plugins/sudoers/ldap.c:228 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "TLS_CERT doit être défini dans %s pour pouvoir utiliser SSL" -#: plugins/sudoers/ldap.c:1714 +#: plugins/sudoers/ldap.c:1587 #, c-format msgid "unable to initialize LDAP: %s" msgstr "initialisation de LDAP impossible : %s" -#: plugins/sudoers/ldap.c:1751 +#: plugins/sudoers/ldap.c:1624 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "start_tls est spécifié mais les bibliothèques LDAP ne gèrent pas ldap_start_tls_s() ou ldap_start_tls_s_np()" -#: plugins/sudoers/ldap.c:1888 plugins/sudoers/parse_ldif.c:748 +#: plugins/sudoers/ldap.c:1761 plugins/sudoers/parse_ldif.c:748 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "attribut sudoOrder invalide : %s" -#: plugins/sudoers/ldap_conf.c:200 +#: plugins/sudoers/ldap_conf.c:197 #, c-format msgid "%s: port too large" msgstr "%s: port trop grand" -#: plugins/sudoers/ldap_conf.c:261 +#: plugins/sudoers/ldap_conf.c:258 #, c-format msgid "unsupported LDAP uri type: %s" msgstr "type d'uri LDAP non pris en charge : %s" -#: plugins/sudoers/ldap_conf.c:288 +#: plugins/sudoers/ldap_conf.c:285 msgid "unable to mix ldap and ldaps URIs" msgstr "fusion des URIs ldap et ldaps impossible" @@ -2821,7 +2837,7 @@ msgstr "envoi du message d'audit impossible" #: plugins/sudoers/log_client.c:125 plugins/sudoers/log_client.c:412 -#: plugins/sudoers/log_client.c:1439 plugins/sudoers/log_client.c:2055 +#: plugins/sudoers/log_client.c:1447 plugins/sudoers/log_client.c:2069 msgid "error in event loop" msgstr "erreur dans la boucle des événements" @@ -2855,28 +2871,28 @@ msgid "TLS connection to %s:%s failed: %s" msgstr "la connexion TLS à %s:%s a échoué : %s" -#: plugins/sudoers/log_client.c:543 +#: plugins/sudoers/log_client.c:545 msgid "TLS initialization was unsuccessful" msgstr "l'initialisation TLS n'a pas réussi" -#: plugins/sudoers/log_client.c:553 +#: plugins/sudoers/log_client.c:555 msgid "TLS handshake was unsuccessful" msgstr "la négociation TLS n'a pas réussi" -#: plugins/sudoers/log_client.c:1210 +#: plugins/sudoers/log_client.c:1218 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: erreur interne, statut de sortie %d invalide" -#: plugins/sudoers/log_client.c:1739 plugins/sudoers/log_client.c:1763 +#: plugins/sudoers/log_client.c:1753 plugins/sudoers/log_client.c:1777 msgid "lost connection to log server" msgstr "perte de la connexion au serveur de journalisation" -#: plugins/sudoers/log_client.c:1840 +#: plugins/sudoers/log_client.c:1854 msgid "missing write buffer" msgstr "tampon d'écriture manquant" -#: plugins/sudoers/log_client.c:1994 +#: plugins/sudoers/log_client.c:2008 msgid "unable to connect to log server" msgstr "impossible de se connecter au serveur de journal" @@ -2909,22 +2925,22 @@ #: plugins/sudoers/logging.c:324 #, 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" +msgid "Sorry, user %s is not allowed to execute '%s%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%s » en tant que %s%s%s sur %s.\n" #: plugins/sudoers/logging.c:334 msgid "This incident has been reported to the administrator.\n" msgstr "Cet incident a été signalé à l'administrateur.\n" -#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:657 plugins/sudoers/sudoers.c:659 -#: plugins/sudoers/sudoers.c:661 plugins/sudoers/sudoers.c:816 -#: plugins/sudoers/sudoers.c:818 +#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:566 +#: plugins/sudoers/sudoers.c:567 plugins/sudoers/sudoers.c:569 +#: plugins/sudoers/sudoers.c:570 plugins/sudoers/sudoers.c:791 +#: plugins/sudoers/sudoers.c:793 #, c-format msgid "%s: command not found" msgstr "%s : commande introuvable" -#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:651 +#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:562 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2948,31 +2964,31 @@ msgid "a password is required" msgstr "il est nécessaire de saisir un mot de passe" -#: plugins/sudoers/logging.c:803 plugins/sudoers/logging.c:815 +#: plugins/sudoers/logging.c:855 msgid "problem parsing sudoers" msgstr "problème lors de l'analyse syntaxique de sudoers" -#: plugins/sudoers/logging.c:877 plugins/sudoers/logging.c:889 +#: plugins/sudoers/logging.c:896 plugins/sudoers/logging.c:904 #, c-format msgid "%s:%d:%d: %s" msgstr "%s:%d:%d: %s" -#: plugins/sudoers/logging.c:1066 +#: plugins/sudoers/logging.c:1079 #, c-format msgid "unable to write log file: %s" msgstr "impossible d'écrire le fichier journal : %s" -#: plugins/sudoers/match_digest.c:112 +#: plugins/sudoers/match_digest.c:101 #, c-format msgid "digest for %s (%s) bad length %zu, expected %zu" msgstr "le résumé (digest) de %s (%s) a la mauvaise longueur %zu, %zu attendue" -#: plugins/sudoers/match_digest.c:131 +#: plugins/sudoers/match_digest.c:120 #, c-format 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:631 +#: plugins/sudoers/parse.c:643 #, c-format msgid "" "\n" @@ -2981,7 +2997,7 @@ "\n" "Rôle LDAP : %s\n" -#: plugins/sudoers/parse.c:634 +#: plugins/sudoers/parse.c:646 msgid "" "\n" "Sudoers entry:\n" @@ -2989,38 +3005,38 @@ "\n" "Entrée sudoers :\n" -#: plugins/sudoers/parse.c:636 +#: plugins/sudoers/parse.c:648 msgid " RunAsUsers: " msgstr " RunAsUsers : " -#: plugins/sudoers/parse.c:651 +#: plugins/sudoers/parse.c:663 msgid " RunAsGroups: " msgstr " RunAsGroups : " -#: plugins/sudoers/parse.c:661 +#: plugins/sudoers/parse.c:673 msgid " Options: " msgstr " Options : " -#: plugins/sudoers/parse.c:725 +#: plugins/sudoers/parse.c:737 msgid " Commands:\n" msgstr " Commandes :\n" -#: plugins/sudoers/parse.c:916 +#: plugins/sudoers/parse.c:928 #, 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:934 +#: plugins/sudoers/parse.c:946 #, 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:952 +#: plugins/sudoers/parse.c:964 #, 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:967 +#: plugins/sudoers/parse.c:979 #, 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" @@ -3035,64 +3051,72 @@ msgid "invalid LDIF attribute: %s" msgstr "attribut LDIF invalide : %s" -#: plugins/sudoers/policy.c:82 plugins/sudoers/policy.c:113 +#: plugins/sudoers/pivot.c:74 +msgid "unable to restore root directory" +msgstr "restauration du répertoire racine impossible" + +#: plugins/sudoers/pivot.c:82 +msgid "unable to restore current working directory" +msgstr "restauration du répertoire de travail impossible" + +#: 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:360 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:356 plugins/sudoers/testsudoers.c:277 msgid "unable to parse network address list" msgstr "impossible d'analyser la liste des adresses réseau" -#: plugins/sudoers/policy.c:528 +#: plugins/sudoers/policy.c:524 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:532 +#: plugins/sudoers/policy.c:528 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:536 +#: plugins/sudoers/policy.c:532 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:540 +#: plugins/sudoers/policy.c:536 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:737 +#: plugins/sudoers/policy.c:754 #, c-format msgid "invalid working directory: %s" msgstr "répertoire de travail invalide : %s" -#: plugins/sudoers/policy.c:921 +#: plugins/sudoers/policy.c:938 #, c-format msgid "invalid chroot directory: %s" msgstr "répertoire chroot invalide : %s" -#: plugins/sudoers/policy.c:1108 plugins/sudoers/visudo.c:259 -#: plugins/sudoers/visudo.c:906 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/visudo.c:910 +#: plugins/sudoers/visudo.c:1209 #, c-format msgid "unable to execute %s" msgstr "exécution de %s impossible" -#: plugins/sudoers/policy.c:1178 plugins/sudoers/policy.c:1215 -#: plugins/sudoers/policy.c:1237 plugins/sudoers/policy.c:1263 +#: plugins/sudoers/policy.c:1195 plugins/sudoers/policy.c:1230 +#: plugins/sudoers/policy.c:1252 plugins/sudoers/policy.c:1274 #, 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:1299 +#: plugins/sudoers/policy.c:1294 #, 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:1301 +#: plugins/sudoers/policy.c:1296 #, 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:1305 +#: plugins/sudoers/policy.c:1300 #, c-format msgid "" "\n" @@ -3101,27 +3125,27 @@ "\n" "Chemin d'accès à sudoers : %s\n" -#: plugins/sudoers/policy.c:1308 +#: plugins/sudoers/policy.c:1303 #, c-format msgid "nsswitch path: %s\n" msgstr "chemin d'accès à nsswitch : %s\n" -#: plugins/sudoers/policy.c:1310 +#: plugins/sudoers/policy.c:1305 #, c-format msgid "ldap.conf path: %s\n" msgstr "chemin d'accès à ldap.conf : %s\n" -#: plugins/sudoers/policy.c:1311 +#: plugins/sudoers/policy.c:1306 #, c-format msgid "ldap.secret path: %s\n" msgstr "chemin d'accès à ldap.secret : %s\n" -#: plugins/sudoers/policy.c:1344 +#: plugins/sudoers/policy.c:1339 #, 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:1362 +#: plugins/sudoers/policy.c:1357 #, 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" @@ -3190,48 +3214,48 @@ 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:445 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 -#: plugins/sudoers/set_perms.c:1460 +#: plugins/sudoers/set_perms.c:115 plugins/sudoers/set_perms.c:451 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1178 +#: plugins/sudoers/set_perms.c:1481 msgid "perm stack overflow" msgstr "débordement de la pile perm" -#: 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 +#: plugins/sudoers/set_perms.c:126 plugins/sudoers/set_perms.c:382 +#: plugins/sudoers/set_perms.c:462 plugins/sudoers/set_perms.c:730 +#: plugins/sudoers/set_perms.c:874 plugins/sudoers/set_perms.c:1102 +#: plugins/sudoers/set_perms.c:1189 plugins/sudoers/set_perms.c:1414 +#: plugins/sudoers/set_perms.c:1492 plugins/sudoers/set_perms.c:1583 msgid "perm stack underflow" msgstr "débordement inférieur de la pile perm" -#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 -#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 +#: plugins/sudoers/set_perms.c:186 plugins/sudoers/set_perms.c:509 +#: plugins/sudoers/set_perms.c:1243 plugins/sudoers/set_perms.c:1526 msgid "unable to change to root gid" msgstr "changement de l'identificateur de groupe (gid) de root impossible" -#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 -#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 +#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:606 +#: plugins/sudoers/set_perms.c:1006 plugins/sudoers/set_perms.c:1320 msgid "unable to change to runas gid" msgstr "changement du groupe effectif (runas) impossible" -#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 -#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 +#: plugins/sudoers/set_perms.c:282 plugins/sudoers/set_perms.c:611 +#: plugins/sudoers/set_perms.c:1011 plugins/sudoers/set_perms.c:1325 msgid "unable to set runas group vector" msgstr "définition du vecteur du groupe effectif (runas) impossible" -#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 -#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:293 plugins/sudoers/set_perms.c:622 +#: plugins/sudoers/set_perms.c:1020 plugins/sudoers/set_perms.c:1334 msgid "unable to change to runas uid" msgstr "changement de l'uid effectif (runas) impossible" -#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 -#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 +#: plugins/sudoers/set_perms.c:315 plugins/sudoers/set_perms.c:644 +#: plugins/sudoers/set_perms.c:1040 plugins/sudoers/set_perms.c:1354 msgid "unable to change to sudoers gid" msgstr "changement du groupe (gid) de sudoers impossible" -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 msgid "too many processes" msgstr "trop de processus" @@ -3260,150 +3284,150 @@ msgid "unable to find symbol \"%s\" in %s" msgstr "Le symbole « %s » est introuvable dans %s" -#: plugins/sudoers/sudoers.c:263 +#: plugins/sudoers/sudoers.c:261 #, c-format msgid "unable to get defaults from %s" msgstr "impossible d'obtenir les valeurs par défaut pour %s" -#: plugins/sudoers/sudoers.c:270 +#: plugins/sudoers/sudoers.c:268 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:346 +#: plugins/sudoers/sudoers.c:344 #, 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:348 +#: plugins/sudoers/sudoers.c:346 #, 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:373 +#: plugins/sudoers/sudoers.c:371 #, 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:374 +#: plugins/sudoers/sudoers.c:372 #, 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:401 -msgid "no command specified" -msgstr "aucune commande spécifiée" - -#: plugins/sudoers/sudoers.c:426 +#: plugins/sudoers/sudoers.c:412 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:483 +#: plugins/sudoers/sudoers.c:421 msgid "user not allowed to override closefrom limit" msgstr "l'utilisateur n'est pas autorisé à outrepasser la limite closeform" -#: plugins/sudoers/sudoers.c:484 +#: plugins/sudoers/sudoers.c:422 msgid "you are not permitted to use the -C option" msgstr "vous n'êtes pas autorisé à utiliser l'option -C" -#: plugins/sudoers/sudoers.c:544 -#, c-format -msgid "timestamp owner (%s): No such user" -msgstr "propriétaire du fichier d'horodatage (%s) : utilisateur inconnu" - -#: plugins/sudoers/sudoers.c:559 +#: plugins/sudoers/sudoers.c:468 msgid "no tty" msgstr "pas de terminal tty" -#: plugins/sudoers/sudoers.c:560 +#: plugins/sudoers/sudoers.c:469 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:567 +#: plugins/sudoers/sudoers.c:477 #, c-format msgid "invalid shell for user %s: %s" msgstr "interpréteur de commande invalide pour l'utilisateur %s : %s" -#: plugins/sudoers/sudoers.c:650 +#: plugins/sudoers/sudoers.c:561 msgid "command in current directory" msgstr "commande dans le répertoire courant" -#: plugins/sudoers/sudoers.c:665 +#: plugins/sudoers/sudoers.c:574 msgid "\"cd\" is a shell built-in command, it cannot be run directly." msgstr "« cd » est une commande interne du shell, elle ne peut pas être exécutée directement." -#: plugins/sudoers/sudoers.c:667 +#: plugins/sudoers/sudoers.c:576 msgid "the -s option may be used to run a privileged shell." msgstr "l'option -s peut être utilisée pour exécuter un shell privilégié." -#: plugins/sudoers/sudoers.c:669 +#: plugins/sudoers/sudoers.c:578 msgid "the -D option may be used to run a command in a specific directory." msgstr "l'option -D peut être utilisée pour exécuter une commande dans un répertoire spécifique." -#: plugins/sudoers/sudoers.c:678 +#: plugins/sudoers/sudoers.c:587 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:680 +#: plugins/sudoers/sudoers.c:589 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:688 +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to preserve the environment" msgstr "l'utilisateur n'est pas autorisé à conserver l'environnement" -#: plugins/sudoers/sudoers.c:690 +#: plugins/sudoers/sudoers.c:599 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:799 +#: plugins/sudoers/sudoers.c:635 +msgid "no command specified" +msgstr "aucune commande spécifiée" + +#: plugins/sudoers/sudoers.c:774 msgid "error setting user-specified environment variables" msgstr "erreur en définissant les variables d'environnement spécifiées par l'utilisateur" -#: plugins/sudoers/sudoers.c:1112 +#: plugins/sudoers/sudoers.c:1239 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:1157 plugins/sudoers/sudoreplay.c:1612 +#: plugins/sudoers/sudoers.c:1314 plugins/sudoers/sudoreplay.c:1612 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "lecture de %s impossible" -#: plugins/sudoers/sudoers.c:1186 plugins/sudoers/visudo.c:1066 +#: plugins/sudoers/sudoers.c:1337 plugins/sudoers/visudo.c:1114 #, c-format msgid "%s is not a regular file" msgstr "%s n'est pas un fichier ordinaire" -#: plugins/sudoers/sudoers.c:1190 plugins/sudoers/timestamp.c:263 toke.l:1255 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/timestamp.c:288 toke.l:1325 #, 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:1194 plugins/sudoers/timestamp.c:270 toke.l:1260 +#: plugins/sudoers/sudoers.c:1345 plugins/sudoers/timestamp.c:295 toke.l:1330 #, c-format msgid "%s is world writable" msgstr "Le fichier %s est ouvert en écriture pour tous" -#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/timestamp.c:275 toke.l:1263 +#: plugins/sudoers/sudoers.c:1349 plugins/sudoers/timestamp.c:300 toke.l:1333 #, 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:1233 +#: plugins/sudoers/sudoers.c:1377 #, c-format msgid "only root can use \"-c %s\"" msgstr "« -c %s » est réservé à l'utilisateur root" -#: plugins/sudoers/sudoers.c:1252 +#: plugins/sudoers/sudoers.c:1396 #, c-format msgid "unknown login class %s" msgstr "classe de connexion %s inconnue" -#: plugins/sudoers/sudoers.c:1339 plugins/sudoers/sudoers.c:1354 +#: plugins/sudoers/sudoers.c:1483 plugins/sudoers/sudoers.c:1498 #, c-format msgid "unable to resolve host %s" msgstr "impossible de résoudre l'hôte %s" +#: plugins/sudoers/sudoers.c:1636 +#, c-format +msgid "%s:%d:%d timestampowner: unknown user %s" +msgstr "%s:%d:%d timestampowner : utilisateur %s inconnu" + #: plugins/sudoers/sudoreplay.c:252 #, c-format msgid "invalid filter option: %s" @@ -3545,11 +3569,11 @@ " -s, --speed=valeur accélère ou ralentit l'exécution\n" " -V, --version affiche la version du programme, puis termine l'exécution" -#: plugins/sudoers/testsudoers.c:344 +#: plugins/sudoers/testsudoers.c:355 msgid "\thost unmatched" msgstr "\tl'hôte n'a pas de correspondance" -#: plugins/sudoers/testsudoers.c:347 +#: plugins/sudoers/testsudoers.c:358 msgid "" "\n" "Command allowed" @@ -3557,7 +3581,7 @@ "\n" "Commande autorisée" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command denied" @@ -3565,7 +3589,7 @@ "\n" "Commande refusée" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command unmatched" @@ -3573,21 +3597,21 @@ "\n" "Commande sans correspondance" -#: plugins/sudoers/timestamp.c:354 plugins/sudoers/timestamp.c:693 +#: plugins/sudoers/timestamp.c:379 plugins/sudoers/timestamp.c:718 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "impossible de tronquer le fichier d'horodatage à %lld octets" -#: plugins/sudoers/timestamp.c:890 +#: plugins/sudoers/timestamp.c:915 msgid "ignoring time stamp from the future" msgstr "un horodatage dans le futur a été ignoré" -#: plugins/sudoers/timestamp.c:913 +#: plugins/sudoers/timestamp.c:938 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "l'horodatage est trop avancé dans le future : %20.20s" -#: plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1067 #, c-format msgid "unable to lock time stamp file %s" msgstr "verrouillage du fichier d'horodatage %s impossible" @@ -3596,99 +3620,91 @@ msgid "sudoedit should not be specified with a path" msgstr "sudoedit ne devrait pas être spécifié avec un chemin" -#: plugins/sudoers/visudo.c:254 -msgid "the -x option will be removed in a future release" -msgstr "l'option -x sera supprimée dans une version ultérieure" - -#: plugins/sudoers/visudo.c:256 -msgid "please consider using the cvtsudoers utility instead" -msgstr "envisagez plutôt l'utilisation de l'utilitaire cvtsudoers" - -#: plugins/sudoers/visudo.c:311 plugins/sudoers/visudo.c:702 +#: plugins/sudoers/visudo.c:314 plugins/sudoers/visudo.c:705 #, c-format msgid "press return to edit %s: " msgstr "appuyer sur entrée pour éditer %s : " -#: plugins/sudoers/visudo.c:326 +#: plugins/sudoers/visudo.c:329 #, c-format msgid "contents of edit session left in %s" msgstr "le contenu de la session d'édition a été laissé dans %s" -#: plugins/sudoers/visudo.c:403 +#: plugins/sudoers/visudo.c:406 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "l'éditeur indiqué (%s) n'existe pas" -#: plugins/sudoers/visudo.c:408 +#: plugins/sudoers/visudo.c:411 #, c-format msgid "no editor found (editor path = %s)" msgstr "aucun éditeur trouvé (chemin d'accès à l'éditeur : %s)" -#: plugins/sudoers/visudo.c:495 plugins/sudoers/visudo.c:774 +#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:777 #, c-format msgid "unable to stat %s" msgstr "impossible d'appliquer la fonction stat à %s" -#: plugins/sudoers/visudo.c:515 plugins/sudoers/visudo.c:523 +#: plugins/sudoers/visudo.c:518 plugins/sudoers/visudo.c:526 msgid "write error" msgstr "erreur en écriture" -#: plugins/sudoers/visudo.c:569 +#: plugins/sudoers/visudo.c:572 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "impossible d'appliquer la fonction stat au fichier temporaire (%s), %s n'a pas été modifié" -#: plugins/sudoers/visudo.c:576 +#: plugins/sudoers/visudo.c:579 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "fichier temporaire vide (%s), %s n'a pas été modifié" -#: plugins/sudoers/visudo.c:582 +#: plugins/sudoers/visudo.c:585 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "l'éditeur (%s) a échoué, %s n'a pas été modifié" -#: plugins/sudoers/visudo.c:604 +#: plugins/sudoers/visudo.c:607 #, c-format msgid "%s unchanged" msgstr "%s n'a pas été modifié" -#: plugins/sudoers/visudo.c:649 +#: plugins/sudoers/visudo.c:652 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "impossible de rouvrir le fichier temporaire (%s), %s n'a pas été modifié." -#: plugins/sudoers/visudo.c:662 +#: plugins/sudoers/visudo.c:665 #, c-format msgid "unable to parse temporary file (%s), unknown error" msgstr "impossible d'analyser le fichier temporaire (%s), erreur inconnue" -#: plugins/sudoers/visudo.c:748 plugins/sudoers/visudo.c:778 -#: plugins/sudoers/visudo.c:785 +#: plugins/sudoers/visudo.c:751 plugins/sudoers/visudo.c:781 +#: plugins/sudoers/visudo.c:788 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "impossible de définir (uid, gid) de %s à (%u, %u)" -#: plugins/sudoers/visudo.c:813 +#: plugins/sudoers/visudo.c:816 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "%s et %s ne sont pas dans le même système de fichiers, tentative de renommage à l'aide de la commande mv" -#: plugins/sudoers/visudo.c:824 +#: plugins/sudoers/visudo.c:827 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "la commande a échoué : « %s %s %s », %s n'a pas été modifié" -#: plugins/sudoers/visudo.c:831 +#: plugins/sudoers/visudo.c:834 #, c-format msgid "error renaming %s, %s unchanged" msgstr "erreur lors du renommage de %s, %s n'a pas été modifié" -#: plugins/sudoers/visudo.c:851 +#: plugins/sudoers/visudo.c:855 msgid "What now? " msgstr "Et maintenant ?" -#: plugins/sudoers/visudo.c:865 +#: plugins/sudoers/visudo.c:869 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -3700,41 +3716,49 @@ " e(x)it sans sauvegarde des modifications apportées au fichier sudoers\n" " (Q)uitter et sauvegarder les modifications apportées au fichier sudoers (DANGER!)\n" -#: plugins/sudoers/visudo.c:911 +#: plugins/sudoers/visudo.c:915 #, c-format msgid "unable to run %s" msgstr "exécution de %s impossible" -#: plugins/sudoers/visudo.c:942 +#: plugins/sudoers/visudo.c:946 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s : mauvais propriétaire (uid, gid), celui-ci devrait être (%u,%u)\n" -#: plugins/sudoers/visudo.c:953 +#: plugins/sudoers/visudo.c:957 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s : mauvais droits d'utilisation, le mode devrait être 0%o\n" -#: plugins/sudoers/visudo.c:999 plugins/sudoers/visudo.c:1006 +#: plugins/sudoers/visudo.c:1009 plugins/sudoers/visudo.c:1016 #, c-format msgid "%s: parsed OK\n" msgstr "%s : analyse réussie\n" -#: plugins/sudoers/visudo.c:1025 +#: plugins/sudoers/visudo.c:1035 #, c-format msgid "%s busy, try again later" msgstr "%s n'est pas disponible, réessayez plus tard" -#: plugins/sudoers/visudo.c:1029 +#: plugins/sudoers/visudo.c:1039 msgid "Edit anyway? [y/N]" msgstr "Éditer quand même ? [y/N]" -#: plugins/sudoers/visudo.c:1130 +#: plugins/sudoers/visudo.c:1197 +msgid "the -x option will be removed in a future release" +msgstr "l'option -x sera supprimée dans une version ultérieure" + +#: plugins/sudoers/visudo.c:1199 +msgid "please consider using the cvtsudoers utility instead" +msgstr "envisagez plutôt l'utilisation de l'utilitaire cvtsudoers" + +#: plugins/sudoers/visudo.c:1219 #, 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:1242 +#: plugins/sudoers/visudo.c:1332 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3743,7 +3767,7 @@ "%s - édite le fichier sudoers en toute sécurité\n" "\n" -#: plugins/sudoers/visudo.c:1244 +#: plugins/sudoers/visudo.c:1334 msgid "" "\n" "Options:\n" @@ -3765,38 +3789,49 @@ " -s, --strict validation stricte de la syntaxe\n" " -V, --version affiche la version, puis termine l'exécution\n" -#: toke.l:189 +#: toke.l:184 msgid "empty string" msgstr "chaîne vide" -#: toke.l:201 toke.l:571 +#: toke.l:196 toke.l:566 msgid "empty group" msgstr "groupe vide" -#: toke.l:211 toke.l:569 +#: toke.l:206 toke.l:564 msgid "empty netgroup" msgstr "netgroup vide" -#: toke.l:289 +#: toke.l:284 msgid "unterminated regular expression" msgstr "expression régulière non terminée" -#: toke.l:363 toke.l:375 toke.l:387 toke.l:403 toke.l:422 toke.l:462 +#: toke.l:358 toke.l:370 toke.l:382 toke.l:398 toke.l:417 toke.l:457 msgid "invalid line continuation" msgstr "la suite de la ligne est invalide" -#: toke.l:608 toke.l:620 +#: toke.l:603 toke.l:615 msgid "invalid IPv6 address" msgstr "adresse IPv6 invalide" -#: toke.l:876 +#: toke.l:863 msgid "unexpected line break in string" msgstr "saut de ligne inattendu dans la chaîne" -#: toke.l:1226 +#: toke.l:983 +msgid "ignoring editor backup file" +msgstr "le fichier de sauvegarde de l'éditeur est ignoré" + +#: toke.l:986 +msgid "ignoring file name containing '.'" +msgstr "le nom de fichier contenant un « . » est ignoré" + +#: toke.l:1289 msgid "too many levels of includes" msgstr "nombre de niveaux d'inclusions trop élevé" +#~ msgid "timestamp owner (%s): No such user" +#~ msgstr "propriétaire du fichier d'horodatage (%s) : utilisateur inconnu" + #~ msgid "%s must be owned by uid %d" #~ msgstr "%s doit appartenir à l'utilisateur (uid) %d" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/plugins/sudoers/po/hr.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/plugins/sudoers/po/hr.mo differ diff -Nru sudo-1.9.13p3/plugins/sudoers/po/hr.po sudo-1.9.14p2/plugins/sudoers/po/hr.po --- sudo-1.9.13p3/plugins/sudoers/po/hr.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/po/hr.po 2023-07-15 15:37:21.000000000 +0000 @@ -4,10 +4,10 @@ # Božidar Putanec , 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023. msgid "" msgstr "" -"Project-Id-Version: sudoers-1.9.13b2\n" +"Project-Id-Version: sudoers-1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-26 18:06-0800\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-08 12:56-0700\n" "Last-Translator: Božidar Putanec \n" "Language-Team: Croatian \n" "Language: hr\n" @@ -21,7 +21,7 @@ "X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SearchPath-0: .\n" -#: confstr.sh:1 gram.y:1220 plugins/sudoers/logging.c:866 +#: confstr.sh:1 gram.y:1240 plugins/sudoers/logging.c:885 msgid "syntax error" msgstr "sintaktična greška" @@ -45,34 +45,34 @@ msgid "Sorry, try again." msgstr "Pokušajte ponovo." -#: gram.y:237 gram.y:304 gram.y:313 gram.y:322 gram.y:332 gram.y:342 -#: gram.y:366 gram.y:393 gram.y:402 gram.y:410 gram.y:419 gram.y:428 -#: gram.y:502 gram.y:512 gram.y:524 gram.y:572 gram.y:581 gram.y:590 -#: gram.y:599 gram.y:731 gram.y:739 gram.y:750 gram.y:762 gram.y:781 -#: gram.y:944 gram.y:949 gram.y:957 gram.y:971 gram.y:977 gram.y:1099 -#: gram.y:1108 gram.y:1116 gram.y:1125 gram.y:1134 gram.y:1163 gram.y:1172 -#: gram.y:1180 gram.y:1280 gram.y:1410 gram.y:1777 gram.y:1827 -#: lib/eventlog/eventlog.c:235 lib/eventlog/eventlog.c:312 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:834 -#: lib/eventlog/eventlog.c:1135 lib/iolog/iolog_filter.c:142 +#: gram.y:236 gram.y:303 gram.y:312 gram.y:321 gram.y:331 gram.y:341 +#: gram.y:365 gram.y:392 gram.y:401 gram.y:409 gram.y:418 gram.y:427 +#: gram.y:501 gram.y:511 gram.y:523 gram.y:571 gram.y:580 gram.y:589 +#: gram.y:598 gram.y:730 gram.y:738 gram.y:749 gram.y:761 gram.y:780 +#: gram.y:943 gram.y:948 gram.y:956 gram.y:970 gram.y:976 gram.y:988 +#: gram.y:994 gram.y:1119 gram.y:1128 gram.y:1136 gram.y:1145 gram.y:1154 +#: gram.y:1183 gram.y:1192 gram.y:1200 gram.y:1300 gram.y:1430 gram.y:1808 +#: gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:313 lib/eventlog/eventlog.c:755 +#: lib/eventlog/eventlog.c:832 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:472 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 #: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:233 -#: lib/iolog/iolog_json.c:150 lib/iolog/iolog_json.c:382 -#: lib/iolog/iolog_json.c:412 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:212 -#: logsrvd/iolog_writer.c:95 logsrvd/iolog_writer.c:100 -#: logsrvd/iolog_writer.c:134 logsrvd/iolog_writer.c:182 -#: logsrvd/iolog_writer.c:215 logsrvd/iolog_writer.c:225 -#: logsrvd/iolog_writer.c:254 logsrvd/iolog_writer.c:275 -#: logsrvd/iolog_writer.c:287 logsrvd/iolog_writer.c:297 -#: logsrvd/iolog_writer.c:307 logsrvd/iolog_writer.c:317 -#: logsrvd/iolog_writer.c:329 logsrvd/iolog_writer.c:364 -#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:377 -#: logsrvd/iolog_writer.c:383 logsrvd/iolog_writer.c:567 -#: logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 logsrvd/logsrvd.c:310 -#: logsrvd/logsrvd.c:1050 logsrvd/logsrvd.c:1113 logsrvd/logsrvd.c:1582 -#: logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 logsrvd/logsrvd.c:1988 +#: 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:212 logsrvd/iolog_writer.c:95 +#: logsrvd/iolog_writer.c:100 logsrvd/iolog_writer.c:134 +#: logsrvd/iolog_writer.c:182 logsrvd/iolog_writer.c:215 +#: logsrvd/iolog_writer.c:225 logsrvd/iolog_writer.c:254 +#: logsrvd/iolog_writer.c:275 logsrvd/iolog_writer.c:287 +#: logsrvd/iolog_writer.c:297 logsrvd/iolog_writer.c:307 +#: logsrvd/iolog_writer.c:317 logsrvd/iolog_writer.c:329 +#: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 +#: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:1058 logsrvd/logsrvd.c:1121 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 #: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 #: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 #: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 @@ -87,29 +87,31 @@ #: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1743 #: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:216 #: logsrvd/logsrvd_journal.c:217 logsrvd/logsrvd_journal.c:273 -#: logsrvd/logsrvd_journal.c:433 logsrvd/logsrvd_journal.c:435 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:216 -#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:279 -#: logsrvd/logsrvd_local.c:417 logsrvd/logsrvd_local.c:466 -#: logsrvd/logsrvd_local.c:467 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:473 logsrvd/logsrvd_queue.c:159 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/logsrvd_relay.c:444 logsrvd/logsrvd_relay.c:743 -#: logsrvd/logsrvd_relay.c:850 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 -#: logsrvd/sendlog.c:291 logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 -#: logsrvd/sendlog.c:1801 plugins/sudoers/audit.c:116 -#: plugins/sudoers/auth/bsdauth.c:150 plugins/sudoers/auth/kerb5.c:121 +#: logsrvd/logsrvd_journal.c:278 logsrvd/logsrvd_journal.c:438 +#: logsrvd/logsrvd_journal.c:440 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:216 logsrvd/logsrvd_local.c:278 +#: logsrvd/logsrvd_local.c:279 logsrvd/logsrvd_local.c:417 +#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:467 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:473 +#: logsrvd/logsrvd_queue.c:159 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/logsrvd_relay.c:446 +#: logsrvd/logsrvd_relay.c:745 logsrvd/logsrvd_relay.c:852 +#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:292 +#: logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 logsrvd/sendlog.c:624 +#: logsrvd/sendlog.c:1810 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/bsdauth.c:152 plugins/sudoers/auth/kerb5.c:121 #: plugins/sudoers/auth/kerb5.c:148 plugins/sudoers/auth/pam.c:687 #: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:175 plugins/sudoers/cvtsudoers.c:192 -#: plugins/sudoers/cvtsudoers.c:203 plugins/sudoers/cvtsudoers.c:333 -#: plugins/sudoers/cvtsudoers.c:372 plugins/sudoers/cvtsudoers.c:392 -#: plugins/sudoers/cvtsudoers.c:537 plugins/sudoers/cvtsudoers.c:670 -#: plugins/sudoers/cvtsudoers.c:688 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:870 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:246 +#: plugins/sudoers/canon_path.c:129 plugins/sudoers/canon_path.c:160 +#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:132 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:193 +#: plugins/sudoers/cvtsudoers.c:204 plugins/sudoers/cvtsudoers.c:334 +#: plugins/sudoers/cvtsudoers.c:373 plugins/sudoers/cvtsudoers.c:393 +#: plugins/sudoers/cvtsudoers.c:538 plugins/sudoers/cvtsudoers.c:691 +#: plugins/sudoers/cvtsudoers.c:709 plugins/sudoers/cvtsudoers.c:883 +#: plugins/sudoers/cvtsudoers.c:891 plugins/sudoers/cvtsudoers.c:1386 +#: plugins/sudoers/cvtsudoers.c:1390 plugins/sudoers/cvtsudoers.c:1492 +#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:247 #: 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:376 @@ -127,143 +129,152 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1158 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:212 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:689 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:691 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:294 plugins/sudoers/ldap_util.c:301 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:402 -#: plugins/sudoers/log_client.c:715 plugins/sudoers/log_client.c:736 -#: plugins/sudoers/log_client.c:1415 plugins/sudoers/log_client.c:1536 -#: plugins/sudoers/log_client.c:1636 plugins/sudoers/log_client.c:1972 -#: plugins/sudoers/log_client.c:2031 plugins/sudoers/logging.c:110 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/match_command.c:335 plugins/sudoers/match_command.c:603 -#: plugins/sudoers/match_command.c:654 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:776 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:267 plugins/sudoers/parse.c:284 -#: plugins/sudoers/parse.c:303 plugins/sudoers/parse.c:322 -#: plugins/sudoers/parse.c:339 plugins/sudoers/parse.c:362 -#: plugins/sudoers/parse.c:373 plugins/sudoers/parse_ldif.c:153 -#: plugins/sudoers/parse_ldif.c:184 plugins/sudoers/parse_ldif.c:253 -#: plugins/sudoers/parse_ldif.c:261 plugins/sudoers/parse_ldif.c:266 -#: plugins/sudoers/parse_ldif.c:342 plugins/sudoers/parse_ldif.c:353 -#: plugins/sudoers/parse_ldif.c:380 plugins/sudoers/parse_ldif.c:397 -#: plugins/sudoers/parse_ldif.c:409 plugins/sudoers/parse_ldif.c:413 -#: plugins/sudoers/parse_ldif.c:427 plugins/sudoers/parse_ldif.c:484 -#: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:628 -#: plugins/sudoers/parse_ldif.c:653 plugins/sudoers/parse_ldif.c:711 -#: plugins/sudoers/parse_ldif.c:728 plugins/sudoers/parse_ldif.c:756 -#: plugins/sudoers/parse_ldif.c:763 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 -#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 -#: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 -#: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 -#: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:185 -#: plugins/sudoers/sssd.c:414 plugins/sudoers/sssd.c:479 -#: plugins/sudoers/sssd.c:505 plugins/sudoers/sssd.c:568 -#: plugins/sudoers/sssd.c:761 plugins/sudoers/strvec_join.c:53 -#: plugins/sudoers/stubs.c:112 plugins/sudoers/stubs.c:120 -#: plugins/sudoers/sudoers.c:354 plugins/sudoers/sudoers.c:380 -#: plugins/sudoers/sudoers.c:447 plugins/sudoers/sudoers.c:464 -#: plugins/sudoers/sudoers.c:505 plugins/sudoers/sudoers.c:849 -#: plugins/sudoers/sudoers.c:902 plugins/sudoers/sudoers.c:1054 -#: plugins/sudoers/sudoers.c:1114 plugins/sudoers/sudoers.c:1369 +#: plugins/sudoers/log_client.c:717 plugins/sudoers/log_client.c:739 +#: plugins/sudoers/log_client.c:744 plugins/sudoers/log_client.c:1423 +#: plugins/sudoers/log_client.c:1544 plugins/sudoers/log_client.c:1667 +#: plugins/sudoers/log_client.c:1986 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:846 plugins/sudoers/match_command.c:295 +#: plugins/sudoers/match_command.c:563 plugins/sudoers/match_command.c:629 +#: plugins/sudoers/match_command.c:724 plugins/sudoers/match_command.c:770 +#: plugins/sudoers/match_digest.c:82 plugins/sudoers/parse.c:279 +#: plugins/sudoers/parse.c:296 plugins/sudoers/parse.c:315 +#: plugins/sudoers/parse.c:334 plugins/sudoers/parse.c:351 +#: plugins/sudoers/parse.c:374 plugins/sudoers/parse.c:385 +#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 +#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:261 +#: plugins/sudoers/parse_ldif.c:266 plugins/sudoers/parse_ldif.c:342 +#: plugins/sudoers/parse_ldif.c:353 plugins/sudoers/parse_ldif.c:380 +#: plugins/sudoers/parse_ldif.c:397 plugins/sudoers/parse_ldif.c:409 +#: plugins/sudoers/parse_ldif.c:413 plugins/sudoers/parse_ldif.c:427 +#: plugins/sudoers/parse_ldif.c:484 plugins/sudoers/parse_ldif.c:598 +#: plugins/sudoers/parse_ldif.c:628 plugins/sudoers/parse_ldif.c:653 +#: plugins/sudoers/parse_ldif.c:711 plugins/sudoers/parse_ldif.c:728 +#: plugins/sudoers/parse_ldif.c:756 plugins/sudoers/parse_ldif.c:763 +#: plugins/sudoers/policy.c:622 plugins/sudoers/policy.c:1050 +#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:199 +#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 +#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:587 +#: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:857 +#: plugins/sudoers/pwutil.c:945 plugins/sudoers/pwutil.c:993 +#: plugins/sudoers/pwutil.c:1052 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 +#: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1325 plugins/sudoers/sudoers.c:1513 #: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 #: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 #: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 -#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 -#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:588 -#: plugins/sudoers/timestamp.c:451 plugins/sudoers/timestamp.c:495 -#: plugins/sudoers/timestamp.c:1017 plugins/sudoers/timestamp.c:1146 -#: plugins/sudoers/toke_util.c:78 plugins/sudoers/toke_util.c:106 -#: plugins/sudoers/toke_util.c:131 plugins/sudoers/toke_util.c:161 -#: plugins/sudoers/toke_util.c:200 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:150 plugins/sudoers/visudo.c:385 -#: plugins/sudoers/visudo.c:391 plugins/sudoers/visudo.c:502 -#: plugins/sudoers/visudo.c:1056 toke.l:1031 toke.l:1163 toke.l:1234 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 +#: plugins/sudoers/toke_util.c:161 plugins/sudoers/toke_util.c:200 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1087 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1299 msgid "unable to allocate memory" msgstr "nije moguće dodijeliti memoriju" -#: gram.y:623 +#: gram.y:622 msgid "a digest requires a path name" msgstr "kontrolni zbroj zahtijeva ime staze" -#: gram.y:645 +#: gram.y:644 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "vrijednosti za „CWD“ moraju započeti s „/“, „~“, ili „*“" -#: gram.y:651 +#: gram.y:650 msgid "\"CWD\" path too long" msgstr "„CWD“ staza je preduga" -#: gram.y:661 +#: gram.y:660 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "vrijednosti za „CHROOT“ moraju započeti s „/“, „~“, ili „*“" -#: gram.y:667 +#: gram.y:666 msgid "\"CHROOT\" path too long" msgstr "„CHROOT“ staza je preduga" -#: gram.y:802 +#: gram.y:801 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "sintaktična greška -- rezervirana riječ %s korištena kao alias" -#: gram.y:825 +#: gram.y:824 msgid "invalid notbefore value" msgstr "nevaljana ‘notbefore’ vrijednost" -#: gram.y:834 +#: gram.y:833 msgid "invalid notafter value" msgstr "nevaljana ‘notafter’ vrijednost" -#: gram.y:844 plugins/sudoers/policy.c:385 +#: gram.y:843 plugins/sudoers/policy.c:381 msgid "timeout value too large" msgstr "vrijednost za tajmaut je prevelika" -#: gram.y:846 plugins/sudoers/policy.c:387 +#: gram.y:845 plugins/sudoers/policy.c:383 msgid "invalid timeout value" msgstr "nevaljana vrijednost za tajmaut" -#: gram.y:967 plugins/sudoers/sudoers.c:1072 +#: gram.y:966 plugins/sudoers/sudoers.c:1192 msgid "command too long" msgstr "naredba je preduga" -#: gram.y:1224 plugins/sudoers/check_aliases.c:96 -#: plugins/sudoers/defaults.c:1276 +#: gram.y:1000 +msgid "expected a fully-qualified path name" +msgstr "očekivano je potpuno kvalificirano ime staze" + +#: gram.y:1244 plugins/sudoers/check_aliases.c:96 +#: plugins/sudoers/defaults.c:1275 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1278 +#: gram.y:1298 #, c-format msgid "Alias \"%s\" already defined" msgstr "Alias „%s“ je već ranije definiran" -#: gram.y:1777 gram.y:1827 lib/eventlog/eventlog.c:235 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:830 -#: lib/eventlog/eventlog.c:833 lib/eventlog/eventlog.c:1135 -#: lib/iolog/iolog_filter.c:142 lib/iolog/iolog_filter.c:202 -#: lib/iolog/iolog_filter.c:232 lib/iolog/iolog_json.c:150 -#: lib/iolog/iolog_json.c:381 lib/iolog/iolog_json.c:412 +#: gram.y:1808 gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:755 lib/eventlog/eventlog.c:828 +#: lib/eventlog/eventlog.c:831 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:471 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 +#: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:232 #: 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 @@ -278,55 +289,56 @@ #: logsrvd/iolog_writer.c:316 logsrvd/iolog_writer.c:328 #: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 #: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 -#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 -#: logsrvd/logsrvd.c:310 logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:490 -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:611 -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:732 -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1439 logsrvd/logsrvd.c:1446 -#: logsrvd/logsrvd.c:1582 logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 -#: logsrvd/logsrvd.c:1988 logsrvd/logsrvd_conf.c:357 -#: logsrvd/logsrvd_conf.c:370 logsrvd/logsrvd_conf.c:511 -#: logsrvd/logsrvd_conf.c:534 logsrvd/logsrvd_conf.c:538 -#: logsrvd/logsrvd_conf.c:556 logsrvd/logsrvd_conf.c:626 -#: logsrvd/logsrvd_conf.c:649 logsrvd/logsrvd_conf.c:678 -#: logsrvd/logsrvd_conf.c:692 logsrvd/logsrvd_conf.c:706 -#: logsrvd/logsrvd_conf.c:720 logsrvd/logsrvd_conf.c:734 -#: logsrvd/logsrvd_conf.c:748 logsrvd/logsrvd_conf.c:829 -#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1053 -#: logsrvd/logsrvd_conf.c:1448 logsrvd/logsrvd_conf.c:1595 -#: logsrvd/logsrvd_conf.c:1621 logsrvd/logsrvd_conf.c:1633 -#: logsrvd/logsrvd_conf.c:1640 logsrvd/logsrvd_conf.c:1646 -#: logsrvd/logsrvd_conf.c:1742 logsrvd/logsrvd_journal.c:76 -#: logsrvd/logsrvd_journal.c:125 logsrvd/logsrvd_journal.c:216 -#: logsrvd/logsrvd_journal.c:246 logsrvd/logsrvd_journal.c:250 -#: logsrvd/logsrvd_journal.c:258 logsrvd/logsrvd_journal.c:281 -#: logsrvd/logsrvd_journal.c:285 logsrvd/logsrvd_journal.c:433 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:278 -#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:491 logsrvd/logsrvd_queue.c:158 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:291 -#: logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 logsrvd/sendlog.c:1503 -#: logsrvd/sendlog.c:1510 logsrvd/sendlog.c:1733 logsrvd/sendlog.c:1801 -#: logsrvd/tls_init.c:305 logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 -#: plugins/sudoers/audit.c:116 plugins/sudoers/auth/pam.c:502 -#: plugins/sudoers/auth/pam.c:687 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:174 plugins/sudoers/cvtsudoers.c:191 -#: plugins/sudoers/cvtsudoers.c:202 plugins/sudoers/cvtsudoers.c:332 -#: plugins/sudoers/cvtsudoers.c:536 plugins/sudoers/cvtsudoers.c:669 -#: plugins/sudoers/cvtsudoers.c:687 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:869 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:182 plugins/sudoers/cvtsudoers_csv.c:245 -#: 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:375 -#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:437 -#: plugins/sudoers/cvtsudoers_ldif.c:448 plugins/sudoers/cvtsudoers_ldif.c:455 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:480 -#: plugins/sudoers/cvtsudoers_ldif.c:488 plugins/sudoers/cvtsudoers_ldif.c:635 -#: plugins/sudoers/cvtsudoers_merge.c:47 plugins/sudoers/cvtsudoers_merge.c:51 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:530 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:668 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:1132 +#: logsrvd/logsrvd.c:1447 logsrvd/logsrvd.c:1454 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 +#: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 +#: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 +#: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 +#: logsrvd/logsrvd_conf.c:626 logsrvd/logsrvd_conf.c:649 +#: logsrvd/logsrvd_conf.c:678 logsrvd/logsrvd_conf.c:692 +#: logsrvd/logsrvd_conf.c:706 logsrvd/logsrvd_conf.c:720 +#: logsrvd/logsrvd_conf.c:734 logsrvd/logsrvd_conf.c:748 +#: logsrvd/logsrvd_conf.c:829 logsrvd/logsrvd_conf.c:1036 +#: logsrvd/logsrvd_conf.c:1053 logsrvd/logsrvd_conf.c:1448 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1621 +#: logsrvd/logsrvd_conf.c:1633 logsrvd/logsrvd_conf.c:1640 +#: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1742 +#: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:125 +#: logsrvd/logsrvd_journal.c:216 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:250 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:290 +#: logsrvd/logsrvd_journal.c:438 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:466 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:491 +#: logsrvd/logsrvd_queue.c:158 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 +#: logsrvd/sendlog.c:292 logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 +#: logsrvd/sendlog.c:624 logsrvd/sendlog.c:1512 logsrvd/sendlog.c:1519 +#: logsrvd/sendlog.c:1742 logsrvd/sendlog.c:1810 logsrvd/tls_init.c:305 +#: logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/pam.c:502 plugins/sudoers/auth/pam.c:687 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/canon_path.c:129 +#: plugins/sudoers/canon_path.c:160 plugins/sudoers/check_aliases.c:168 +#: plugins/sudoers/cvtsudoers.c:132 plugins/sudoers/cvtsudoers.c:175 +#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:203 +#: plugins/sudoers/cvtsudoers.c:333 plugins/sudoers/cvtsudoers.c:537 +#: plugins/sudoers/cvtsudoers.c:690 plugins/sudoers/cvtsudoers.c:708 +#: plugins/sudoers/cvtsudoers.c:883 plugins/sudoers/cvtsudoers.c:890 +#: plugins/sudoers/cvtsudoers.c:1386 plugins/sudoers/cvtsudoers.c:1390 +#: plugins/sudoers/cvtsudoers.c:1492 plugins/sudoers/cvtsudoers_csv.c:182 +#: plugins/sudoers/cvtsudoers_csv.c:246 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:375 plugins/sudoers/cvtsudoers_ldif.c:429 +#: plugins/sudoers/cvtsudoers_ldif.c:437 plugins/sudoers/cvtsudoers_ldif.c:448 +#: plugins/sudoers/cvtsudoers_ldif.c:455 plugins/sudoers/cvtsudoers_ldif.c:467 +#: plugins/sudoers/cvtsudoers_ldif.c:480 plugins/sudoers/cvtsudoers_ldif.c:488 +#: plugins/sudoers/cvtsudoers_ldif.c:635 plugins/sudoers/cvtsudoers_merge.c:47 +#: plugins/sudoers/cvtsudoers_merge.c:51 #: plugins/sudoers/cvtsudoers_merge.c:353 #: plugins/sudoers/cvtsudoers_merge.c:399 #: plugins/sudoers/cvtsudoers_merge.c:445 @@ -338,42 +350,43 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1157 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:211 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:688 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:690 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:293 plugins/sudoers/ldap_util.c:300 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:228 #: plugins/sudoers/log_client.c:250 plugins/sudoers/log_client.c:264 -#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:715 -#: plugins/sudoers/log_client.c:736 plugins/sudoers/log_client.c:1415 -#: plugins/sudoers/log_client.c:1536 plugins/sudoers/log_client.c:1636 -#: plugins/sudoers/log_client.c:1972 plugins/sudoers/log_client.c:2031 -#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:188 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/logging.c:880 plugins/sudoers/logging.c:892 -#: plugins/sudoers/match_command.c:334 plugins/sudoers/match_command.c:602 -#: plugins/sudoers/match_command.c:653 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:775 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:266 plugins/sudoers/parse.c:283 -#: plugins/sudoers/parse.c:302 plugins/sudoers/parse.c:321 -#: plugins/sudoers/parse.c:338 plugins/sudoers/parse.c:361 -#: plugins/sudoers/parse.c:372 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:717 +#: plugins/sudoers/log_client.c:739 plugins/sudoers/log_client.c:744 +#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1544 +#: plugins/sudoers/log_client.c:1667 plugins/sudoers/log_client.c:1986 +#: plugins/sudoers/log_client.c:2045 plugins/sudoers/logging.c:110 +#: plugins/sudoers/logging.c:188 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:734 plugins/sudoers/logging.c:846 +#: plugins/sudoers/logging.c:899 plugins/sudoers/logging.c:906 +#: plugins/sudoers/match_command.c:294 plugins/sudoers/match_command.c:562 +#: plugins/sudoers/match_command.c:628 plugins/sudoers/match_command.c:724 +#: plugins/sudoers/match_command.c:769 plugins/sudoers/match_digest.c:82 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:295 +#: plugins/sudoers/parse.c:314 plugins/sudoers/parse.c:333 +#: plugins/sudoers/parse.c:350 plugins/sudoers/parse.c:373 +#: plugins/sudoers/parse.c:384 plugins/sudoers/parse_ldif.c:152 #: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 #: plugins/sudoers/parse_ldif.c:260 plugins/sudoers/parse_ldif.c:265 #: plugins/sudoers/parse_ldif.c:341 plugins/sudoers/parse_ldif.c:352 @@ -383,56 +396,60 @@ #: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:627 #: plugins/sudoers/parse_ldif.c:652 plugins/sudoers/parse_ldif.c:710 #: plugins/sudoers/parse_ldif.c:727 plugins/sudoers/parse_ldif.c:755 -#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:154 -#: plugins/sudoers/policy.c:163 plugins/sudoers/policy.c:172 -#: plugins/sudoers/policy.c:201 plugins/sudoers/policy.c:370 -#: plugins/sudoers/policy.c:385 plugins/sudoers/policy.c:387 -#: plugins/sudoers/policy.c:425 plugins/sudoers/policy.c:434 -#: plugins/sudoers/policy.c:482 plugins/sudoers/policy.c:492 -#: plugins/sudoers/policy.c:501 plugins/sudoers/policy.c:510 -#: plugins/sudoers/policy.c:519 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:166 +#: plugins/sudoers/policy.c:196 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:381 plugins/sudoers/policy.c:383 +#: plugins/sudoers/policy.c:421 plugins/sudoers/policy.c:430 +#: plugins/sudoers/policy.c:478 plugins/sudoers/policy.c:488 +#: plugins/sudoers/policy.c:497 plugins/sudoers/policy.c:506 +#: plugins/sudoers/policy.c:515 plugins/sudoers/policy.c:622 +#: plugins/sudoers/policy.c:1050 plugins/sudoers/prompt.c:93 #: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 #: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 #: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 #: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 #: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 plugins/sudoers/sssd.c:144 #: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 #: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 -#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:761 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:112 -#: plugins/sudoers/stubs.c:120 plugins/sudoers/sudoers.c:354 -#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:447 -#: plugins/sudoers/sudoers.c:464 plugins/sudoers/sudoers.c:505 -#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:902 -#: plugins/sudoers/sudoers.c:1054 plugins/sudoers/sudoers.c:1114 -#: plugins/sudoers/sudoers.c:1369 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:562 plugins/sudoers/sudoreplay.c:1278 -#: plugins/sudoers/sudoreplay.c:1334 plugins/sudoers/sudoreplay.c:1530 -#: plugins/sudoers/sudoreplay.c:1534 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:588 plugins/sudoers/timestamp.c:451 -#: plugins/sudoers/timestamp.c:495 plugins/sudoers/timestamp.c:1017 -#: plugins/sudoers/timestamp.c:1146 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1324 plugins/sudoers/sudoers.c:1513 +#: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 +#: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 #: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 #: plugins/sudoers/toke_util.c:160 plugins/sudoers/toke_util.c:200 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:150 -#: plugins/sudoers/visudo.c:385 plugins/sudoers/visudo.c:391 -#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:1056 toke.l:1031 -#: toke.l:1163 toke.l:1226 toke.l:1234 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1086 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1288 toke.l:1299 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:303 +#: lib/eventlog/eventlog.c:304 #, c-format msgid "unable to dup stdin: %m" msgstr "nije moguće duplicirati stdin: %m" -#: lib/eventlog/eventlog.c:345 +#: lib/eventlog/eventlog.c:346 #, c-format msgid "unable to execute %s: %m" msgstr "nije moguće izvršiti %s: %m" @@ -451,96 +468,96 @@ msgid "unable to open pipe: %m" msgstr "nije moguće otvoriti cijev: %m" -#: lib/eventlog/eventlog.c:960 +#: lib/eventlog/eventlog.c:958 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:989 +#: lib/eventlog/eventlog.c:987 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (naredba se nastavlja) %s" -#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1242 -#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 -#, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "nevaljani regularni izraz: „%s“: %s" - -#: lib/iolog/iolog_json.c:140 +#: lib/eventlog/parse_json.c:175 #, c-format msgid "expected JSON_STRING, got %d" msgstr "očekivan je JSON_STRING, dobiven je %d" -#: lib/iolog/iolog_json.c:145 +#: lib/eventlog/parse_json.c:180 msgid "JSON_ARRAY too large" msgstr "JSON_ARRAY je prevelik" -#: lib/iolog/iolog_json.c:404 +#: lib/eventlog/parse_json.c:494 msgid "missing double quote in name" msgstr "imenu nedostaje navodnik (\")" -#: lib/iolog/iolog_json.c:511 +#: lib/eventlog/parse_json.c:612 msgid "missing JSON_OBJECT" msgstr "nedostaje JSON_OBJECT" -#: lib/iolog/iolog_json.c:515 +#: lib/eventlog/parse_json.c:616 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "očekivan je JSON_OBJECT, dobiven je %d" -#: lib/iolog/iolog_json.c:632 +#: lib/eventlog/parse_json.c:750 #, c-format msgid "json stack exhausted (max %u frames)" msgstr "json stog je potrošen (max %u okvira)" -#: lib/iolog/iolog_json.c:706 +#: lib/eventlog/parse_json.c:828 msgid "objects must consist of name:value pairs" msgstr "objekti se moraju sastojati od parova ime:vrijednost" -#: lib/iolog/iolog_json.c:711 lib/iolog/iolog_json.c:742 -#: lib/iolog/iolog_json.c:786 lib/iolog/iolog_json.c:808 -#: lib/iolog/iolog_json.c:830 lib/iolog/iolog_json.c:852 -#: lib/iolog/iolog_json.c:874 +#: lib/eventlog/parse_json.c:833 lib/eventlog/parse_json.c:864 +#: lib/eventlog/parse_json.c:908 lib/eventlog/parse_json.c:930 +#: lib/eventlog/parse_json.c:952 lib/eventlog/parse_json.c:974 +#: lib/eventlog/parse_json.c:996 msgid "missing separator between values" msgstr "nedostaje separator između vrijednosti" -#: lib/iolog/iolog_json.c:726 lib/iolog/iolog_json.c:900 +#: lib/eventlog/parse_json.c:848 lib/eventlog/parse_json.c:1022 msgid "unmatched close brace" msgstr "nesparena zatvorena vitičasta zagrada }" -#: lib/iolog/iolog_json.c:737 +#: lib/eventlog/parse_json.c:859 msgid "unexpected array" msgstr "neočekivano polje" -#: lib/iolog/iolog_json.c:757 lib/iolog/iolog_json.c:903 +#: lib/eventlog/parse_json.c:879 lib/eventlog/parse_json.c:1025 msgid "unmatched close bracket" msgstr "nesparena zatvorena uglata zagrada ]" -#: lib/iolog/iolog_json.c:768 +#: lib/eventlog/parse_json.c:890 msgid "unexpected string" msgstr "neočekivani string" -#: lib/iolog/iolog_json.c:779 +#: lib/eventlog/parse_json.c:901 msgid "missing colon after name" msgstr "nedostaje dvotočka iza imena" -#: lib/iolog/iolog_json.c:800 lib/iolog/iolog_json.c:822 +#: lib/eventlog/parse_json.c:922 lib/eventlog/parse_json.c:944 msgid "unexpected boolean" msgstr "neočekivana logička operacija (boolean)" -#: lib/iolog/iolog_json.c:844 +#: lib/eventlog/parse_json.c:966 msgid "unexpected null" msgstr "neočekivana nula" -#: lib/iolog/iolog_json.c:865 +#: lib/eventlog/parse_json.c:987 msgid "unexpected number" msgstr "neočekivani broj" -#: lib/iolog/iolog_json.c:912 +#: lib/eventlog/parse_json.c:1033 msgid "parse error" msgstr "greška u raščlambi" +#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1241 +#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "nevaljani regularni izraz: „%s“: %s" + #: lib/iolog/iolog_legacy.c:65 #, c-format msgid "%s: invalid log file" @@ -577,13 +594,13 @@ msgstr "%s postoji ali nije direktorij (0%o)" #: lib/iolog/iolog_mkdirs.c:123 lib/iolog/iolog_mkdtemp.c:79 -#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:209 +#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:234 #, c-format msgid "unable to mkdir %s" msgstr "nije moguće napraviti direktorij %s" -#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:757 -#: plugins/sudoers/visudo.c:791 plugins/sudoers/visudo.c:797 +#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:760 +#: plugins/sudoers/visudo.c:794 plugins/sudoers/visudo.c:800 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "nije moguće promijeniti mȏd od %s na 0%o" @@ -615,8 +632,8 @@ msgid "%s: protocol error: NULL value found in %s" msgstr "%s: greška u protokolu : u %s je pronađena NULL vrijednost" -#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:980 -#: plugins/sudoers/policy.c:593 +#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:993 +#: plugins/sudoers/policy.c:589 msgid "unable to generate UUID" msgstr "nije moguće generirati UUID" @@ -668,26 +685,26 @@ msgid "invalid I/O log %s: %s referenced but not present" msgstr "nevaljani U/I zapis %s: %s ima referenciju ali ne postoji" -#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:385 +#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:390 #, 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:785 logsrvd/logsrvd_journal.c:428 +#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:433 #: logsrvd/logsrvd_queue.c:115 logsrvd/tls_init.c:256 -#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:730 -#: plugins/sudoers/cvtsudoers.c:751 plugins/sudoers/cvtsudoers.c:1431 -#: plugins/sudoers/cvtsudoers_csv.c:695 plugins/sudoers/cvtsudoers_json.c:898 -#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1152 -#: plugins/sudoers/sudoers.c:1182 plugins/sudoers/sudoreplay.c:1496 -#: plugins/sudoers/timestamp.c:460 plugins/sudoers/tsdump.c:128 -#: plugins/sudoers/visudo.c:975 +#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:751 +#: plugins/sudoers/cvtsudoers.c:772 plugins/sudoers/cvtsudoers.c:1452 +#: plugins/sudoers/cvtsudoers_csv.c:697 plugins/sudoers/cvtsudoers_json.c:902 +#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1310 +#: plugins/sudoers/sudoers.c:1334 plugins/sudoers/sudoreplay.c:1496 +#: plugins/sudoers/timestamp.c:485 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:982 #, c-format msgid "unable to open %s" msgstr "nije moguće otvoriti %s" -#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:105 -#: logsrvd/logsrv_util.c:112 plugins/sudoers/sudoreplay.c:355 +#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:111 +#: logsrvd/logsrv_util.c:118 plugins/sudoers/sudoreplay.c:355 #: plugins/sudoers/sudoreplay.c:361 #, c-format msgid "unable to open %s/%s" @@ -703,17 +720,17 @@ msgid "unable to rename %s to %s" msgstr "nije moguće preimenovati %s u %s" -#: logsrvd/logsrv_util.c:147 logsrvd/logsrv_util.c:176 +#: logsrvd/logsrv_util.c:153 logsrvd/logsrv_util.c:182 #, 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/logsrv_util.c:159 +#: logsrvd/logsrv_util.c:165 #, c-format msgid "missing I/O log file %s/%s" msgstr "nema dnevničke datoteke U/I %s/%s" -#: logsrvd/logsrv_util.c:166 +#: logsrvd/logsrv_util.c:172 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: nije moguće skočiti naprijed na %zu" @@ -722,31 +739,31 @@ msgid "unable to connect to relay" msgstr "nije moguće spojiti se na relej" -#: logsrvd/logsrvd.c:330 logsrvd/logsrvd_relay.c:842 +#: logsrvd/logsrvd.c:338 logsrvd/logsrvd_relay.c:844 #, c-format msgid "server message too large: %zu" msgstr "poruka servera je prevelika: %zu" -#: logsrvd/logsrvd.c:422 logsrvd/logsrvd.c:545 logsrvd/logsrvd.c:631 -#: logsrvd/logsrvd.c:873 logsrvd/logsrvd.c:887 logsrvd/logsrvd.c:1049 -#: logsrvd/logsrvd.c:1174 logsrvd/logsrvd.c:1347 logsrvd/logsrvd.c:1365 -#: logsrvd/logsrvd.c:1464 logsrvd/logsrvd.c:1589 logsrvd/logsrvd.c:1773 -#: logsrvd/logsrvd_journal.c:497 logsrvd/logsrvd_local.c:238 +#: logsrvd/logsrvd.c:430 logsrvd/logsrvd.c:553 logsrvd/logsrvd.c:639 +#: logsrvd/logsrvd.c:881 logsrvd/logsrvd.c:895 logsrvd/logsrvd.c:1057 +#: logsrvd/logsrvd.c:1182 logsrvd/logsrvd.c:1355 logsrvd/logsrvd.c:1373 +#: logsrvd/logsrvd.c:1472 logsrvd/logsrvd.c:1597 logsrvd/logsrvd.c:1784 +#: logsrvd/logsrvd_journal.c:502 logsrvd/logsrvd_local.c:238 #: logsrvd/logsrvd_queue.c:164 logsrvd/logsrvd_relay.c:172 #: logsrvd/logsrvd_relay.c:249 logsrvd/logsrvd_relay.c:253 -#: logsrvd/logsrvd_relay.c:389 logsrvd/logsrvd_relay.c:581 -#: logsrvd/logsrvd_relay.c:742 logsrvd/logsrvd_relay.c:1131 -#: logsrvd/sendlog.c:1291 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 -#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:278 -#: plugins/sudoers/iolog.c:1031 plugins/sudoers/iolog.c:1164 -#: plugins/sudoers/iolog.c:1262 plugins/sudoers/log_client.c:121 +#: logsrvd/logsrvd_relay.c:391 logsrvd/logsrvd_relay.c:583 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:1133 +#: logsrvd/sendlog.c:1300 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:277 +#: plugins/sudoers/iolog.c:1030 plugins/sudoers/iolog.c:1163 +#: plugins/sudoers/iolog.c:1261 plugins/sudoers/log_client.c:121 #: plugins/sudoers/log_client.c:343 plugins/sudoers/log_client.c:359 -#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:611 -#: plugins/sudoers/log_client.c:618 plugins/sudoers/log_client.c:1103 -#: plugins/sudoers/log_client.c:1384 plugins/sudoers/log_client.c:1425 -#: plugins/sudoers/log_client.c:1433 plugins/sudoers/log_client.c:1592 -#: plugins/sudoers/log_client.c:1710 plugins/sudoers/log_client.c:2039 -#: plugins/sudoers/log_client.c:2047 plugins/sudoers/logging.c:147 +#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:613 +#: plugins/sudoers/log_client.c:620 plugins/sudoers/log_client.c:1111 +#: plugins/sudoers/log_client.c:1392 plugins/sudoers/log_client.c:1433 +#: plugins/sudoers/log_client.c:1441 plugins/sudoers/log_client.c:1600 +#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:2053 +#: plugins/sudoers/log_client.c:2061 plugins/sudoers/logging.c:147 #: plugins/sudoers/logging.c:205 plugins/sudoers/sudoreplay.c:519 #: plugins/sudoers/sudoreplay.c:566 plugins/sudoers/sudoreplay.c:808 #: plugins/sudoers/sudoreplay.c:920 plugins/sudoers/sudoreplay.c:1011 @@ -756,189 +773,190 @@ msgid "unable to add event to queue" msgstr "nije moguće dodati događaj u red čekanja" -#: logsrvd/logsrvd.c:446 logsrvd/logsrvd.c:483 logsrvd/logsrvd.c:515 -#: logsrvd/logsrvd.c:569 logsrvd/logsrvd.c:648 logsrvd/logsrvd.c:684 -#: logsrvd/logsrvd.c:720 logsrvd/logsrvd.c:756 logsrvd/logsrvd_relay.c:510 -#: logsrvd/logsrvd_relay.c:543 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:577 logsrvd/logsrvd.c:656 logsrvd/logsrvd.c:692 +#: logsrvd/logsrvd.c:728 logsrvd/logsrvd.c:764 logsrvd/logsrvd_relay.c:512 +#: logsrvd/logsrvd_relay.c:545 #, c-format msgid "unexpected state %d for %s" msgstr "neočekivano stanje %d za %s" -#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 -#: logsrvd/logsrvd.c:570 logsrvd/logsrvd.c:649 logsrvd/logsrvd.c:685 -#: logsrvd/logsrvd.c:721 logsrvd/logsrvd.c:757 logsrvd/logsrvd_relay.c:512 -#: logsrvd/logsrvd_relay.c:545 +#: logsrvd/logsrvd.c:455 logsrvd/logsrvd.c:492 logsrvd/logsrvd.c:524 +#: logsrvd/logsrvd.c:578 logsrvd/logsrvd.c:657 logsrvd/logsrvd.c:693 +#: logsrvd/logsrvd.c:729 logsrvd/logsrvd.c:765 logsrvd/logsrvd_relay.c:514 +#: logsrvd/logsrvd_relay.c:547 msgid "state machine error" msgstr "greška automata (state machine)" -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:454 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:462 msgid "invalid AcceptMessage" msgstr "nevaljani AcceptMessage" -#: logsrvd/logsrvd.c:490 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:499 msgid "invalid RejectMessage" msgstr "nevaljani RejectMessage" -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:530 logsrvd/logsrvd.c:531 msgid "invalid ExitMessage" msgstr "nevaljani ExitMessage" -#: logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:577 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:585 msgid "invalid RestartMessage" msgstr "nevaljani RestartMessage" -#: logsrvd/logsrvd.c:611 logsrvd/logsrvd.c:612 +#: logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:620 msgid "invalid AlertMessage" msgstr "nevaljani AlertMessage" -#: logsrvd/logsrvd.c:653 logsrvd/logsrvd.c:689 logsrvd/logsrvd.c:725 +#: logsrvd/logsrvd.c:661 logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:733 #, c-format msgid "%s: unexpected IoBuffer" msgstr "%s: neočekivani IoBuffer" -#: logsrvd/logsrvd.c:654 logsrvd/logsrvd.c:690 logsrvd/logsrvd.c:726 +#: logsrvd/logsrvd.c:662 logsrvd/logsrvd.c:698 logsrvd/logsrvd.c:734 msgid "protocol error" msgstr "greška protokola" -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:661 +#: logsrvd/logsrvd.c:668 logsrvd/logsrvd.c:669 msgid "invalid IoBuffer" msgstr "nevaljani IoBuffer" -#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:697 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:705 msgid "invalid ChangeWindowSize" msgstr "nevaljani ChangeWindowSize" -#: logsrvd/logsrvd.c:732 logsrvd/logsrvd.c:733 +#: logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:741 msgid "invalid CommandSuspend" msgstr "nevaljani CommandSuspend" -#: logsrvd/logsrvd.c:782 logsrvd/logsrvd_journal.c:296 -#: logsrvd/logsrvd_relay.c:652 logsrvd/sendlog.c:1192 -#: plugins/sudoers/log_client.c:1582 +#: logsrvd/logsrvd.c:790 logsrvd/logsrvd_journal.c:301 +#: logsrvd/logsrvd_relay.c:654 logsrvd/sendlog.c:1201 +#: plugins/sudoers/log_client.c:1590 #, c-format msgid "unable to unpack %s size %zu" msgstr "nije moguće raspakirati %s veličinu %zu" -#: logsrvd/logsrvd.c:827 logsrvd/logsrvd_journal.c:370 -#: logsrvd/logsrvd_relay.c:676 +#: logsrvd/logsrvd.c:835 logsrvd/logsrvd_journal.c:375 +#: logsrvd/logsrvd_relay.c:678 #, 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:829 +#: logsrvd/logsrvd.c:837 msgid "unrecognized ClientMessage type" msgstr "neprepoznati tip ClientMessage-a" -#: logsrvd/logsrvd.c:919 +#: logsrvd/logsrvd.c:927 #, c-format msgid "timed out writing to client %s" msgstr "vrijeme za pisanje klijentu %s je isteklo" -#: logsrvd/logsrvd.c:924 logsrvd/logsrvd_relay.c:914 logsrvd/sendlog.c:1395 +#: logsrvd/logsrvd.c:932 logsrvd/logsrvd_relay.c:916 logsrvd/sendlog.c:1404 #, c-format msgid "missing write buffer for client %s" msgstr "nema međuspremnika za pisanje za %s klijenta" -#: logsrvd/logsrvd.c:1020 +#: logsrvd/logsrvd.c:1028 #, c-format msgid "timed out reading from client %s" msgstr "isteklo je vrijeme za čitanje od %s klijenta" -#: logsrvd/logsrvd.c:1061 logsrvd/logsrvd_relay.c:777 +#: logsrvd/logsrvd.c:1069 logsrvd/logsrvd_relay.c:779 #, c-format msgid "EOF from %s without proper TLS shutdown" msgstr "EOF od %s nije propisno zatvaranje TLS-a" -#: logsrvd/logsrvd.c:1105 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:322 -#: plugins/sudoers/log_client.c:721 +#: logsrvd/logsrvd.c:1113 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:331 +#: plugins/sudoers/log_client.c:723 #, c-format msgid "client message too large: %zu" msgstr "poruka klijenta je prevelika: %zu" -#: logsrvd/logsrvd.c:1106 logsrvd/logsrvd_journal.c:259 +#: logsrvd/logsrvd.c:1114 logsrvd/logsrvd_journal.c:259 #: logsrvd/logsrvd_journal.c:260 msgid "client message too large" msgstr "poruka klijenta je prevelika" -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1125 +#: logsrvd/logsrvd.c:1132 logsrvd/logsrvd.c:1133 msgid "invalid ClientMessage" msgstr "nevaljana ClientMessage" -#: logsrvd/logsrvd.c:1425 +#: logsrvd/logsrvd.c:1433 msgid "unable to get remote IP addr" msgstr "nije moguće dobiti udaljenu IP adresu" -#: logsrvd/logsrvd.c:1456 logsrvd/tls_client.c:203 +#: logsrvd/logsrvd.c:1464 logsrvd/tls_client.c:203 #: plugins/sudoers/log_client.c:281 #, 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:1639 logsrvd/logsrvd.c:1992 +#: logsrvd/logsrvd.c:1647 logsrvd/logsrvd.c:2003 msgid "unable to setup listen socket" msgstr "nije moguće postaviti priključak za slušanje (listen socket)" -#: logsrvd/logsrvd.c:1756 +#: logsrvd/logsrvd.c:1767 #, c-format msgid "unexpected signal %d" msgstr "neočekivani signal %d" -#: logsrvd/logsrvd.c:1894 +#: logsrvd/logsrvd.c:1905 msgid "sudo log server" msgstr "server sudo dnevnika" -#: logsrvd/logsrvd.c:1896 logsrvd/sendlog.c:121 +#: logsrvd/logsrvd.c:1907 logsrvd/sendlog.c:121 msgid "Options:" msgstr "Opcije:" -#: logsrvd/logsrvd.c:1898 +#: logsrvd/logsrvd.c:1909 msgid "path to configuration file" msgstr "staza do datoteke s postavkama" -#: logsrvd/logsrvd.c:1900 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1911 logsrvd/sendlog.c:123 msgid "display help message and exit" msgstr "pokaže poruku s pomoći i iziđe" -#: logsrvd/logsrvd.c:1902 +#: logsrvd/logsrvd.c:1913 msgid "do not fork, run in the foreground" msgstr "ne stvara novi proces, radi u prednjem planu" -#: logsrvd/logsrvd.c:1904 +#: logsrvd/logsrvd.c:1915 msgid "percent chance connections will drop" msgstr "postotak šanse da će se veza prekinuti" -#: logsrvd/logsrvd.c:1906 logsrvd/sendlog.c:153 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:153 msgid "display version information and exit" msgstr "prikaže podatke o inačici i iziđe" -#: logsrvd/logsrvd.c:1956 logsrvd/sendlog.c:1702 +#: logsrvd/logsrvd.c:1967 logsrvd/sendlog.c:1711 msgid "Protobuf-C version 1.3 or higher required" msgstr "Potrebna je Protobuf-C inačica 1.3 ili novija" -#: logsrvd/logsrvd.c:1972 +#: logsrvd/logsrvd.c:1983 #, c-format msgid "invalid random drop value: %s" msgstr "nevaljana ‘random drop’ vrijednost: %s" -#: logsrvd/logsrvd.c:1975 logsrvd/sendlog.c:1756 -#: plugins/sudoers/cvtsudoers.c:246 plugins/sudoers/sudoreplay.c:294 -#: plugins/sudoers/visudo.c:182 +#: logsrvd/logsrvd.c:1986 logsrvd/sendlog.c:1765 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/sudoreplay.c:294 +#: plugins/sudoers/visudo.c:186 #, c-format msgid "%s version %s\n" msgstr "%s inačica %s\n" #: logsrvd/logsrvd_conf.c:422 plugins/sudoers/check.c:358 #: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:122 -#: plugins/sudoers/policy.c:1271 plugins/sudoers/sudoers.c:512 -#: plugins/sudoers/sudoers.c:1411 plugins/sudoers/testsudoers.c:215 -#: plugins/sudoers/testsudoers.c:382 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:939 +#: plugins/sudoers/sudoers.c:1041 plugins/sudoers/sudoers.c:1062 +#: plugins/sudoers/sudoers.c:1555 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:393 #, c-format msgid "unknown user %s" msgstr "nepoznati korisnik %s" #: logsrvd/logsrvd_conf.c:439 plugins/sudoers/iolog.c:148 -#: plugins/sudoers/sudoers.c:517 plugins/sudoers/sudoers.c:1445 -#: plugins/sudoers/testsudoers.c:406 +#: plugins/sudoers/sudoers.c:453 plugins/sudoers/sudoers.c:1589 +#: plugins/sudoers/testsudoers.c:417 #, c-format msgid "unknown group %s" msgstr "nepoznata grupa %s" @@ -1010,8 +1028,8 @@ msgid "%s:%d [%s] illegal key: %s" msgstr "%s:%d [%s] nelegalni ključ : %s" -#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:268 -#: plugins/sudoers/logging.c:1033 +#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:269 +#: plugins/sudoers/logging.c:1046 #, c-format msgid "unable to open log file %s" msgstr "nije moguće otvoriti dnevničku datoteku %s" @@ -1024,13 +1042,13 @@ msgid "unable to initialize relay TLS context" msgstr "nije moguće inicijalizirati relej SSL konteksta" -#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:424 -#: logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:434 msgid "unable to create journal file" msgstr "nije moguće stvoriti dnevničku datoteku" #: logsrvd/logsrvd_journal.c:153 logsrvd/logsrvd_queue.c:109 -#: plugins/sudoers/visudo.c:1028 +#: plugins/sudoers/visudo.c:1038 #, c-format msgid "unable to lock %s" msgstr "nije moguće zaključati %s" @@ -1043,8 +1061,8 @@ msgid "unable to open journal file" msgstr "nije moguće otvoriti dnevničku datoteku" -#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:460 -#: logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:470 msgid "unable to write journal file" msgstr "nije moguće pisati u dnevničku datoteku" @@ -1053,20 +1071,20 @@ msgstr "nije moguće preimenovati dnevničku datoteku" #: logsrvd/logsrvd_journal.c:247 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:282 logsrvd/logsrvd_journal.c:283 +#: logsrvd/logsrvd_journal.c:287 logsrvd/logsrvd_journal.c:288 msgid "unexpected EOF reading journal file" msgstr "neočekivani EOF pri čitanju dnevnika" #: logsrvd/logsrvd_journal.c:251 logsrvd/logsrvd_journal.c:252 -#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:287 +#: logsrvd/logsrvd_journal.c:291 logsrvd/logsrvd_journal.c:292 msgid "error reading journal file" msgstr "greška pri čitanju dnevnika" -#: logsrvd/logsrvd_journal.c:298 logsrvd/logsrvd_journal.c:384 +#: logsrvd/logsrvd_journal.c:303 logsrvd/logsrvd_journal.c:389 msgid "invalid journal file, unable to restart" msgstr "nevaljana datoteka dnevnika, ponovno pokretanje nije uspjelo" -#: logsrvd/logsrvd_journal.c:443 +#: logsrvd/logsrvd_journal.c:448 #, 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" @@ -1124,7 +1142,7 @@ #: logsrvd/logsrvd_local.c:599 logsrvd/logsrvd_local.c:607 #: logsrvd/logsrvd_local.c:655 logsrvd/logsrvd_local.c:690 -#: plugins/sudoers/sudoreplay.c:344 +#: plugins/sudoers/sudoreplay.c:344 toke.l:982 toke.l:985 #, c-format msgid "%s/%s: %s" msgstr "%s/%s: %s" @@ -1145,69 +1163,69 @@ msgid "error writing CommandSuspend" msgstr "greška pri pisanju CommandSuspend-a" -#: logsrvd/logsrvd_relay.c:435 +#: logsrvd/logsrvd_relay.c:437 msgid "TLS handshake with relay host failed" msgstr "TLS rukovanje s hostom releja nije uspjelo" -#: logsrvd/logsrvd_relay.c:463 +#: logsrvd/logsrvd_relay.c:465 msgid "unable to connect to relay host" msgstr "nije moguće spojiti se na host releja" -#: logsrvd/logsrvd_relay.c:518 +#: logsrvd/logsrvd_relay.c:520 #, c-format msgid "%s: invalid ServerHello, missing server_id" msgstr "%s: nevaljani ServerHello, nedostaje server_id" -#: logsrvd/logsrvd_relay.c:520 logsrvd/sendlog.c:1096 -#: plugins/sudoers/log_client.c:1468 +#: logsrvd/logsrvd_relay.c:522 logsrvd/sendlog.c:1105 +#: plugins/sudoers/log_client.c:1476 msgid "invalid ServerHello" msgstr "nevaljani ServerHello" -#: logsrvd/logsrvd_relay.c:679 +#: logsrvd/logsrvd_relay.c:681 msgid "unrecognized ServerMessage type" msgstr "neprepoznati tip ServerMessage-a" -#: logsrvd/logsrvd_relay.c:708 +#: logsrvd/logsrvd_relay.c:710 #, c-format msgid "timed out reading from relay %s (%s)" msgstr "isteklo je vrijeme za čitanje iz releja %s (%s)" -#: logsrvd/logsrvd_relay.c:710 +#: logsrvd/logsrvd_relay.c:712 msgid "timeout reading from relay" msgstr "isteklo je vrijeme za čitanje iz releja" -#: logsrvd/logsrvd_relay.c:762 +#: logsrvd/logsrvd_relay.c:764 msgid "relay host name does not match certificate" msgstr "ime hosta releja ne slaže se s certifikatom" -#: logsrvd/logsrvd_relay.c:768 logsrvd/logsrvd_relay.c:782 -#: logsrvd/logsrvd_relay.c:789 +#: logsrvd/logsrvd_relay.c:770 logsrvd/logsrvd_relay.c:784 +#: logsrvd/logsrvd_relay.c:791 msgid "error reading from relay" msgstr "greška čitanja iz releja" -#: logsrvd/logsrvd_relay.c:810 +#: logsrvd/logsrvd_relay.c:812 msgid "unable to read from relay" msgstr "nije moguće čitati iz releja" -#: logsrvd/logsrvd_relay.c:825 logsrvd/logsrvd_relay.c:943 +#: logsrvd/logsrvd_relay.c:827 logsrvd/logsrvd_relay.c:945 msgid "relay server closed connection" msgstr "server releja je prekinuo vezu" -#: logsrvd/logsrvd_relay.c:843 +#: logsrvd/logsrvd_relay.c:845 msgid "server message too large" msgstr "poruka servera je prevelika" -#: logsrvd/logsrvd_relay.c:907 +#: logsrvd/logsrvd_relay.c:909 #, c-format msgid "timed out writing to relay %s (%s)" msgstr "vrijeme za pisanje na relej %s (%s) je isteklo" -#: logsrvd/logsrvd_relay.c:909 +#: logsrvd/logsrvd_relay.c:911 msgid "timeout writing to relay" msgstr "vrijeme za pisanje na relej je isteklo" -#: logsrvd/logsrvd_relay.c:962 logsrvd/logsrvd_relay.c:969 -#: logsrvd/logsrvd_relay.c:981 +#: logsrvd/logsrvd_relay.c:964 logsrvd/logsrvd_relay.c:971 +#: logsrvd/logsrvd_relay.c:983 msgid "error writing to relay" msgstr "greška pri pisanju na relej" @@ -1272,79 +1290,79 @@ msgid "unable to get server IP addr" msgstr "nije moguće dobiti IP adresu servera" -#: logsrvd/sendlog.c:300 plugins/sudoers/sudoreplay.c:868 +#: logsrvd/sendlog.c:309 plugins/sudoers/sudoreplay.c:868 #, c-format msgid "unable to read %s/%s: %s" msgstr "nije moguće učitati %s/%s: %s" -#: logsrvd/sendlog.c:1020 plugins/sudoers/iolog.c:949 -#: plugins/sudoers/iolog.c:1024 +#: logsrvd/sendlog.c:1029 plugins/sudoers/iolog.c:948 +#: plugins/sudoers/iolog.c:1023 #, c-format msgid "unexpected I/O event %d" msgstr "neočekivani U/I događaj %d" -#: logsrvd/sendlog.c:1073 logsrvd/sendlog.c:1090 logsrvd/sendlog.c:1124 -#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1394 -#: plugins/sudoers/log_client.c:1462 plugins/sudoers/log_client.c:1501 +#: logsrvd/sendlog.c:1082 logsrvd/sendlog.c:1099 logsrvd/sendlog.c:1133 +#: plugins/sudoers/log_client.c:1126 plugins/sudoers/log_client.c:1402 +#: plugins/sudoers/log_client.c:1470 plugins/sudoers/log_client.c:1509 #, c-format msgid "%s: unexpected state %d" msgstr "%s: neočekivano stanje %d" -#: logsrvd/sendlog.c:1160 plugins/sudoers/log_client.c:1550 +#: logsrvd/sendlog.c:1169 plugins/sudoers/log_client.c:1558 #, c-format msgid "error message received from server: %s" msgstr "primljena je poruka o greškama od servera: %s" -#: logsrvd/sendlog.c:1173 plugins/sudoers/log_client.c:1563 +#: logsrvd/sendlog.c:1182 plugins/sudoers/log_client.c:1571 #, c-format msgid "abort message received from server: %s" msgstr "primljena je poruka za prekid (abort) od servera: %s" -#: logsrvd/sendlog.c:1232 plugins/sudoers/log_client.c:1613 +#: logsrvd/sendlog.c:1241 plugins/sudoers/log_client.c:1621 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: neočekivana ‘type_case’ vrijednost za %d" -#: logsrvd/sendlog.c:1261 +#: logsrvd/sendlog.c:1270 msgid "timeout reading from server" msgstr "isteklo je vrijeme za čitanje iz servera" -#: logsrvd/sendlog.c:1310 plugins/sudoers/log_client.c:1729 +#: logsrvd/sendlog.c:1319 plugins/sudoers/log_client.c:1743 msgid "host name does not match certificate" msgstr "ime hosta ne slaže se s certifikatom" -#: logsrvd/sendlog.c:1343 +#: logsrvd/sendlog.c:1352 msgid "premature EOF" msgstr "preuranjeni EOF (kraj datoteke)" -#: logsrvd/sendlog.c:1356 plugins/sudoers/log_client.c:1776 +#: logsrvd/sendlog.c:1365 plugins/sudoers/log_client.c:1790 #, c-format msgid "server message too large: %u" msgstr "poruka servera je prevelika: %u" -#: logsrvd/sendlog.c:1412 +#: logsrvd/sendlog.c:1421 msgid "timeout writing to server" msgstr "isteklo je vrijeme za pisanje na server" -#: logsrvd/sendlog.c:1779 +#: logsrvd/sendlog.c:1788 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:1783 +#: logsrvd/sendlog.c:1792 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:1859 +#: logsrvd/sendlog.c:1868 #, c-format msgid "exited prematurely with state %d" msgstr "preuranjeni završetak (izlaz) sa stanjem %d" -#: logsrvd/sendlog.c:1860 +#: logsrvd/sendlog.c:1869 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "proteklo vrijeme poslano je na server [%lld, %ld]" -#: logsrvd/sendlog.c:1862 +#: logsrvd/sendlog.c:1871 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "potvrđena točka primljena je od servera [%lld, %ld]" @@ -1402,12 +1420,12 @@ msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "nije mouguće uspostaviti minimalni protokol na TLS 1.2: %s" -#: plugins/sudoers/audit.c:269 plugins/sudoers/audit.c:429 -#: plugins/sudoers/log_client.c:951 plugins/sudoers/log_client.c:1000 -#: plugins/sudoers/log_client.c:1049 plugins/sudoers/log_client.c:1174 -#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:693 -#: plugins/sudoers/logging.c:796 plugins/sudoers/logging.c:987 -#: plugins/sudoers/policy.c:125 +#: plugins/sudoers/audit.c:268 plugins/sudoers/audit.c:428 +#: plugins/sudoers/log_client.c:959 plugins/sudoers/log_client.c:1008 +#: plugins/sudoers/log_client.c:1057 plugins/sudoers/log_client.c:1182 +#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:711 +#: plugins/sudoers/logging.c:833 plugins/sudoers/logging.c:1000 +#: plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "nije moguće dobiti doba dana (trenutno vrijeme)" @@ -1416,28 +1434,28 @@ msgid "unable to change password for %s" msgstr "nije moguće promijeniti lozinku za %s" -#: plugins/sudoers/auth/bsdauth.c:74 +#: plugins/sudoers/auth/bsdauth.c:77 #, c-format msgid "unable to get login class for user %s" msgstr "nije moguće dobiti razred klasu korisnika %s" -#: plugins/sudoers/auth/bsdauth.c:79 -msgid "unable to begin bsd authentication" -msgstr "nije moguće početi s BSD autentifikacijom" - -#: plugins/sudoers/auth/bsdauth.c:87 +#: plugins/sudoers/auth/bsdauth.c:84 msgid "invalid authentication type" msgstr "nevaljani tip autentifikacije" +#: plugins/sudoers/auth/bsdauth.c:89 +msgid "unable to begin BSD authentication" +msgstr "nije moguće započeti BSD autentifikaciju" + #: plugins/sudoers/auth/bsdauth.c:96 msgid "unable to initialize BSD authentication" msgstr "nije moguće inicijalizirati BSD autentifikaciju" -#: plugins/sudoers/auth/bsdauth.c:186 +#: plugins/sudoers/auth/bsdauth.c:188 msgid "your account has expired" msgstr "vaš račun nije valjan, istekao je" -#: plugins/sudoers/auth/bsdauth.c:188 +#: plugins/sudoers/auth/bsdauth.c:190 msgid "approval failed" msgstr "odobrenje nije uspjelo" @@ -1656,13 +1674,12 @@ "\n" #: plugins/sudoers/check.c:353 plugins/sudoers/check.c:363 -#: plugins/sudoers/parse.c:82 plugins/sudoers/sudoers.c:945 -#: plugins/sudoers/sudoers.c:966 plugins/sudoers/tsdump.c:119 +#: plugins/sudoers/parse.c:80 plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid %u" msgstr "nepoznati UID %u" -#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1279 +#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1278 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" @@ -1677,84 +1694,84 @@ msgid "%s \"%s\" referenced but not defined" msgstr "Greška: %s „%s“ je referenciran ali nije definiran" -#: plugins/sudoers/cvtsudoers.c:209 +#: plugins/sudoers/cvtsudoers.c:210 #, c-format msgid "order increment: %s: %s" msgstr "inkrement redoslijeda (order): %s: %s" -#: plugins/sudoers/cvtsudoers.c:228 +#: plugins/sudoers/cvtsudoers.c:229 #, c-format msgid "starting order: %s: %s" msgstr "početni redoslijed (order): %s: %s" -#: plugins/sudoers/cvtsudoers.c:238 +#: plugins/sudoers/cvtsudoers.c:239 #, c-format msgid "order padding: %s: %s" msgstr "ispuna redoslijeda (order): %s: %s" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/visudo.c:184 +#: plugins/sudoers/cvtsudoers.c:249 plugins/sudoers/visudo.c:188 #, c-format msgid "%s grammar version %d\n" msgstr "%s inačica gramatike %d\n" -#: plugins/sudoers/cvtsudoers.c:277 plugins/sudoers/testsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:278 plugins/sudoers/testsudoers.c:163 #, c-format msgid "unsupported input format %s" msgstr "nepodržani ulazni formata %s" -#: plugins/sudoers/cvtsudoers.c:295 +#: plugins/sudoers/cvtsudoers.c:296 #, c-format msgid "unsupported output format %s" msgstr "nepodržani izlazni format %s" -#: plugins/sudoers/cvtsudoers.c:385 +#: plugins/sudoers/cvtsudoers.c:386 #, c-format msgid "%s: input and output files must be different" msgstr "%s: ulazna i izlazna datoteka moraju biti različite datoteke" -#: plugins/sudoers/cvtsudoers.c:399 plugins/sudoers/sudoers.c:166 -#: plugins/sudoers/sudoers.c:222 plugins/sudoers/testsudoers.c:254 -#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:654 +#: plugins/sudoers/cvtsudoers.c:400 plugins/sudoers/sudoers.c:163 +#: plugins/sudoers/sudoers.c:221 plugins/sudoers/testsudoers.c:263 +#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:657 msgid "unable to initialize sudoers default values" msgstr "nije moguće inicijalizirati zadane vrijednosti sudoers" -#: plugins/sudoers/cvtsudoers.c:525 plugins/sudoers/ldap_conf.c:434 +#: plugins/sudoers/cvtsudoers.c:526 plugins/sudoers/ldap_conf.c:431 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" -#: plugins/sudoers/cvtsudoers.c:584 +#: plugins/sudoers/cvtsudoers.c:605 #, c-format msgid "%s: unknown key word %s" msgstr "%s: nepoznata ključna riječ %s" -#: plugins/sudoers/cvtsudoers.c:630 +#: plugins/sudoers/cvtsudoers.c:651 #, c-format msgid "invalid defaults type: %s" msgstr "nevaljani zadani tip: %s" -#: plugins/sudoers/cvtsudoers.c:653 +#: plugins/sudoers/cvtsudoers.c:674 #, c-format msgid "invalid suppression type: %s" msgstr "nevaljani tip za suzbijanje: %s" -#: plugins/sudoers/cvtsudoers.c:694 plugins/sudoers/cvtsudoers.c:710 +#: plugins/sudoers/cvtsudoers.c:715 plugins/sudoers/cvtsudoers.c:731 #, c-format msgid "invalid filter: %s" msgstr "nevaljani filtar: %s" -#: plugins/sudoers/cvtsudoers.c:754 plugins/sudoers/visudo.c:982 +#: plugins/sudoers/cvtsudoers.c:775 plugins/sudoers/visudo.c:992 #, c-format msgid "failed to parse %s file, unknown error" msgstr "nije uspjelo raščlaniti %s datoteku, nepoznata greška" -#: plugins/sudoers/cvtsudoers.c:1478 plugins/sudoers/sudoreplay.c:1142 -#: plugins/sudoers/timestamp.c:343 plugins/sudoers/timestamp.c:346 +#: plugins/sudoers/cvtsudoers.c:1499 plugins/sudoers/sudoreplay.c:1142 +#: plugins/sudoers/timestamp.c:368 plugins/sudoers/timestamp.c:371 #, c-format msgid "unable to write to %s" msgstr "nije moguće pisati u %s" -#: plugins/sudoers/cvtsudoers.c:1506 +#: plugins/sudoers/cvtsudoers.c:1527 #, c-format msgid "" "%s - convert between sudoers file formats\n" @@ -1763,7 +1780,7 @@ "%s - pretvara formate sudoers datoteka\n" "\n" -#: plugins/sudoers/cvtsudoers.c:1508 +#: plugins/sudoers/cvtsudoers.c:1529 msgid "" "\n" "Options:\n" @@ -1807,37 +1824,36 @@ #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 #: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:340 #: plugins/sudoers/env.c:347 plugins/sudoers/env.c:458 -#: plugins/sudoers/ldap.c:528 plugins/sudoers/ldap.c:761 -#: plugins/sudoers/ldap.c:1134 plugins/sudoers/ldap_conf.c:222 -#: plugins/sudoers/ldap_conf.c:313 plugins/sudoers/ldap_util.c:486 +#: plugins/sudoers/ldap.c:509 plugins/sudoers/ldap.c:626 +#: plugins/sudoers/ldap.c:999 plugins/sudoers/ldap_conf.c:219 +#: plugins/sudoers/ldap_conf.c:310 plugins/sudoers/ldap_util.c:486 #: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:461 -#: plugins/sudoers/logging.c:817 plugins/sudoers/logging.c:827 -#: plugins/sudoers/policy.c:807 plugins/sudoers/policy.c:818 +#: plugins/sudoers/policy.c:824 plugins/sudoers/policy.c:835 #: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 #: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/sudoreplay.c:1339 plugins/sudoers/sudoreplay.c:1345 -#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/toke_util.c:213 toke.l:995 toke.l:1197 +#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/toke_util.c:213 toke.l:996 toke.l:1259 #, c-format msgid "internal error, %s overflow" -msgstr "**interna greška**, %s prelijevanje" +msgstr "**interna greška**, %s prekoračenje" -#: plugins/sudoers/cvtsudoers_csv.c:452 plugins/sudoers/cvtsudoers_csv.c:466 -#: plugins/sudoers/cvtsudoers_json.c:657 plugins/sudoers/cvtsudoers_json.c:672 +#: plugins/sudoers/cvtsudoers_csv.c:454 plugins/sudoers/cvtsudoers_csv.c:468 +#: plugins/sudoers/cvtsudoers_json.c:661 plugins/sudoers/cvtsudoers_json.c:676 #: plugins/sudoers/cvtsudoers_ldif.c:347 plugins/sudoers/cvtsudoers_ldif.c:360 -#: plugins/sudoers/ldap.c:512 +#: plugins/sudoers/ldap.c:493 msgid "unable to get GMT time" msgstr "nije moguće dobiti GMT vrijeme" -#: plugins/sudoers/cvtsudoers_csv.c:457 plugins/sudoers/cvtsudoers_csv.c:471 -#: plugins/sudoers/cvtsudoers_json.c:662 plugins/sudoers/cvtsudoers_json.c:677 +#: plugins/sudoers/cvtsudoers_csv.c:459 plugins/sudoers/cvtsudoers_csv.c:473 +#: plugins/sudoers/cvtsudoers_json.c:666 plugins/sudoers/cvtsudoers_json.c:681 #: plugins/sudoers/cvtsudoers_ldif.c:352 plugins/sudoers/cvtsudoers_ldif.c:365 -#: plugins/sudoers/ldap.c:520 +#: plugins/sudoers/ldap.c:501 msgid "unable to format timestamp" msgstr "nije moguće oblikovati vremensku oznaku" -#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:515 -#: plugins/sudoers/cvtsudoers_json.c:728 +#: plugins/sudoers/cvtsudoers_json.c:481 plugins/sudoers/cvtsudoers_json.c:516 +#: plugins/sudoers/cvtsudoers_json.c:732 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" msgstr "%s:%d:%d: nepoznata zadana stavka „%s“" @@ -2125,7 +2141,7 @@ #: plugins/sudoers/def_data.c:256 msgid "If set, passprompt will override system prompt in all cases." -msgstr "Ako je postavljen, passprompt će zamijeniti prompt sustava u svim slučajevima." +msgstr "Ako je postavljen, passprompt će redefinirati prompt sustava u svim slučajevima." #: plugins/sudoers/def_data.c:260 #, c-format @@ -2163,11 +2179,11 @@ #: plugins/sudoers/def_data.c:288 #, c-format msgid "File descriptors >= %d will be closed before executing a command" -msgstr "Deskriptori datoteka >= %d biti će zatvoreni prije izvršavanja naredbe" +msgstr "Deskriptori datoteka >= %d bit će zatvoreni prije izvršavanja naredbe" #: plugins/sudoers/def_data.c:292 msgid "If set, users may override the value of \"closefrom\" with the -C option" -msgstr "Ako je postavljena, korisnici mogu s opcijom -C promijeniti vrijednost od „closefrom“" +msgstr "Ako je dana, korisnici mogu s opcijom -C redefinirati vrijednost od „closefrom“" #: plugins/sudoers/def_data.c:296 msgid "Allow users to set arbitrary environment variables" @@ -2228,7 +2244,7 @@ #: plugins/sudoers/def_data.c:348 msgid "The umask specified in sudoers will override the user's, even if it is more permissive" -msgstr "U sudoers specificirani umask zamijeniti će korisnički čak i ako je tolerantniji" +msgstr "umask, specificiran u sudoers redefinira korisnički, čak i ako je tolerantniji" #: plugins/sudoers/def_data.c:352 msgid "Log user's input for the command being run" @@ -2345,7 +2361,7 @@ #: plugins/sudoers/def_data.c:456 msgid "Follow symbolic links when editing files with sudoedit" -msgstr "Slijedi simboličke veze kad se koristi sudoedit za uređivanje datoteka" +msgstr "Slijedi simboličke poveznice kad se koristi sudoedit za uređivanje datoteka" #: plugins/sudoers/def_data.c:460 msgid "Query the group plugin for unknown system groups" @@ -2646,18 +2662,18 @@ msgid "value \"%s\" is invalid for option \"%s\"" msgstr "vrijednost „%s“ nije ispravna za opciju „%s“" -#: plugins/sudoers/defaults.c:1128 plugins/sudoers/policy.c:210 -#: plugins/sudoers/policy.c:219 +#: plugins/sudoers/defaults.c:1127 plugins/sudoers/policy.c:205 +#: plugins/sudoers/policy.c:214 #, c-format msgid "path name for \"%s\" too long" msgstr "ime staze za „%s“ je predugo" -#: plugins/sudoers/defaults.c:1134 +#: plugins/sudoers/defaults.c:1133 #, c-format msgid "values for \"%s\" must start with a '/', '~', or '*'" msgstr "vrijednost za „%s“ mora započeti s „/“, „~“, ili „*“" -#: plugins/sudoers/defaults.c:1141 +#: plugins/sudoers/defaults.c:1140 #, c-format msgid "values for \"%s\" must start with a '/'" msgstr "vrijednost za „%s“ mora početi s „/“" @@ -2684,12 +2700,12 @@ 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/filedigest.c:49 +#: plugins/sudoers/filedigest.c:50 #, c-format -msgid "unsupported digest type %d for %s" -msgstr "nepodržani tip kontrolnog zbroja %d za %s" +msgid "unsupported digest type %u for %s" +msgstr "nepodržani tip kontrolnog zbroja %u za %s" -#: plugins/sudoers/filedigest.c:78 +#: plugins/sudoers/filedigest.c:79 #, c-format msgid "%s: read error" msgstr "%s: greška pri čitanju" @@ -2723,80 +2739,80 @@ msgid "Local IP address and netmask pairs:\n" msgstr "Parovi lokalnih IP adresa i mrežnih maski:\n" -#: plugins/sudoers/iolog.c:685 +#: plugins/sudoers/iolog.c:684 msgid "unable to update sequence file" msgstr "nije moguće ažurirati datoteku redoslijeda (sequence file)" -#: plugins/sudoers/iolog.c:719 plugins/sudoers/iolog.c:907 -#: plugins/sudoers/iolog.c:1069 plugins/sudoers/iolog.c:1076 -#: plugins/sudoers/iolog.c:1197 plugins/sudoers/iolog.c:1204 -#: plugins/sudoers/iolog.c:1303 plugins/sudoers/iolog.c:1310 +#: plugins/sudoers/iolog.c:718 plugins/sudoers/iolog.c:906 +#: plugins/sudoers/iolog.c:1068 plugins/sudoers/iolog.c:1075 +#: plugins/sudoers/iolog.c:1196 plugins/sudoers/iolog.c:1203 +#: plugins/sudoers/iolog.c:1302 plugins/sudoers/iolog.c:1309 #, 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:727 +#: plugins/sudoers/iolog.c:726 #, c-format msgid "unable to create %s/%s" msgstr "nije moguće stvoriti %s/%s" -#: plugins/sudoers/iolog.c:955 +#: plugins/sudoers/iolog.c:954 #, 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:1054 plugins/sudoers/iolog.c:1182 -#: plugins/sudoers/iolog.c:1287 plugins/sudoers/timestamp.c:879 -#: plugins/sudoers/timestamp.c:971 plugins/sudoers/visudo.c:556 -#: plugins/sudoers/visudo.c:562 +#: plugins/sudoers/iolog.c:1053 plugins/sudoers/iolog.c:1181 +#: plugins/sudoers/iolog.c:1286 plugins/sudoers/timestamp.c:904 +#: plugins/sudoers/timestamp.c:996 plugins/sudoers/visudo.c:559 +#: plugins/sudoers/visudo.c:565 msgid "unable to read the clock" msgstr "nije moguće pročitati vrijeme (clock)" -#: plugins/sudoers/iolog.c:1279 plugins/sudoers/log_client.c:1192 -#: plugins/sudoers/log_client.c:1202 plugins/sudoers/log_client.c:1206 +#: plugins/sudoers/iolog.c:1278 plugins/sudoers/log_client.c:1200 +#: plugins/sudoers/log_client.c:1210 plugins/sudoers/log_client.c:1214 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: interna greška, nevaljani signal %d" -#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:292 +#: plugins/sudoers/ldap.c:154 plugins/sudoers/ldap_conf.c:289 msgid "starttls not supported when using ldaps" msgstr "starttls nije podržan kad se koristi ldaps" -#: plugins/sudoers/ldap.c:248 +#: plugins/sudoers/ldap.c:225 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "nije moguće inicijalizirati SSL certifikat i bazu podataka ključeva: %s" -#: plugins/sudoers/ldap.c:251 +#: plugins/sudoers/ldap.c:228 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "morate postaviti TLS_CERT u %s da koristite SSL" -#: plugins/sudoers/ldap.c:1714 +#: plugins/sudoers/ldap.c:1587 #, c-format msgid "unable to initialize LDAP: %s" msgstr "nije moguće inicijalizirati LDAP: %s" -#: plugins/sudoers/ldap.c:1751 +#: plugins/sudoers/ldap.c:1624 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "start_tls je specificirani, ali LDAP biblioteke ne podržavaju ldap_start_tls_s() ili ldap_start_tls_s_np()" -#: plugins/sudoers/ldap.c:1888 plugins/sudoers/parse_ldif.c:748 +#: plugins/sudoers/ldap.c:1761 plugins/sudoers/parse_ldif.c:748 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "nevaljani sudoOrder atribut: %s" -#: plugins/sudoers/ldap_conf.c:200 +#: plugins/sudoers/ldap_conf.c:197 #, c-format msgid "%s: port too large" msgstr "%s: preveliki port" -#: plugins/sudoers/ldap_conf.c:261 +#: plugins/sudoers/ldap_conf.c:258 #, c-format msgid "unsupported LDAP uri type: %s" msgstr "nepodržani tip adrese LDAP: %s" -#: plugins/sudoers/ldap_conf.c:288 +#: plugins/sudoers/ldap_conf.c:285 msgid "unable to mix ldap and ldaps URIs" msgstr "ne možete zajedno koristiti ldap i ldaps adrese" @@ -2822,7 +2838,7 @@ msgstr "nije moguće poslati revizijsku poruku" #: plugins/sudoers/log_client.c:125 plugins/sudoers/log_client.c:412 -#: plugins/sudoers/log_client.c:1439 plugins/sudoers/log_client.c:2055 +#: plugins/sudoers/log_client.c:1447 plugins/sudoers/log_client.c:2069 msgid "error in event loop" msgstr "greška u petlji događaja" @@ -2856,28 +2872,28 @@ msgid "TLS connection to %s:%s failed: %s" msgstr "TLS veza sa %s:%s nije uspjela: %s" -#: plugins/sudoers/log_client.c:543 +#: plugins/sudoers/log_client.c:545 msgid "TLS initialization was unsuccessful" msgstr "TLS inicijalizacija nije bila uspješna" -#: plugins/sudoers/log_client.c:553 +#: plugins/sudoers/log_client.c:555 msgid "TLS handshake was unsuccessful" msgstr "TLS rukovanje (handshake) nije bila uspješno" -#: plugins/sudoers/log_client.c:1210 +#: plugins/sudoers/log_client.c:1218 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: **interna greška** -- nevaljani izlazni status %d" -#: plugins/sudoers/log_client.c:1739 plugins/sudoers/log_client.c:1763 +#: plugins/sudoers/log_client.c:1753 plugins/sudoers/log_client.c:1777 msgid "lost connection to log server" msgstr "veza sa serverom za autentifikaciju je prekinuta (izgubljena je)" -#: plugins/sudoers/log_client.c:1840 +#: plugins/sudoers/log_client.c:1854 msgid "missing write buffer" msgstr "nema međuspremnika za pisanje" -#: plugins/sudoers/log_client.c:1994 +#: plugins/sudoers/log_client.c:2008 msgid "unable to connect to log server" msgstr "nije moguće spojiti se na dnevnički server" @@ -2913,22 +2929,22 @@ #: plugins/sudoers/logging.c:324 #, 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" +msgid "Sorry, user %s is not allowed to execute '%s%s%s%s' as %s%s%s on %s.\n" +msgstr "Korisniku %s nije dopušteno izvršiti ‘%s%s%s%s’ kao %s%s%s na %s.\n" #: plugins/sudoers/logging.c:334 msgid "This incident has been reported to the administrator.\n" msgstr "Ovaj incident bit će prijavljen administratoru.\n" -#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:657 plugins/sudoers/sudoers.c:659 -#: plugins/sudoers/sudoers.c:661 plugins/sudoers/sudoers.c:816 -#: plugins/sudoers/sudoers.c:818 +#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:566 +#: plugins/sudoers/sudoers.c:567 plugins/sudoers/sudoers.c:569 +#: plugins/sudoers/sudoers.c:570 plugins/sudoers/sudoers.c:791 +#: plugins/sudoers/sudoers.c:793 #, c-format msgid "%s: command not found" msgstr "%s: naredba nije pronađena" -#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:651 +#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:562 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2953,31 +2969,31 @@ msgid "a password is required" msgstr "nužna je lozinka" -#: plugins/sudoers/logging.c:803 plugins/sudoers/logging.c:815 +#: plugins/sudoers/logging.c:855 msgid "problem parsing sudoers" msgstr "problem sa sudoers raščlanivanjem" -#: plugins/sudoers/logging.c:877 plugins/sudoers/logging.c:889 +#: plugins/sudoers/logging.c:896 plugins/sudoers/logging.c:904 #, c-format msgid "%s:%d:%d: %s" msgstr "%s:%d:%d: %s" -#: plugins/sudoers/logging.c:1066 +#: plugins/sudoers/logging.c:1079 #, c-format msgid "unable to write log file: %s" msgstr "nije moguće pisati u dnevničku datoteku: %s" -#: plugins/sudoers/match_digest.c:112 +#: plugins/sudoers/match_digest.c:101 #, c-format msgid "digest for %s (%s) bad length %zu, expected %zu" msgstr "kontrolni zbroj za %s (%s) ima lošu dužinu %zu, očekivana je %zu" -#: plugins/sudoers/match_digest.c:131 +#: plugins/sudoers/match_digest.c:120 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "kontrolni zbroj za %s (%s) nije u %s obliku" -#: plugins/sudoers/parse.c:631 +#: plugins/sudoers/parse.c:643 #, c-format msgid "" "\n" @@ -2986,7 +3002,7 @@ "\n" "LDAP uloga: %s\n" -#: plugins/sudoers/parse.c:634 +#: plugins/sudoers/parse.c:646 msgid "" "\n" "Sudoers entry:\n" @@ -2994,38 +3010,38 @@ "\n" "Sudoers stavka:\n" -#: plugins/sudoers/parse.c:636 +#: plugins/sudoers/parse.c:648 msgid " RunAsUsers: " msgstr " RunAsUsers: " -#: plugins/sudoers/parse.c:651 +#: plugins/sudoers/parse.c:663 msgid " RunAsGroups: " msgstr " RunAsGroups: " -#: plugins/sudoers/parse.c:661 +#: plugins/sudoers/parse.c:673 msgid " Options: " msgstr " Opcije: " -#: plugins/sudoers/parse.c:725 +#: plugins/sudoers/parse.c:737 msgid " Commands:\n" msgstr " Naredbe:\n" -#: plugins/sudoers/parse.c:916 +#: plugins/sudoers/parse.c:928 #, 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:934 +#: plugins/sudoers/parse.c:946 #, 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:952 +#: plugins/sudoers/parse.c:964 #, 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:967 +#: plugins/sudoers/parse.c:979 #, 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" @@ -3040,64 +3056,72 @@ msgid "invalid LDIF attribute: %s" msgstr "nevaljani LDIF atribut: %s" -#: plugins/sudoers/policy.c:82 plugins/sudoers/policy.c:113 +#: plugins/sudoers/pivot.c:74 +msgid "unable to restore root directory" +msgstr "nije moguće obnoviti korijenski (root) direktorij" + +#: plugins/sudoers/pivot.c:82 +msgid "unable to restore current working directory" +msgstr "nije moguće obnoviti trenutni radni direktorij" + +#: 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:360 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:356 plugins/sudoers/testsudoers.c:277 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:528 +#: plugins/sudoers/policy.c:524 msgid "user name not set by sudo front-end" msgstr "ime korisnika nije postavio front-end sudo-a" -#: plugins/sudoers/policy.c:532 +#: plugins/sudoers/policy.c:528 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:536 +#: plugins/sudoers/policy.c:532 msgid "group-ID not set by sudo front-end" msgstr "groupni ID (group-ID) nije postavio front-end sudo-a" -#: plugins/sudoers/policy.c:540 +#: plugins/sudoers/policy.c:536 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:737 +#: plugins/sudoers/policy.c:754 #, c-format msgid "invalid working directory: %s" msgstr "nevaljani radni direktorij: %s" -#: plugins/sudoers/policy.c:921 +#: plugins/sudoers/policy.c:938 #, c-format msgid "invalid chroot directory: %s" msgstr "nevaljani chroot direktorij: %s" -#: plugins/sudoers/policy.c:1108 plugins/sudoers/visudo.c:259 -#: plugins/sudoers/visudo.c:906 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/visudo.c:910 +#: plugins/sudoers/visudo.c:1209 #, c-format msgid "unable to execute %s" msgstr "nije moguće izvršiti %s" -#: plugins/sudoers/policy.c:1178 plugins/sudoers/policy.c:1215 -#: plugins/sudoers/policy.c:1237 plugins/sudoers/policy.c:1263 +#: plugins/sudoers/policy.c:1195 plugins/sudoers/policy.c:1230 +#: plugins/sudoers/policy.c:1252 plugins/sudoers/policy.c:1274 #, 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:1299 +#: plugins/sudoers/policy.c:1294 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Inačica sudoers plugina s pravilima %s\n" -#: plugins/sudoers/policy.c:1301 +#: plugins/sudoers/policy.c:1296 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Inačica sudoers datotečne gramatike %d\n" -#: plugins/sudoers/policy.c:1305 +#: plugins/sudoers/policy.c:1300 #, c-format msgid "" "\n" @@ -3106,29 +3130,29 @@ "\n" "Staza do sudoers: %s\n" -#: plugins/sudoers/policy.c:1308 +#: plugins/sudoers/policy.c:1303 #, c-format msgid "nsswitch path: %s\n" msgstr "nsswitch staza: %s\n" -#: plugins/sudoers/policy.c:1310 +#: plugins/sudoers/policy.c:1305 #, c-format msgid "ldap.conf path: %s\n" msgstr "ldap.conf staza: %s\n" -#: plugins/sudoers/policy.c:1311 +#: plugins/sudoers/policy.c:1306 #, 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:1344 +#: plugins/sudoers/policy.c:1339 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "nije moguće registrirati rutinu (hook) tipa %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:1362 +#: plugins/sudoers/policy.c:1357 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "nije moguće poništiti registraciju tipa (hook) %d (inačica %d.%d)" @@ -3197,48 +3221,48 @@ 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:445 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 -#: plugins/sudoers/set_perms.c:1460 +#: plugins/sudoers/set_perms.c:115 plugins/sudoers/set_perms.c:451 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1178 +#: plugins/sudoers/set_perms.c:1481 msgid "perm stack overflow" -msgstr "prelijevanje snopa s pravima pristupa" +msgstr "prekoračenje snopa s pravima pristupa" -#: 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 +#: plugins/sudoers/set_perms.c:126 plugins/sudoers/set_perms.c:382 +#: plugins/sudoers/set_perms.c:462 plugins/sudoers/set_perms.c:730 +#: plugins/sudoers/set_perms.c:874 plugins/sudoers/set_perms.c:1102 +#: plugins/sudoers/set_perms.c:1189 plugins/sudoers/set_perms.c:1414 +#: plugins/sudoers/set_perms.c:1492 plugins/sudoers/set_perms.c:1583 msgid "perm stack underflow" msgstr "iscrpljenje snopa s pravima pristupa" -#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 -#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 +#: plugins/sudoers/set_perms.c:186 plugins/sudoers/set_perms.c:509 +#: plugins/sudoers/set_perms.c:1243 plugins/sudoers/set_perms.c:1526 msgid "unable to change to root gid" msgstr "nije moguće promijeniti na GID od root" -#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 -#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 +#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:606 +#: plugins/sudoers/set_perms.c:1006 plugins/sudoers/set_perms.c:1320 msgid "unable to change to runas gid" msgstr "nije moguće promijeniti na runas GID" -#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 -#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 +#: plugins/sudoers/set_perms.c:282 plugins/sudoers/set_perms.c:611 +#: plugins/sudoers/set_perms.c:1011 plugins/sudoers/set_perms.c:1325 msgid "unable to set runas group vector" msgstr "nije moguće postaviti runas grupni vektor" -#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 -#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:293 plugins/sudoers/set_perms.c:622 +#: plugins/sudoers/set_perms.c:1020 plugins/sudoers/set_perms.c:1334 msgid "unable to change to runas uid" msgstr "nije moguće promijeniti na runas UID" -#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 -#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 +#: plugins/sudoers/set_perms.c:315 plugins/sudoers/set_perms.c:644 +#: plugins/sudoers/set_perms.c:1040 plugins/sudoers/set_perms.c:1354 msgid "unable to change to sudoers gid" msgstr "nije moguće promijeniti na sudoers GID" -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 msgid "too many processes" msgstr "previše procesa" @@ -3267,150 +3291,150 @@ msgid "unable to find symbol \"%s\" in %s" msgstr "nije moguće pronaći simbol „%s“ u %s" -#: plugins/sudoers/sudoers.c:263 +#: plugins/sudoers/sudoers.c:261 #, c-format msgid "unable to get defaults from %s" msgstr "nije moguće dobiti zadane vrijednosti (defaults) od %s" -#: plugins/sudoers/sudoers.c:270 +#: plugins/sudoers/sudoers.c:268 msgid "no valid sudoers sources found, quitting" msgstr "nisu pronađeni valjani sudoers izvori, kraj rada" -#: plugins/sudoers/sudoers.c:346 +#: plugins/sudoers/sudoers.c:344 #, 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:348 +#: plugins/sudoers/sudoers.c:346 #, 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:373 +#: plugins/sudoers/sudoers.c:371 #, c-format msgid "user not allowed to change directory to %s" msgstr "korisniku nije dopušteno promijeniti direktorij na %s" -#: plugins/sudoers/sudoers.c:374 +#: plugins/sudoers/sudoers.c:372 #, 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:401 -msgid "no command specified" -msgstr "nijedna naredba nije specificirana" - -#: plugins/sudoers/sudoers.c:426 +#: plugins/sudoers/sudoers.c:412 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers specificira da root ne može koristiti sudo" -#: plugins/sudoers/sudoers.c:483 +#: plugins/sudoers/sudoers.c:421 msgid "user not allowed to override closefrom limit" -msgstr "korisniku nije dopušteno promijeniti ograničenje od ‘closefrom’" +msgstr "korisniku nije dopušteno redefinirati ograničenje od ‘closefrom’" -#: plugins/sudoers/sudoers.c:484 +#: plugins/sudoers/sudoers.c:422 msgid "you are not permitted to use the -C option" msgstr "vama nije dopušteno koristi opciju -C" -#: plugins/sudoers/sudoers.c:544 -#, c-format -msgid "timestamp owner (%s): No such user" -msgstr "vlasnik vremenske oznake (%s): Nema takvog korisnika" - -#: plugins/sudoers/sudoers.c:559 +#: plugins/sudoers/sudoers.c:468 msgid "no tty" msgstr "nema TTY" -#: plugins/sudoers/sudoers.c:560 +#: plugins/sudoers/sudoers.c:469 msgid "sorry, you must have a tty to run sudo" msgstr "nažalost, da pokrenete sudo morate imati TTY" -#: plugins/sudoers/sudoers.c:567 +#: plugins/sudoers/sudoers.c:477 #, c-format msgid "invalid shell for user %s: %s" msgstr "nevaljana ljuska za korisnika %s: %s" -#: plugins/sudoers/sudoers.c:650 +#: plugins/sudoers/sudoers.c:561 msgid "command in current directory" msgstr "naredba u trenutnom direktoriju" -#: plugins/sudoers/sudoers.c:665 +#: plugins/sudoers/sudoers.c:574 msgid "\"cd\" is a shell built-in command, it cannot be run directly." msgstr "„cd“ naredba je ugrađena u ljusku, ne može se izravno pokrenuti." -#: plugins/sudoers/sudoers.c:667 +#: plugins/sudoers/sudoers.c:576 msgid "the -s option may be used to run a privileged shell." msgstr "opcija -s može se koristiti za pokretanje privilegirane ljuske." -#: plugins/sudoers/sudoers.c:669 +#: plugins/sudoers/sudoers.c:578 msgid "the -D option may be used to run a command in a specific directory." msgstr "opcija -D može se koristiti za pokretanje naredbe u određenom direktoriju." -#: plugins/sudoers/sudoers.c:678 +#: plugins/sudoers/sudoers.c:587 msgid "user not allowed to set a command timeout" msgstr "korisniku nije dopušteno postavljanje tajmaut naredbe" -#: plugins/sudoers/sudoers.c:680 +#: plugins/sudoers/sudoers.c:589 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:688 +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to preserve the environment" msgstr "korisniku nije dopušteno sačuvati okolinu" -#: plugins/sudoers/sudoers.c:690 +#: plugins/sudoers/sudoers.c:599 msgid "sorry, you are not allowed to preserve the environment" msgstr "vama nije dopušteno zadržati okolinu" -#: plugins/sudoers/sudoers.c:799 +#: plugins/sudoers/sudoers.c:635 +msgid "no command specified" +msgstr "nijedna naredba nije specificirana" + +#: plugins/sudoers/sudoers.c:774 msgid "error setting user-specified environment variables" msgstr "pogreška pri postavljanju korisnikom specificiranih varijabli okruženja" -#: plugins/sudoers/sudoers.c:1112 +#: plugins/sudoers/sudoers.c:1239 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit se ne mora pokrenuti sa sudo" -#: plugins/sudoers/sudoers.c:1157 plugins/sudoers/sudoreplay.c:1612 +#: plugins/sudoers/sudoers.c:1314 plugins/sudoers/sudoreplay.c:1612 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "nije moguće pročitati %s" -#: plugins/sudoers/sudoers.c:1186 plugins/sudoers/visudo.c:1066 +#: plugins/sudoers/sudoers.c:1337 plugins/sudoers/visudo.c:1114 #, c-format msgid "%s is not a regular file" msgstr "%s nije obična datoteka" -#: plugins/sudoers/sudoers.c:1190 plugins/sudoers/timestamp.c:263 toke.l:1255 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/timestamp.c:288 toke.l:1325 #, 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:1194 plugins/sudoers/timestamp.c:270 toke.l:1260 +#: plugins/sudoers/sudoers.c:1345 plugins/sudoers/timestamp.c:295 toke.l:1330 #, c-format msgid "%s is world writable" msgstr "%s smije svatko mijenjati/pisati" -#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/timestamp.c:275 toke.l:1263 +#: plugins/sudoers/sudoers.c:1349 plugins/sudoers/timestamp.c:300 toke.l:1333 #, 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:1233 +#: plugins/sudoers/sudoers.c:1377 #, c-format msgid "only root can use \"-c %s\"" msgstr "samo root može koristiti „-c %s“" -#: plugins/sudoers/sudoers.c:1252 +#: plugins/sudoers/sudoers.c:1396 #, c-format msgid "unknown login class %s" msgstr "nepoznata klasa prijave %s" -#: plugins/sudoers/sudoers.c:1339 plugins/sudoers/sudoers.c:1354 +#: plugins/sudoers/sudoers.c:1483 plugins/sudoers/sudoers.c:1498 #, c-format msgid "unable to resolve host %s" msgstr "nije moguće pronaći računalo %s" +#: plugins/sudoers/sudoers.c:1636 +#, c-format +msgid "%s:%d:%d timestampowner: unknown user %s" +msgstr "%s:%d:%d timestampowner: nepoznati korisnik %s" + #: plugins/sudoers/sudoreplay.c:252 #, c-format msgid "invalid filter option: %s" @@ -3552,11 +3576,11 @@ " -s, --speed=num ubrza ili uspori reprodukciju\n" " -V, --version informira o inačici ovog programa i iziđe" -#: plugins/sudoers/testsudoers.c:344 +#: plugins/sudoers/testsudoers.c:355 msgid "\thost unmatched" msgstr "\tračunalo se ne podudara" -#: plugins/sudoers/testsudoers.c:347 +#: plugins/sudoers/testsudoers.c:358 msgid "" "\n" "Command allowed" @@ -3564,7 +3588,7 @@ "\n" "Naredba je dopuštena." -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command denied" @@ -3572,7 +3596,7 @@ "\n" "Naredba nije dopuštena" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command unmatched" @@ -3580,21 +3604,21 @@ "\n" "Naredba nije prepoznata" -#: plugins/sudoers/timestamp.c:354 plugins/sudoers/timestamp.c:693 +#: plugins/sudoers/timestamp.c:379 plugins/sudoers/timestamp.c:718 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "nije moguće skratiti datoteku s vremenskim podacima na %lld bajtova" -#: plugins/sudoers/timestamp.c:890 +#: plugins/sudoers/timestamp.c:915 msgid "ignoring time stamp from the future" msgstr "zanemarena vremenska oznaka iz budućnosti" -#: plugins/sudoers/timestamp.c:913 +#: plugins/sudoers/timestamp.c:938 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "vremenska oznaka je predaleko u budućnosti: %20.20s" -#: plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1067 #, c-format msgid "unable to lock time stamp file %s" msgstr "nije moguće zaključati datoteku s vremenskim oznakama %s" @@ -3603,99 +3627,91 @@ msgid "sudoedit should not be specified with a path" msgstr "sudoedit se ne smije specificirati sa stazom" -#: plugins/sudoers/visudo.c:254 -msgid "the -x option will be removed in a future release" -msgstr "opcija -x biti će uklonjena iz buduće inačice" - -#: plugins/sudoers/visudo.c:256 -msgid "please consider using the cvtsudoers utility instead" -msgstr "molimo da umjesto toga pokušate rabiti cvtsudoers uslužni program" - -#: plugins/sudoers/visudo.c:311 plugins/sudoers/visudo.c:702 +#: plugins/sudoers/visudo.c:314 plugins/sudoers/visudo.c:705 #, c-format msgid "press return to edit %s: " msgstr "pritisnite return/enter za redigirati %s: " -#: plugins/sudoers/visudo.c:326 +#: plugins/sudoers/visudo.c:329 #, c-format msgid "contents of edit session left in %s" msgstr "sadržaj sesije uređivanja je ostavljen u %s" -#: plugins/sudoers/visudo.c:403 +#: plugins/sudoers/visudo.c:406 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "navedeni uređivač (%s) ne postoji" -#: plugins/sudoers/visudo.c:408 +#: plugins/sudoers/visudo.c:411 #, c-format msgid "no editor found (editor path = %s)" msgstr "nijedan uređivač nije pronađen (editor path = %s)" -#: plugins/sudoers/visudo.c:495 plugins/sudoers/visudo.c:774 +#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:777 #, c-format msgid "unable to stat %s" msgstr "nije moguće dobiti status od %s" -#: plugins/sudoers/visudo.c:515 plugins/sudoers/visudo.c:523 +#: plugins/sudoers/visudo.c:518 plugins/sudoers/visudo.c:526 msgid "write error" msgstr "greška pri pisanju" -#: plugins/sudoers/visudo.c:569 +#: plugins/sudoers/visudo.c:572 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "nije moguće dobiti status privremene datoteke (%s), %s nije promijenjena" -#: plugins/sudoers/visudo.c:576 +#: plugins/sudoers/visudo.c:579 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "privremena datoteka duljine nula (%s), %s nije promijenjena" -#: plugins/sudoers/visudo.c:582 +#: plugins/sudoers/visudo.c:585 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "greška uređivač (%s), %s nije promijenjena" -#: plugins/sudoers/visudo.c:604 +#: plugins/sudoers/visudo.c:607 #, c-format msgid "%s unchanged" msgstr "%s nije promijenjeno" -#: plugins/sudoers/visudo.c:649 +#: plugins/sudoers/visudo.c:652 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "nije moguće ponovo otvoriti privremenu datoteku (%s), %s nije promijenjena." -#: plugins/sudoers/visudo.c:662 +#: plugins/sudoers/visudo.c:665 #, c-format msgid "unable to parse temporary file (%s), unknown error" msgstr "nije moguće razabrati privremenu datoteku (%s) -- nepoznata greška" -#: plugins/sudoers/visudo.c:748 plugins/sudoers/visudo.c:778 -#: plugins/sudoers/visudo.c:785 +#: plugins/sudoers/visudo.c:751 plugins/sudoers/visudo.c:781 +#: plugins/sudoers/visudo.c:788 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "nije moguće postaviti (UID, GID) od %s na (%u, %u)" -#: plugins/sudoers/visudo.c:813 +#: plugins/sudoers/visudo.c:816 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "%s i %s nisu na istom datotečnom sustavu, koristi se mv za preimenovanje" -#: plugins/sudoers/visudo.c:824 +#: plugins/sudoers/visudo.c:827 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "naredba nije uspjela: „%s %s %s“, %s nije promijenjena" -#: plugins/sudoers/visudo.c:831 +#: plugins/sudoers/visudo.c:834 #, c-format msgid "error renaming %s, %s unchanged" msgstr "greška u preimenovanju %s, %s nije promijenjena" -#: plugins/sudoers/visudo.c:851 +#: plugins/sudoers/visudo.c:855 msgid "What now? " msgstr "Što sada? " -#: plugins/sudoers/visudo.c:865 +#: plugins/sudoers/visudo.c:869 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -3707,41 +3723,49 @@ " (x) završiti bez spremanja promjena u datoteku sudoers)\n" " (Q) prekinuti i spremiti promjene u datoteku sudoers (OPASNO!)\n" -#: plugins/sudoers/visudo.c:911 +#: plugins/sudoers/visudo.c:915 #, c-format msgid "unable to run %s" msgstr "nije moguće pokrenuti %s" -#: plugins/sudoers/visudo.c:942 +#: plugins/sudoers/visudo.c:946 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s: krivi vlasnik (UID, GID) a treba biti (%u, %u)\n" -#: plugins/sudoers/visudo.c:953 +#: plugins/sudoers/visudo.c:957 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s: loša prava pristupa, trebala bi biti 0%o\n" -#: plugins/sudoers/visudo.c:999 plugins/sudoers/visudo.c:1006 +#: plugins/sudoers/visudo.c:1009 plugins/sudoers/visudo.c:1016 #, c-format msgid "%s: parsed OK\n" msgstr "%s: raščlamba je uspjela\n" -#: plugins/sudoers/visudo.c:1025 +#: plugins/sudoers/visudo.c:1035 #, c-format msgid "%s busy, try again later" msgstr "%s je zauzeti, pokušajte ponovo kasnije" -#: plugins/sudoers/visudo.c:1029 +#: plugins/sudoers/visudo.c:1039 msgid "Edit anyway? [y/N]" msgstr "Ipak redigirati? [y/N]" -#: plugins/sudoers/visudo.c:1130 +#: plugins/sudoers/visudo.c:1197 +msgid "the -x option will be removed in a future release" +msgstr "opcija -x bit će uklonjena iz buduće inačice" + +#: plugins/sudoers/visudo.c:1199 +msgid "please consider using the cvtsudoers utility instead" +msgstr "molimo da umjesto toga pokušate rabiti cvtsudoers uslužni program" + +#: plugins/sudoers/visudo.c:1219 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Upozorenje: %s:%d:%d nekorišteni %s „%s“" -#: plugins/sudoers/visudo.c:1242 +#: plugins/sudoers/visudo.c:1332 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3750,7 +3774,7 @@ "%s - sigurno redigira sudoers datoteku\n" "\n" -#: plugins/sudoers/visudo.c:1244 +#: plugins/sudoers/visudo.c:1334 msgid "" "\n" "Options:\n" @@ -3772,38 +3796,49 @@ " -s, --strick striktni test sintakse sudoers datoteke\n" " -V, --version informira o inačici ovog programa i iziđe\n" -#: toke.l:189 +#: toke.l:184 msgid "empty string" msgstr "prazni string" -#: toke.l:201 toke.l:571 +#: toke.l:196 toke.l:566 msgid "empty group" msgstr "prazna grupa" -#: toke.l:211 toke.l:569 +#: toke.l:206 toke.l:564 msgid "empty netgroup" msgstr "prazna mrežna grupa (netgroup)" -#: toke.l:289 +#: toke.l:284 msgid "unterminated regular expression" msgstr "nezavršen regularni izraz" -#: toke.l:363 toke.l:375 toke.l:387 toke.l:403 toke.l:422 toke.l:462 +#: toke.l:358 toke.l:370 toke.l:382 toke.l:398 toke.l:417 toke.l:457 msgid "invalid line continuation" msgstr "nevaljani nastavak retka" -#: toke.l:608 toke.l:620 +#: toke.l:603 toke.l:615 msgid "invalid IPv6 address" msgstr "nevaljana IPv6 adresa" -#: toke.l:876 +#: toke.l:863 msgid "unexpected line break in string" msgstr "neočekivani prelom retka" -#: toke.l:1226 +#: toke.l:983 +msgid "ignoring editor backup file" +msgstr "ignoriramo osiguranje (sigurnosnu kopiju) editora" + +#: toke.l:986 +msgid "ignoring file name containing '.'" +msgstr "ignoriramo ime datoteke koje sadrži ‘.’" + +#: toke.l:1289 msgid "too many levels of includes" msgstr "previše razina uključivanja" +#~ msgid "timestamp owner (%s): No such user" +#~ msgstr "vlasnik vremenske oznake (%s): Nema takvog korisnika" + #~ msgid "%s must be owned by uid %d" #~ msgstr "vlasnik %s mora biti UID %d" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/plugins/sudoers/po/ko.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/plugins/sudoers/po/ko.mo differ diff -Nru sudo-1.9.13p3/plugins/sudoers/po/ko.po sudo-1.9.14p2/plugins/sudoers/po/ko.po --- sudo-1.9.13p3/plugins/sudoers/po/ko.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/po/ko.po 2023-07-15 15:37:21.000000000 +0000 @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.13b2\n" +"Project-Id-Version: sudoers 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-27 00:39+0900\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-09 11:41+0900\n" "Last-Translator: Seong-ho Cho \n" "Language-Team: Korean \n" "Language: ko\n" @@ -17,9 +17,9 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 2.3.1\n" +"X-Generator: Poedit 3.0.1\n" -#: confstr.sh:1 gram.y:1220 plugins/sudoers/logging.c:866 +#: confstr.sh:1 gram.y:1240 plugins/sudoers/logging.c:885 msgid "syntax error" msgstr "문법 오류" @@ -43,34 +43,34 @@ msgid "Sorry, try again." msgstr "죄송합니다만, 다시 시도하십시오." -#: gram.y:237 gram.y:304 gram.y:313 gram.y:322 gram.y:332 gram.y:342 -#: gram.y:366 gram.y:393 gram.y:402 gram.y:410 gram.y:419 gram.y:428 -#: gram.y:502 gram.y:512 gram.y:524 gram.y:572 gram.y:581 gram.y:590 -#: gram.y:599 gram.y:731 gram.y:739 gram.y:750 gram.y:762 gram.y:781 -#: gram.y:944 gram.y:949 gram.y:957 gram.y:971 gram.y:977 gram.y:1099 -#: gram.y:1108 gram.y:1116 gram.y:1125 gram.y:1134 gram.y:1163 gram.y:1172 -#: gram.y:1180 gram.y:1280 gram.y:1410 gram.y:1777 gram.y:1827 -#: lib/eventlog/eventlog.c:235 lib/eventlog/eventlog.c:312 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:834 -#: lib/eventlog/eventlog.c:1135 lib/iolog/iolog_filter.c:142 +#: gram.y:236 gram.y:303 gram.y:312 gram.y:321 gram.y:331 gram.y:341 +#: gram.y:365 gram.y:392 gram.y:401 gram.y:409 gram.y:418 gram.y:427 +#: gram.y:501 gram.y:511 gram.y:523 gram.y:571 gram.y:580 gram.y:589 +#: gram.y:598 gram.y:730 gram.y:738 gram.y:749 gram.y:761 gram.y:780 +#: gram.y:943 gram.y:948 gram.y:956 gram.y:970 gram.y:976 gram.y:988 +#: gram.y:994 gram.y:1119 gram.y:1128 gram.y:1136 gram.y:1145 gram.y:1154 +#: gram.y:1183 gram.y:1192 gram.y:1200 gram.y:1300 gram.y:1430 gram.y:1808 +#: gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:313 lib/eventlog/eventlog.c:755 +#: lib/eventlog/eventlog.c:832 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:472 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 #: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:233 -#: lib/iolog/iolog_json.c:150 lib/iolog/iolog_json.c:382 -#: lib/iolog/iolog_json.c:412 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:212 -#: logsrvd/iolog_writer.c:95 logsrvd/iolog_writer.c:100 -#: logsrvd/iolog_writer.c:134 logsrvd/iolog_writer.c:182 -#: logsrvd/iolog_writer.c:215 logsrvd/iolog_writer.c:225 -#: logsrvd/iolog_writer.c:254 logsrvd/iolog_writer.c:275 -#: logsrvd/iolog_writer.c:287 logsrvd/iolog_writer.c:297 -#: logsrvd/iolog_writer.c:307 logsrvd/iolog_writer.c:317 -#: logsrvd/iolog_writer.c:329 logsrvd/iolog_writer.c:364 -#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:377 -#: logsrvd/iolog_writer.c:383 logsrvd/iolog_writer.c:567 -#: logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 logsrvd/logsrvd.c:310 -#: logsrvd/logsrvd.c:1050 logsrvd/logsrvd.c:1113 logsrvd/logsrvd.c:1582 -#: logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 logsrvd/logsrvd.c:1988 +#: 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:212 logsrvd/iolog_writer.c:95 +#: logsrvd/iolog_writer.c:100 logsrvd/iolog_writer.c:134 +#: logsrvd/iolog_writer.c:182 logsrvd/iolog_writer.c:215 +#: logsrvd/iolog_writer.c:225 logsrvd/iolog_writer.c:254 +#: logsrvd/iolog_writer.c:275 logsrvd/iolog_writer.c:287 +#: logsrvd/iolog_writer.c:297 logsrvd/iolog_writer.c:307 +#: logsrvd/iolog_writer.c:317 logsrvd/iolog_writer.c:329 +#: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 +#: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:1058 logsrvd/logsrvd.c:1121 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 #: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 #: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 #: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 @@ -85,29 +85,31 @@ #: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1743 #: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:216 #: logsrvd/logsrvd_journal.c:217 logsrvd/logsrvd_journal.c:273 -#: logsrvd/logsrvd_journal.c:433 logsrvd/logsrvd_journal.c:435 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:216 -#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:279 -#: logsrvd/logsrvd_local.c:417 logsrvd/logsrvd_local.c:466 -#: logsrvd/logsrvd_local.c:467 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:473 logsrvd/logsrvd_queue.c:159 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/logsrvd_relay.c:444 logsrvd/logsrvd_relay.c:743 -#: logsrvd/logsrvd_relay.c:850 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 -#: logsrvd/sendlog.c:291 logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 -#: logsrvd/sendlog.c:1801 plugins/sudoers/audit.c:116 -#: plugins/sudoers/auth/bsdauth.c:150 plugins/sudoers/auth/kerb5.c:121 +#: logsrvd/logsrvd_journal.c:278 logsrvd/logsrvd_journal.c:438 +#: logsrvd/logsrvd_journal.c:440 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:216 logsrvd/logsrvd_local.c:278 +#: logsrvd/logsrvd_local.c:279 logsrvd/logsrvd_local.c:417 +#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:467 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:473 +#: logsrvd/logsrvd_queue.c:159 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/logsrvd_relay.c:446 +#: logsrvd/logsrvd_relay.c:745 logsrvd/logsrvd_relay.c:852 +#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:292 +#: logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 logsrvd/sendlog.c:624 +#: logsrvd/sendlog.c:1810 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/bsdauth.c:152 plugins/sudoers/auth/kerb5.c:121 #: plugins/sudoers/auth/kerb5.c:148 plugins/sudoers/auth/pam.c:687 #: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:175 plugins/sudoers/cvtsudoers.c:192 -#: plugins/sudoers/cvtsudoers.c:203 plugins/sudoers/cvtsudoers.c:333 -#: plugins/sudoers/cvtsudoers.c:372 plugins/sudoers/cvtsudoers.c:392 -#: plugins/sudoers/cvtsudoers.c:537 plugins/sudoers/cvtsudoers.c:670 -#: plugins/sudoers/cvtsudoers.c:688 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:870 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:246 +#: plugins/sudoers/canon_path.c:129 plugins/sudoers/canon_path.c:160 +#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:132 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:193 +#: plugins/sudoers/cvtsudoers.c:204 plugins/sudoers/cvtsudoers.c:334 +#: plugins/sudoers/cvtsudoers.c:373 plugins/sudoers/cvtsudoers.c:393 +#: plugins/sudoers/cvtsudoers.c:538 plugins/sudoers/cvtsudoers.c:691 +#: plugins/sudoers/cvtsudoers.c:709 plugins/sudoers/cvtsudoers.c:883 +#: plugins/sudoers/cvtsudoers.c:891 plugins/sudoers/cvtsudoers.c:1386 +#: plugins/sudoers/cvtsudoers.c:1390 plugins/sudoers/cvtsudoers.c:1492 +#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:247 #: 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:376 @@ -125,143 +127,152 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1158 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:212 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:689 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:691 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:294 plugins/sudoers/ldap_util.c:301 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:402 -#: plugins/sudoers/log_client.c:715 plugins/sudoers/log_client.c:736 -#: plugins/sudoers/log_client.c:1415 plugins/sudoers/log_client.c:1536 -#: plugins/sudoers/log_client.c:1636 plugins/sudoers/log_client.c:1972 -#: plugins/sudoers/log_client.c:2031 plugins/sudoers/logging.c:110 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/match_command.c:335 plugins/sudoers/match_command.c:603 -#: plugins/sudoers/match_command.c:654 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:776 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:267 plugins/sudoers/parse.c:284 -#: plugins/sudoers/parse.c:303 plugins/sudoers/parse.c:322 -#: plugins/sudoers/parse.c:339 plugins/sudoers/parse.c:362 -#: plugins/sudoers/parse.c:373 plugins/sudoers/parse_ldif.c:153 -#: plugins/sudoers/parse_ldif.c:184 plugins/sudoers/parse_ldif.c:253 -#: plugins/sudoers/parse_ldif.c:261 plugins/sudoers/parse_ldif.c:266 -#: plugins/sudoers/parse_ldif.c:342 plugins/sudoers/parse_ldif.c:353 -#: plugins/sudoers/parse_ldif.c:380 plugins/sudoers/parse_ldif.c:397 -#: plugins/sudoers/parse_ldif.c:409 plugins/sudoers/parse_ldif.c:413 -#: plugins/sudoers/parse_ldif.c:427 plugins/sudoers/parse_ldif.c:484 -#: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:628 -#: plugins/sudoers/parse_ldif.c:653 plugins/sudoers/parse_ldif.c:711 -#: plugins/sudoers/parse_ldif.c:728 plugins/sudoers/parse_ldif.c:756 -#: plugins/sudoers/parse_ldif.c:763 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 -#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 -#: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 -#: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 -#: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:185 -#: plugins/sudoers/sssd.c:414 plugins/sudoers/sssd.c:479 -#: plugins/sudoers/sssd.c:505 plugins/sudoers/sssd.c:568 -#: plugins/sudoers/sssd.c:761 plugins/sudoers/strvec_join.c:53 -#: plugins/sudoers/stubs.c:112 plugins/sudoers/stubs.c:120 -#: plugins/sudoers/sudoers.c:354 plugins/sudoers/sudoers.c:380 -#: plugins/sudoers/sudoers.c:447 plugins/sudoers/sudoers.c:464 -#: plugins/sudoers/sudoers.c:505 plugins/sudoers/sudoers.c:849 -#: plugins/sudoers/sudoers.c:902 plugins/sudoers/sudoers.c:1054 -#: plugins/sudoers/sudoers.c:1114 plugins/sudoers/sudoers.c:1369 +#: plugins/sudoers/log_client.c:717 plugins/sudoers/log_client.c:739 +#: plugins/sudoers/log_client.c:744 plugins/sudoers/log_client.c:1423 +#: plugins/sudoers/log_client.c:1544 plugins/sudoers/log_client.c:1667 +#: plugins/sudoers/log_client.c:1986 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:846 plugins/sudoers/match_command.c:295 +#: plugins/sudoers/match_command.c:563 plugins/sudoers/match_command.c:629 +#: plugins/sudoers/match_command.c:724 plugins/sudoers/match_command.c:770 +#: plugins/sudoers/match_digest.c:82 plugins/sudoers/parse.c:279 +#: plugins/sudoers/parse.c:296 plugins/sudoers/parse.c:315 +#: plugins/sudoers/parse.c:334 plugins/sudoers/parse.c:351 +#: plugins/sudoers/parse.c:374 plugins/sudoers/parse.c:385 +#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 +#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:261 +#: plugins/sudoers/parse_ldif.c:266 plugins/sudoers/parse_ldif.c:342 +#: plugins/sudoers/parse_ldif.c:353 plugins/sudoers/parse_ldif.c:380 +#: plugins/sudoers/parse_ldif.c:397 plugins/sudoers/parse_ldif.c:409 +#: plugins/sudoers/parse_ldif.c:413 plugins/sudoers/parse_ldif.c:427 +#: plugins/sudoers/parse_ldif.c:484 plugins/sudoers/parse_ldif.c:598 +#: plugins/sudoers/parse_ldif.c:628 plugins/sudoers/parse_ldif.c:653 +#: plugins/sudoers/parse_ldif.c:711 plugins/sudoers/parse_ldif.c:728 +#: plugins/sudoers/parse_ldif.c:756 plugins/sudoers/parse_ldif.c:763 +#: plugins/sudoers/policy.c:622 plugins/sudoers/policy.c:1050 +#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:199 +#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 +#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:587 +#: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:857 +#: plugins/sudoers/pwutil.c:945 plugins/sudoers/pwutil.c:993 +#: plugins/sudoers/pwutil.c:1052 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 +#: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1325 plugins/sudoers/sudoers.c:1513 #: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 #: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 #: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 -#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 -#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:588 -#: plugins/sudoers/timestamp.c:451 plugins/sudoers/timestamp.c:495 -#: plugins/sudoers/timestamp.c:1017 plugins/sudoers/timestamp.c:1146 -#: plugins/sudoers/toke_util.c:78 plugins/sudoers/toke_util.c:106 -#: plugins/sudoers/toke_util.c:131 plugins/sudoers/toke_util.c:161 -#: plugins/sudoers/toke_util.c:200 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:150 plugins/sudoers/visudo.c:385 -#: plugins/sudoers/visudo.c:391 plugins/sudoers/visudo.c:502 -#: plugins/sudoers/visudo.c:1056 toke.l:1031 toke.l:1163 toke.l:1234 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 +#: plugins/sudoers/toke_util.c:161 plugins/sudoers/toke_util.c:200 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1087 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1299 msgid "unable to allocate memory" msgstr "메모리를 할당할 수 없습니다" -#: gram.y:623 +#: gram.y:622 msgid "a digest requires a path name" msgstr "다이제스트에 경로 이름이 필요합니다" -#: gram.y:645 +#: gram.y:644 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "%s: \"CWD\" 값은 '/'; '~'; '*' 문자로 시작해야합니다" -#: gram.y:651 +#: gram.y:650 msgid "\"CWD\" path too long" msgstr "\"CWD\" 경로가 너무 깁니다" -#: gram.y:661 +#: gram.y:660 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "%s: \"CHROOT\" 값은 '/'; '~'; '*' 문자로 시작해야합니다" -#: gram.y:667 +#: gram.y:666 msgid "\"CHROOT\" path too long" msgstr "\"CHROOT\" 경로가 너무 깁니다" -#: gram.y:802 +#: gram.y:801 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "문법 오류. %s 예약어를 별칭으로 썼습니다" -#: gram.y:825 +#: gram.y:824 msgid "invalid notbefore value" msgstr "부적절한 notbefore 값" -#: gram.y:834 +#: gram.y:833 msgid "invalid notafter value" msgstr "부적절한 notafter 값" -#: gram.y:844 plugins/sudoers/policy.c:385 +#: gram.y:843 plugins/sudoers/policy.c:381 msgid "timeout value too large" msgstr "제한 시간 값이 너무 큽니다" -#: gram.y:846 plugins/sudoers/policy.c:387 +#: gram.y:845 plugins/sudoers/policy.c:383 msgid "invalid timeout value" msgstr "부적절한 제한 시간 값" -#: gram.y:967 plugins/sudoers/sudoers.c:1072 +#: gram.y:966 plugins/sudoers/sudoers.c:1192 msgid "command too long" msgstr "명령이 너무 깁니다" -#: gram.y:1224 plugins/sudoers/check_aliases.c:96 -#: plugins/sudoers/defaults.c:1276 +#: gram.y:1000 +msgid "expected a fully-qualified path name" +msgstr "완전한 경로 이름이 필요합니다" + +#: gram.y:1244 plugins/sudoers/check_aliases.c:96 +#: plugins/sudoers/defaults.c:1275 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1278 +#: gram.y:1298 #, c-format msgid "Alias \"%s\" already defined" msgstr "\"%s\" 별칭을 이미 정의했습니다" -#: gram.y:1777 gram.y:1827 lib/eventlog/eventlog.c:235 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:830 -#: lib/eventlog/eventlog.c:833 lib/eventlog/eventlog.c:1135 -#: lib/iolog/iolog_filter.c:142 lib/iolog/iolog_filter.c:202 -#: lib/iolog/iolog_filter.c:232 lib/iolog/iolog_json.c:150 -#: lib/iolog/iolog_json.c:381 lib/iolog/iolog_json.c:412 +#: gram.y:1808 gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:755 lib/eventlog/eventlog.c:828 +#: lib/eventlog/eventlog.c:831 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:471 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 +#: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:232 #: 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 @@ -276,55 +287,56 @@ #: logsrvd/iolog_writer.c:316 logsrvd/iolog_writer.c:328 #: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 #: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 -#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 -#: logsrvd/logsrvd.c:310 logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:490 -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:611 -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:732 -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1439 logsrvd/logsrvd.c:1446 -#: logsrvd/logsrvd.c:1582 logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 -#: logsrvd/logsrvd.c:1988 logsrvd/logsrvd_conf.c:357 -#: logsrvd/logsrvd_conf.c:370 logsrvd/logsrvd_conf.c:511 -#: logsrvd/logsrvd_conf.c:534 logsrvd/logsrvd_conf.c:538 -#: logsrvd/logsrvd_conf.c:556 logsrvd/logsrvd_conf.c:626 -#: logsrvd/logsrvd_conf.c:649 logsrvd/logsrvd_conf.c:678 -#: logsrvd/logsrvd_conf.c:692 logsrvd/logsrvd_conf.c:706 -#: logsrvd/logsrvd_conf.c:720 logsrvd/logsrvd_conf.c:734 -#: logsrvd/logsrvd_conf.c:748 logsrvd/logsrvd_conf.c:829 -#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1053 -#: logsrvd/logsrvd_conf.c:1448 logsrvd/logsrvd_conf.c:1595 -#: logsrvd/logsrvd_conf.c:1621 logsrvd/logsrvd_conf.c:1633 -#: logsrvd/logsrvd_conf.c:1640 logsrvd/logsrvd_conf.c:1646 -#: logsrvd/logsrvd_conf.c:1742 logsrvd/logsrvd_journal.c:76 -#: logsrvd/logsrvd_journal.c:125 logsrvd/logsrvd_journal.c:216 -#: logsrvd/logsrvd_journal.c:246 logsrvd/logsrvd_journal.c:250 -#: logsrvd/logsrvd_journal.c:258 logsrvd/logsrvd_journal.c:281 -#: logsrvd/logsrvd_journal.c:285 logsrvd/logsrvd_journal.c:433 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:278 -#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:491 logsrvd/logsrvd_queue.c:158 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:291 -#: logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 logsrvd/sendlog.c:1503 -#: logsrvd/sendlog.c:1510 logsrvd/sendlog.c:1733 logsrvd/sendlog.c:1801 -#: logsrvd/tls_init.c:305 logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 -#: plugins/sudoers/audit.c:116 plugins/sudoers/auth/pam.c:502 -#: plugins/sudoers/auth/pam.c:687 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:174 plugins/sudoers/cvtsudoers.c:191 -#: plugins/sudoers/cvtsudoers.c:202 plugins/sudoers/cvtsudoers.c:332 -#: plugins/sudoers/cvtsudoers.c:536 plugins/sudoers/cvtsudoers.c:669 -#: plugins/sudoers/cvtsudoers.c:687 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:869 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:182 plugins/sudoers/cvtsudoers_csv.c:245 -#: 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:375 -#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:437 -#: plugins/sudoers/cvtsudoers_ldif.c:448 plugins/sudoers/cvtsudoers_ldif.c:455 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:480 -#: plugins/sudoers/cvtsudoers_ldif.c:488 plugins/sudoers/cvtsudoers_ldif.c:635 -#: plugins/sudoers/cvtsudoers_merge.c:47 plugins/sudoers/cvtsudoers_merge.c:51 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:530 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:668 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:1132 +#: logsrvd/logsrvd.c:1447 logsrvd/logsrvd.c:1454 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 +#: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 +#: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 +#: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 +#: logsrvd/logsrvd_conf.c:626 logsrvd/logsrvd_conf.c:649 +#: logsrvd/logsrvd_conf.c:678 logsrvd/logsrvd_conf.c:692 +#: logsrvd/logsrvd_conf.c:706 logsrvd/logsrvd_conf.c:720 +#: logsrvd/logsrvd_conf.c:734 logsrvd/logsrvd_conf.c:748 +#: logsrvd/logsrvd_conf.c:829 logsrvd/logsrvd_conf.c:1036 +#: logsrvd/logsrvd_conf.c:1053 logsrvd/logsrvd_conf.c:1448 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1621 +#: logsrvd/logsrvd_conf.c:1633 logsrvd/logsrvd_conf.c:1640 +#: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1742 +#: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:125 +#: logsrvd/logsrvd_journal.c:216 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:250 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:290 +#: logsrvd/logsrvd_journal.c:438 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:466 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:491 +#: logsrvd/logsrvd_queue.c:158 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 +#: logsrvd/sendlog.c:292 logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 +#: logsrvd/sendlog.c:624 logsrvd/sendlog.c:1512 logsrvd/sendlog.c:1519 +#: logsrvd/sendlog.c:1742 logsrvd/sendlog.c:1810 logsrvd/tls_init.c:305 +#: logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/pam.c:502 plugins/sudoers/auth/pam.c:687 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/canon_path.c:129 +#: plugins/sudoers/canon_path.c:160 plugins/sudoers/check_aliases.c:168 +#: plugins/sudoers/cvtsudoers.c:132 plugins/sudoers/cvtsudoers.c:175 +#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:203 +#: plugins/sudoers/cvtsudoers.c:333 plugins/sudoers/cvtsudoers.c:537 +#: plugins/sudoers/cvtsudoers.c:690 plugins/sudoers/cvtsudoers.c:708 +#: plugins/sudoers/cvtsudoers.c:883 plugins/sudoers/cvtsudoers.c:890 +#: plugins/sudoers/cvtsudoers.c:1386 plugins/sudoers/cvtsudoers.c:1390 +#: plugins/sudoers/cvtsudoers.c:1492 plugins/sudoers/cvtsudoers_csv.c:182 +#: plugins/sudoers/cvtsudoers_csv.c:246 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:375 plugins/sudoers/cvtsudoers_ldif.c:429 +#: plugins/sudoers/cvtsudoers_ldif.c:437 plugins/sudoers/cvtsudoers_ldif.c:448 +#: plugins/sudoers/cvtsudoers_ldif.c:455 plugins/sudoers/cvtsudoers_ldif.c:467 +#: plugins/sudoers/cvtsudoers_ldif.c:480 plugins/sudoers/cvtsudoers_ldif.c:488 +#: plugins/sudoers/cvtsudoers_ldif.c:635 plugins/sudoers/cvtsudoers_merge.c:47 +#: plugins/sudoers/cvtsudoers_merge.c:51 #: plugins/sudoers/cvtsudoers_merge.c:353 #: plugins/sudoers/cvtsudoers_merge.c:399 #: plugins/sudoers/cvtsudoers_merge.c:445 @@ -336,42 +348,43 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1157 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:211 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:688 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:690 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:293 plugins/sudoers/ldap_util.c:300 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:228 #: plugins/sudoers/log_client.c:250 plugins/sudoers/log_client.c:264 -#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:715 -#: plugins/sudoers/log_client.c:736 plugins/sudoers/log_client.c:1415 -#: plugins/sudoers/log_client.c:1536 plugins/sudoers/log_client.c:1636 -#: plugins/sudoers/log_client.c:1972 plugins/sudoers/log_client.c:2031 -#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:188 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/logging.c:880 plugins/sudoers/logging.c:892 -#: plugins/sudoers/match_command.c:334 plugins/sudoers/match_command.c:602 -#: plugins/sudoers/match_command.c:653 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:775 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:266 plugins/sudoers/parse.c:283 -#: plugins/sudoers/parse.c:302 plugins/sudoers/parse.c:321 -#: plugins/sudoers/parse.c:338 plugins/sudoers/parse.c:361 -#: plugins/sudoers/parse.c:372 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:717 +#: plugins/sudoers/log_client.c:739 plugins/sudoers/log_client.c:744 +#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1544 +#: plugins/sudoers/log_client.c:1667 plugins/sudoers/log_client.c:1986 +#: plugins/sudoers/log_client.c:2045 plugins/sudoers/logging.c:110 +#: plugins/sudoers/logging.c:188 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:734 plugins/sudoers/logging.c:846 +#: plugins/sudoers/logging.c:899 plugins/sudoers/logging.c:906 +#: plugins/sudoers/match_command.c:294 plugins/sudoers/match_command.c:562 +#: plugins/sudoers/match_command.c:628 plugins/sudoers/match_command.c:724 +#: plugins/sudoers/match_command.c:769 plugins/sudoers/match_digest.c:82 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:295 +#: plugins/sudoers/parse.c:314 plugins/sudoers/parse.c:333 +#: plugins/sudoers/parse.c:350 plugins/sudoers/parse.c:373 +#: plugins/sudoers/parse.c:384 plugins/sudoers/parse_ldif.c:152 #: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 #: plugins/sudoers/parse_ldif.c:260 plugins/sudoers/parse_ldif.c:265 #: plugins/sudoers/parse_ldif.c:341 plugins/sudoers/parse_ldif.c:352 @@ -381,56 +394,60 @@ #: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:627 #: plugins/sudoers/parse_ldif.c:652 plugins/sudoers/parse_ldif.c:710 #: plugins/sudoers/parse_ldif.c:727 plugins/sudoers/parse_ldif.c:755 -#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:154 -#: plugins/sudoers/policy.c:163 plugins/sudoers/policy.c:172 -#: plugins/sudoers/policy.c:201 plugins/sudoers/policy.c:370 -#: plugins/sudoers/policy.c:385 plugins/sudoers/policy.c:387 -#: plugins/sudoers/policy.c:425 plugins/sudoers/policy.c:434 -#: plugins/sudoers/policy.c:482 plugins/sudoers/policy.c:492 -#: plugins/sudoers/policy.c:501 plugins/sudoers/policy.c:510 -#: plugins/sudoers/policy.c:519 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:166 +#: plugins/sudoers/policy.c:196 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:381 plugins/sudoers/policy.c:383 +#: plugins/sudoers/policy.c:421 plugins/sudoers/policy.c:430 +#: plugins/sudoers/policy.c:478 plugins/sudoers/policy.c:488 +#: plugins/sudoers/policy.c:497 plugins/sudoers/policy.c:506 +#: plugins/sudoers/policy.c:515 plugins/sudoers/policy.c:622 +#: plugins/sudoers/policy.c:1050 plugins/sudoers/prompt.c:93 #: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 #: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 #: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 #: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 #: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 plugins/sudoers/sssd.c:144 #: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 #: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 -#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:761 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:112 -#: plugins/sudoers/stubs.c:120 plugins/sudoers/sudoers.c:354 -#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:447 -#: plugins/sudoers/sudoers.c:464 plugins/sudoers/sudoers.c:505 -#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:902 -#: plugins/sudoers/sudoers.c:1054 plugins/sudoers/sudoers.c:1114 -#: plugins/sudoers/sudoers.c:1369 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:562 plugins/sudoers/sudoreplay.c:1278 -#: plugins/sudoers/sudoreplay.c:1334 plugins/sudoers/sudoreplay.c:1530 -#: plugins/sudoers/sudoreplay.c:1534 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:588 plugins/sudoers/timestamp.c:451 -#: plugins/sudoers/timestamp.c:495 plugins/sudoers/timestamp.c:1017 -#: plugins/sudoers/timestamp.c:1146 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1324 plugins/sudoers/sudoers.c:1513 +#: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 +#: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 #: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 #: plugins/sudoers/toke_util.c:160 plugins/sudoers/toke_util.c:200 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:150 -#: plugins/sudoers/visudo.c:385 plugins/sudoers/visudo.c:391 -#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:1056 toke.l:1031 -#: toke.l:1163 toke.l:1226 toke.l:1234 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1086 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1288 toke.l:1299 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:303 +#: lib/eventlog/eventlog.c:304 #, c-format msgid "unable to dup stdin: %m" msgstr "표준 입력을 복제할 수 없습니다: %m" -#: lib/eventlog/eventlog.c:345 +#: lib/eventlog/eventlog.c:346 #, c-format msgid "unable to execute %s: %m" msgstr "%s을(를) 실행할 수 없습니다: %m" @@ -449,96 +466,96 @@ msgid "unable to open pipe: %m" msgstr "파이프를 열 수 없습니다: %m" -#: lib/eventlog/eventlog.c:960 +#: lib/eventlog/eventlog.c:958 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:989 +#: lib/eventlog/eventlog.c:987 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (명령 계속 실행) %s" -#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1242 -#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 -#, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "부적절한 정규 표현식 \"%s\": %s" - -#: lib/iolog/iolog_json.c:140 +#: lib/eventlog/parse_json.c:175 #, c-format msgid "expected JSON_STRING, got %d" msgstr "JSON_STRING 값을 기대했지만, %d 결과가 나왔습니다" -#: lib/iolog/iolog_json.c:145 +#: lib/eventlog/parse_json.c:180 msgid "JSON_ARRAY too large" msgstr "JSON_ARRAY 값이 너무 큽니다" -#: lib/iolog/iolog_json.c:404 +#: lib/eventlog/parse_json.c:494 msgid "missing double quote in name" msgstr "이름에 이중 따옴표가 빠졌습니다" -#: lib/iolog/iolog_json.c:511 +#: lib/eventlog/parse_json.c:612 msgid "missing JSON_OBJECT" msgstr "JSON_OBJECT 값이 빠졌습니다" -#: lib/iolog/iolog_json.c:515 +#: lib/eventlog/parse_json.c:616 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "JSON_OBJECT 값을 기대했지만, %d 결과가 나왔습니다" -#: lib/iolog/iolog_json.c:632 +#: lib/eventlog/parse_json.c:750 #, c-format msgid "json stack exhausted (max %u frames)" msgstr "json 스택 용량이 부족합니다 (최대 %u 프레임)" -#: lib/iolog/iolog_json.c:706 +#: lib/eventlog/parse_json.c:828 msgid "objects must consist of name:value pairs" msgstr "객체는 이름:값 쌍으로 구성해야 합니다" -#: lib/iolog/iolog_json.c:711 lib/iolog/iolog_json.c:742 -#: lib/iolog/iolog_json.c:786 lib/iolog/iolog_json.c:808 -#: lib/iolog/iolog_json.c:830 lib/iolog/iolog_json.c:852 -#: lib/iolog/iolog_json.c:874 +#: lib/eventlog/parse_json.c:833 lib/eventlog/parse_json.c:864 +#: lib/eventlog/parse_json.c:908 lib/eventlog/parse_json.c:930 +#: lib/eventlog/parse_json.c:952 lib/eventlog/parse_json.c:974 +#: lib/eventlog/parse_json.c:996 msgid "missing separator between values" msgstr "값을 구분하는 구분자가 빠졌습니다" -#: lib/iolog/iolog_json.c:726 lib/iolog/iolog_json.c:900 +#: lib/eventlog/parse_json.c:848 lib/eventlog/parse_json.c:1022 msgid "unmatched close brace" msgstr "일치하지 않는 중괄호 닫기 표시" -#: lib/iolog/iolog_json.c:737 +#: lib/eventlog/parse_json.c:859 msgid "unexpected array" msgstr "예기치 않은 배열 발견" -#: lib/iolog/iolog_json.c:757 lib/iolog/iolog_json.c:903 +#: lib/eventlog/parse_json.c:879 lib/eventlog/parse_json.c:1025 msgid "unmatched close bracket" msgstr "일치하지 않는 각괄호 닫기 표시" -#: lib/iolog/iolog_json.c:768 +#: lib/eventlog/parse_json.c:890 msgid "unexpected string" msgstr "예기치 않은 문자열 값 발견" -#: lib/iolog/iolog_json.c:779 +#: lib/eventlog/parse_json.c:901 msgid "missing colon after name" msgstr "이름 뒤에 콜론이 빠졌습니다" -#: lib/iolog/iolog_json.c:800 lib/iolog/iolog_json.c:822 +#: lib/eventlog/parse_json.c:922 lib/eventlog/parse_json.c:944 msgid "unexpected boolean" msgstr "예기치 않은 부울린 값 발견" -#: lib/iolog/iolog_json.c:844 +#: lib/eventlog/parse_json.c:966 msgid "unexpected null" msgstr "예기치 않은 NULL 값 발견" -#: lib/iolog/iolog_json.c:865 +#: lib/eventlog/parse_json.c:987 msgid "unexpected number" msgstr "예기치 않은 숫자 값 발견" -#: lib/iolog/iolog_json.c:912 +#: lib/eventlog/parse_json.c:1033 msgid "parse error" msgstr "해석 오류" +#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1241 +#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "부적절한 정규 표현식 \"%s\": %s" + #: lib/iolog/iolog_legacy.c:65 #, c-format msgid "%s: invalid log file" @@ -575,13 +592,13 @@ msgstr "%s이(가) 있지만 디렉터리가 아닙니다(0%o)" #: lib/iolog/iolog_mkdirs.c:123 lib/iolog/iolog_mkdtemp.c:79 -#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:209 +#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:234 #, c-format msgid "unable to mkdir %s" msgstr "mkdir %s 명령을 실행할 수 없습니다" -#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:757 -#: plugins/sudoers/visudo.c:791 plugins/sudoers/visudo.c:797 +#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:760 +#: plugins/sudoers/visudo.c:794 plugins/sudoers/visudo.c:800 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "%s 모드를 0%o 값으로 바꿀 수 없습니다" @@ -613,8 +630,8 @@ msgid "%s: protocol error: NULL value found in %s" msgstr "%s: 프로토콜 오류: %s에 NULL값 들어감" -#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:980 -#: plugins/sudoers/policy.c:593 +#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:993 +#: plugins/sudoers/policy.c:589 msgid "unable to generate UUID" msgstr "UUID를 만들 수 없습니다" @@ -666,26 +683,26 @@ msgid "invalid I/O log %s: %s referenced but not present" msgstr "부적절한 %s 입출력 로그: %s을(를) 참조했지만 없습니다" -#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:385 +#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:390 #, c-format msgid "%s: unable to find resume point [%lld, %ld]" msgstr "%s: [%lld, %ld] 재개 지점을 찾을 수 없습니다" -#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:428 +#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:433 #: logsrvd/logsrvd_queue.c:115 logsrvd/tls_init.c:256 -#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:730 -#: plugins/sudoers/cvtsudoers.c:751 plugins/sudoers/cvtsudoers.c:1431 -#: plugins/sudoers/cvtsudoers_csv.c:695 plugins/sudoers/cvtsudoers_json.c:898 -#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1152 -#: plugins/sudoers/sudoers.c:1182 plugins/sudoers/sudoreplay.c:1496 -#: plugins/sudoers/timestamp.c:460 plugins/sudoers/tsdump.c:128 -#: plugins/sudoers/visudo.c:975 +#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:751 +#: plugins/sudoers/cvtsudoers.c:772 plugins/sudoers/cvtsudoers.c:1452 +#: plugins/sudoers/cvtsudoers_csv.c:697 plugins/sudoers/cvtsudoers_json.c:902 +#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1310 +#: plugins/sudoers/sudoers.c:1334 plugins/sudoers/sudoreplay.c:1496 +#: plugins/sudoers/timestamp.c:485 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:982 #, c-format msgid "unable to open %s" msgstr "%s을(를) 열 수 없습니다" -#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:105 -#: logsrvd/logsrv_util.c:112 plugins/sudoers/sudoreplay.c:355 +#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:111 +#: logsrvd/logsrv_util.c:118 plugins/sudoers/sudoreplay.c:355 #: plugins/sudoers/sudoreplay.c:361 #, c-format msgid "unable to open %s/%s" @@ -701,17 +718,17 @@ msgid "unable to rename %s to %s" msgstr "%s을(를) %s(으)로 이름을 바꿀 수 없습니다" -#: logsrvd/logsrv_util.c:147 logsrvd/logsrv_util.c:176 +#: logsrvd/logsrv_util.c:153 logsrvd/logsrv_util.c:182 #, c-format msgid "%s/%s: unable to find resume point [%lld, %ld]" msgstr "%s/%s: [%lld, %ld] 재개 지점을 찾을 수 없습니다" -#: logsrvd/logsrv_util.c:159 +#: logsrvd/logsrv_util.c:165 #, c-format msgid "missing I/O log file %s/%s" msgstr "입출력 로그 파일 %s/%s 빠짐" -#: logsrvd/logsrv_util.c:166 +#: logsrvd/logsrv_util.c:172 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: %zu회 이전 탐색을 진행할 수 없습니다" @@ -720,31 +737,31 @@ msgid "unable to connect to relay" msgstr "릴레이에 연결할 수 없습니다" -#: logsrvd/logsrvd.c:330 logsrvd/logsrvd_relay.c:842 +#: logsrvd/logsrvd.c:338 logsrvd/logsrvd_relay.c:844 #, c-format msgid "server message too large: %zu" msgstr "서버 메시지가 너무 깁니다: %zu" -#: logsrvd/logsrvd.c:422 logsrvd/logsrvd.c:545 logsrvd/logsrvd.c:631 -#: logsrvd/logsrvd.c:873 logsrvd/logsrvd.c:887 logsrvd/logsrvd.c:1049 -#: logsrvd/logsrvd.c:1174 logsrvd/logsrvd.c:1347 logsrvd/logsrvd.c:1365 -#: logsrvd/logsrvd.c:1464 logsrvd/logsrvd.c:1589 logsrvd/logsrvd.c:1773 -#: logsrvd/logsrvd_journal.c:497 logsrvd/logsrvd_local.c:238 +#: logsrvd/logsrvd.c:430 logsrvd/logsrvd.c:553 logsrvd/logsrvd.c:639 +#: logsrvd/logsrvd.c:881 logsrvd/logsrvd.c:895 logsrvd/logsrvd.c:1057 +#: logsrvd/logsrvd.c:1182 logsrvd/logsrvd.c:1355 logsrvd/logsrvd.c:1373 +#: logsrvd/logsrvd.c:1472 logsrvd/logsrvd.c:1597 logsrvd/logsrvd.c:1784 +#: logsrvd/logsrvd_journal.c:502 logsrvd/logsrvd_local.c:238 #: logsrvd/logsrvd_queue.c:164 logsrvd/logsrvd_relay.c:172 #: logsrvd/logsrvd_relay.c:249 logsrvd/logsrvd_relay.c:253 -#: logsrvd/logsrvd_relay.c:389 logsrvd/logsrvd_relay.c:581 -#: logsrvd/logsrvd_relay.c:742 logsrvd/logsrvd_relay.c:1131 -#: logsrvd/sendlog.c:1291 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 -#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:278 -#: plugins/sudoers/iolog.c:1031 plugins/sudoers/iolog.c:1164 -#: plugins/sudoers/iolog.c:1262 plugins/sudoers/log_client.c:121 +#: logsrvd/logsrvd_relay.c:391 logsrvd/logsrvd_relay.c:583 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:1133 +#: logsrvd/sendlog.c:1300 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:277 +#: plugins/sudoers/iolog.c:1030 plugins/sudoers/iolog.c:1163 +#: plugins/sudoers/iolog.c:1261 plugins/sudoers/log_client.c:121 #: plugins/sudoers/log_client.c:343 plugins/sudoers/log_client.c:359 -#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:611 -#: plugins/sudoers/log_client.c:618 plugins/sudoers/log_client.c:1103 -#: plugins/sudoers/log_client.c:1384 plugins/sudoers/log_client.c:1425 -#: plugins/sudoers/log_client.c:1433 plugins/sudoers/log_client.c:1592 -#: plugins/sudoers/log_client.c:1710 plugins/sudoers/log_client.c:2039 -#: plugins/sudoers/log_client.c:2047 plugins/sudoers/logging.c:147 +#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:613 +#: plugins/sudoers/log_client.c:620 plugins/sudoers/log_client.c:1111 +#: plugins/sudoers/log_client.c:1392 plugins/sudoers/log_client.c:1433 +#: plugins/sudoers/log_client.c:1441 plugins/sudoers/log_client.c:1600 +#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:2053 +#: plugins/sudoers/log_client.c:2061 plugins/sudoers/logging.c:147 #: plugins/sudoers/logging.c:205 plugins/sudoers/sudoreplay.c:519 #: plugins/sudoers/sudoreplay.c:566 plugins/sudoers/sudoreplay.c:808 #: plugins/sudoers/sudoreplay.c:920 plugins/sudoers/sudoreplay.c:1011 @@ -754,189 +771,190 @@ msgid "unable to add event to queue" msgstr "큐에 이벤트를 추가할 수 없습니다" -#: logsrvd/logsrvd.c:446 logsrvd/logsrvd.c:483 logsrvd/logsrvd.c:515 -#: logsrvd/logsrvd.c:569 logsrvd/logsrvd.c:648 logsrvd/logsrvd.c:684 -#: logsrvd/logsrvd.c:720 logsrvd/logsrvd.c:756 logsrvd/logsrvd_relay.c:510 -#: logsrvd/logsrvd_relay.c:543 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:577 logsrvd/logsrvd.c:656 logsrvd/logsrvd.c:692 +#: logsrvd/logsrvd.c:728 logsrvd/logsrvd.c:764 logsrvd/logsrvd_relay.c:512 +#: logsrvd/logsrvd_relay.c:545 #, c-format msgid "unexpected state %d for %s" msgstr "%2$s의 예기치 않은 상태 %1$d번" -#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 -#: logsrvd/logsrvd.c:570 logsrvd/logsrvd.c:649 logsrvd/logsrvd.c:685 -#: logsrvd/logsrvd.c:721 logsrvd/logsrvd.c:757 logsrvd/logsrvd_relay.c:512 -#: logsrvd/logsrvd_relay.c:545 +#: logsrvd/logsrvd.c:455 logsrvd/logsrvd.c:492 logsrvd/logsrvd.c:524 +#: logsrvd/logsrvd.c:578 logsrvd/logsrvd.c:657 logsrvd/logsrvd.c:693 +#: logsrvd/logsrvd.c:729 logsrvd/logsrvd.c:765 logsrvd/logsrvd_relay.c:514 +#: logsrvd/logsrvd_relay.c:547 msgid "state machine error" msgstr "상태 머신 오류" -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:454 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:462 msgid "invalid AcceptMessage" msgstr "부적절한 AcceptMessage" -#: logsrvd/logsrvd.c:490 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:499 msgid "invalid RejectMessage" msgstr "부적절한 RejectMessage" -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:530 logsrvd/logsrvd.c:531 msgid "invalid ExitMessage" msgstr "부적절한 ExitMessage" -#: logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:577 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:585 msgid "invalid RestartMessage" msgstr "부적절한 RestartMessage" -#: logsrvd/logsrvd.c:611 logsrvd/logsrvd.c:612 +#: logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:620 msgid "invalid AlertMessage" msgstr "부적절한 AlertMessage" -#: logsrvd/logsrvd.c:653 logsrvd/logsrvd.c:689 logsrvd/logsrvd.c:725 +#: logsrvd/logsrvd.c:661 logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:733 #, c-format msgid "%s: unexpected IoBuffer" msgstr "%s: 예기치 않은 입출력 버퍼 발견" -#: logsrvd/logsrvd.c:654 logsrvd/logsrvd.c:690 logsrvd/logsrvd.c:726 +#: logsrvd/logsrvd.c:662 logsrvd/logsrvd.c:698 logsrvd/logsrvd.c:734 msgid "protocol error" msgstr "프로토콜 오류" -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:661 +#: logsrvd/logsrvd.c:668 logsrvd/logsrvd.c:669 msgid "invalid IoBuffer" msgstr "부적절한 IoBuffer" -#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:697 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:705 msgid "invalid ChangeWindowSize" msgstr "부적절한 ChangeWindowSize" -#: logsrvd/logsrvd.c:732 logsrvd/logsrvd.c:733 +#: logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:741 msgid "invalid CommandSuspend" msgstr "부적절한 CommandSuspend" -#: logsrvd/logsrvd.c:782 logsrvd/logsrvd_journal.c:296 -#: logsrvd/logsrvd_relay.c:652 logsrvd/sendlog.c:1192 -#: plugins/sudoers/log_client.c:1582 +#: logsrvd/logsrvd.c:790 logsrvd/logsrvd_journal.c:301 +#: logsrvd/logsrvd_relay.c:654 logsrvd/sendlog.c:1201 +#: plugins/sudoers/log_client.c:1590 #, c-format msgid "unable to unpack %s size %zu" msgstr "%2$zu 크기의 %1$s을(를) 언팩할 수 없습니다" -#: logsrvd/logsrvd.c:827 logsrvd/logsrvd_journal.c:370 -#: logsrvd/logsrvd_relay.c:676 +#: logsrvd/logsrvd.c:835 logsrvd/logsrvd_journal.c:375 +#: logsrvd/logsrvd_relay.c:678 #, c-format msgid "unexpected type_case value %d in %s from %s" msgstr "%3$s의 %2$s에서 예기지 않은 type_case 값 %1$d" -#: logsrvd/logsrvd.c:829 +#: logsrvd/logsrvd.c:837 msgid "unrecognized ClientMessage type" msgstr "인식할 수 없는 ClientMessage 형식" -#: logsrvd/logsrvd.c:919 +#: logsrvd/logsrvd.c:927 #, c-format msgid "timed out writing to client %s" msgstr "%s 클라이언트 기록 시간 초과" -#: logsrvd/logsrvd.c:924 logsrvd/logsrvd_relay.c:914 logsrvd/sendlog.c:1395 +#: logsrvd/logsrvd.c:932 logsrvd/logsrvd_relay.c:916 logsrvd/sendlog.c:1404 #, c-format msgid "missing write buffer for client %s" msgstr "%s 클라이언트에서 기록 버퍼 빠짐" -#: logsrvd/logsrvd.c:1020 +#: logsrvd/logsrvd.c:1028 #, c-format msgid "timed out reading from client %s" msgstr "%s 클라이언트에서 읽기 시간 초과" -#: logsrvd/logsrvd.c:1061 logsrvd/logsrvd_relay.c:777 +#: logsrvd/logsrvd.c:1069 logsrvd/logsrvd_relay.c:779 #, c-format msgid "EOF from %s without proper TLS shutdown" -msgstr "적절한 TLS 셧다운 미이행을 동반한 %s의 파일끝(EOF)" +msgstr "적절한 TLS 셧다운을 수행하지 않은 %s의 파일 끝(EOF)" -#: logsrvd/logsrvd.c:1105 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:322 -#: plugins/sudoers/log_client.c:721 +#: logsrvd/logsrvd.c:1113 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:331 +#: plugins/sudoers/log_client.c:723 #, c-format msgid "client message too large: %zu" msgstr "클라이언드 메시지가 너무 깁니다: %zu" -#: logsrvd/logsrvd.c:1106 logsrvd/logsrvd_journal.c:259 +#: logsrvd/logsrvd.c:1114 logsrvd/logsrvd_journal.c:259 #: logsrvd/logsrvd_journal.c:260 msgid "client message too large" msgstr "클라이언트 메시지가 너무 깁니다" -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1125 +#: logsrvd/logsrvd.c:1132 logsrvd/logsrvd.c:1133 msgid "invalid ClientMessage" msgstr "부적절한 ClientMessage" -#: logsrvd/logsrvd.c:1425 +#: logsrvd/logsrvd.c:1433 msgid "unable to get remote IP addr" msgstr "원격 IP 주소를 가져올 수 없습니다" -#: logsrvd/logsrvd.c:1456 logsrvd/tls_client.c:203 +#: logsrvd/logsrvd.c:1464 logsrvd/tls_client.c:203 #: plugins/sudoers/log_client.c:281 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "ssl 객체에 사용자 데이터를 붙일 수 없습니다: %s" -#: logsrvd/logsrvd.c:1639 logsrvd/logsrvd.c:1992 +#: logsrvd/logsrvd.c:1647 logsrvd/logsrvd.c:2003 msgid "unable to setup listen socket" msgstr "감청 소켓을 설정할 수 없습니다" -#: logsrvd/logsrvd.c:1756 +#: logsrvd/logsrvd.c:1767 #, c-format msgid "unexpected signal %d" msgstr "예기치 않은 시그널 %d번" -#: logsrvd/logsrvd.c:1894 +#: logsrvd/logsrvd.c:1905 msgid "sudo log server" msgstr "sudo 로그 서버" -#: logsrvd/logsrvd.c:1896 logsrvd/sendlog.c:121 +#: logsrvd/logsrvd.c:1907 logsrvd/sendlog.c:121 msgid "Options:" msgstr "옵션:" -#: logsrvd/logsrvd.c:1898 +#: logsrvd/logsrvd.c:1909 msgid "path to configuration file" msgstr "설정 파일 경로" -#: logsrvd/logsrvd.c:1900 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1911 logsrvd/sendlog.c:123 msgid "display help message and exit" msgstr "도움말 메시지를 표시한 후 빠져나갑니다" -#: logsrvd/logsrvd.c:1902 +#: logsrvd/logsrvd.c:1913 msgid "do not fork, run in the foreground" msgstr "프로세스를 포킹하지 않고, 포그라운드에서 실행" -#: logsrvd/logsrvd.c:1904 +#: logsrvd/logsrvd.c:1915 msgid "percent chance connections will drop" msgstr "연결이 끊을 확률에 대한 백분율" -#: logsrvd/logsrvd.c:1906 logsrvd/sendlog.c:153 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:153 msgid "display version information and exit" msgstr "버전 정보를 표시하고 빠져나갑니다" -#: logsrvd/logsrvd.c:1956 logsrvd/sendlog.c:1702 +#: logsrvd/logsrvd.c:1967 logsrvd/sendlog.c:1711 msgid "Protobuf-C version 1.3 or higher required" msgstr "Protobuf-C 1.3 이상의 버전이 필요합니다" -#: logsrvd/logsrvd.c:1972 +#: logsrvd/logsrvd.c:1983 #, c-format msgid "invalid random drop value: %s" msgstr "부적절한 임의 철회 값: %s" -#: logsrvd/logsrvd.c:1975 logsrvd/sendlog.c:1756 -#: plugins/sudoers/cvtsudoers.c:246 plugins/sudoers/sudoreplay.c:294 -#: plugins/sudoers/visudo.c:182 +#: logsrvd/logsrvd.c:1986 logsrvd/sendlog.c:1765 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/sudoreplay.c:294 +#: plugins/sudoers/visudo.c:186 #, c-format msgid "%s version %s\n" msgstr "%s 버전 %s\n" #: logsrvd/logsrvd_conf.c:422 plugins/sudoers/check.c:358 #: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:122 -#: plugins/sudoers/policy.c:1271 plugins/sudoers/sudoers.c:512 -#: plugins/sudoers/sudoers.c:1411 plugins/sudoers/testsudoers.c:215 -#: plugins/sudoers/testsudoers.c:382 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:939 +#: plugins/sudoers/sudoers.c:1041 plugins/sudoers/sudoers.c:1062 +#: plugins/sudoers/sudoers.c:1555 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:393 #, c-format msgid "unknown user %s" msgstr "알 수 없는 사용자 %s" #: logsrvd/logsrvd_conf.c:439 plugins/sudoers/iolog.c:148 -#: plugins/sudoers/sudoers.c:517 plugins/sudoers/sudoers.c:1445 -#: plugins/sudoers/testsudoers.c:406 +#: plugins/sudoers/sudoers.c:453 plugins/sudoers/sudoers.c:1589 +#: plugins/sudoers/testsudoers.c:417 #, c-format msgid "unknown group %s" msgstr "알 수 없는 그룹 %s" @@ -1008,8 +1026,8 @@ msgid "%s:%d [%s] illegal key: %s" msgstr "%s:%d [%s] 잘못된 키: %s" -#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:268 -#: plugins/sudoers/logging.c:1033 +#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:269 +#: plugins/sudoers/logging.c:1046 #, c-format msgid "unable to open log file %s" msgstr "%s 로그 파일을 열 수 없습니다" @@ -1022,13 +1040,13 @@ msgid "unable to initialize relay TLS context" msgstr "릴레이 TLS 컨텍스트를 초기화할 수 없습니다" -#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:424 -#: logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:434 msgid "unable to create journal file" msgstr "저널 파일을 만들 수 없습니다" #: logsrvd/logsrvd_journal.c:153 logsrvd/logsrvd_queue.c:109 -#: plugins/sudoers/visudo.c:1028 +#: plugins/sudoers/visudo.c:1038 #, c-format msgid "unable to lock %s" msgstr "%s을(를) 잠글 수 없습니다" @@ -1041,8 +1059,8 @@ msgid "unable to open journal file" msgstr "저널 파일을 열 수 없습니다" -#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:460 -#: logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:470 msgid "unable to write journal file" msgstr "저널 파일을 기록할 수 없습니다" @@ -1051,20 +1069,20 @@ msgstr "저널 파일 이름을 바꿀 수 없습니다" #: logsrvd/logsrvd_journal.c:247 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:282 logsrvd/logsrvd_journal.c:283 +#: logsrvd/logsrvd_journal.c:287 logsrvd/logsrvd_journal.c:288 msgid "unexpected EOF reading journal file" msgstr "저널 파일 읽는 중 예기치 않은 파일 끝 발견" #: logsrvd/logsrvd_journal.c:251 logsrvd/logsrvd_journal.c:252 -#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:287 +#: logsrvd/logsrvd_journal.c:291 logsrvd/logsrvd_journal.c:292 msgid "error reading journal file" msgstr "저널 파일 읽기 오류" -#: logsrvd/logsrvd_journal.c:298 logsrvd/logsrvd_journal.c:384 +#: logsrvd/logsrvd_journal.c:303 logsrvd/logsrvd_journal.c:389 msgid "invalid journal file, unable to restart" msgstr "부적절한 저널 파일. 다시 시작할 수 없습니다" -#: logsrvd/logsrvd_journal.c:443 +#: logsrvd/logsrvd_journal.c:448 #, c-format msgid "unable to seek to [%lld, %ld] in journal file %s" msgstr "%3$s 저널 파일에서 [%1$lld, %2$ld] 위치를 탐색할 수 없습니다" @@ -1122,7 +1140,7 @@ #: logsrvd/logsrvd_local.c:599 logsrvd/logsrvd_local.c:607 #: logsrvd/logsrvd_local.c:655 logsrvd/logsrvd_local.c:690 -#: plugins/sudoers/sudoreplay.c:344 +#: plugins/sudoers/sudoreplay.c:344 toke.l:982 toke.l:985 #, c-format msgid "%s/%s: %s" msgstr "%s/%s: %s" @@ -1143,69 +1161,69 @@ msgid "error writing CommandSuspend" msgstr "CommandSuspend 기록 중 오류" -#: logsrvd/logsrvd_relay.c:435 +#: logsrvd/logsrvd_relay.c:437 msgid "TLS handshake with relay host failed" msgstr "릴레이 호스트와의 TLS 핸드 셰이크 실패" -#: logsrvd/logsrvd_relay.c:463 +#: logsrvd/logsrvd_relay.c:465 msgid "unable to connect to relay host" msgstr "릴레이 호스트에 연결할 수 없습니다" -#: logsrvd/logsrvd_relay.c:518 +#: logsrvd/logsrvd_relay.c:520 #, c-format msgid "%s: invalid ServerHello, missing server_id" msgstr "%s: 부적절한 ServerHello, server_id가 빠졌습니다" -#: logsrvd/logsrvd_relay.c:520 logsrvd/sendlog.c:1096 -#: plugins/sudoers/log_client.c:1468 +#: logsrvd/logsrvd_relay.c:522 logsrvd/sendlog.c:1105 +#: plugins/sudoers/log_client.c:1476 msgid "invalid ServerHello" msgstr "부적절한 ServerHello" -#: logsrvd/logsrvd_relay.c:679 +#: logsrvd/logsrvd_relay.c:681 msgid "unrecognized ServerMessage type" msgstr "인식할 수 없는 ServerMessage 형식" -#: logsrvd/logsrvd_relay.c:708 +#: logsrvd/logsrvd_relay.c:710 #, c-format msgid "timed out reading from relay %s (%s)" msgstr "릴레이 %s에서 읽기 시간 초과 (%s)" -#: logsrvd/logsrvd_relay.c:710 +#: logsrvd/logsrvd_relay.c:712 msgid "timeout reading from relay" msgstr "릴레이 데이터 읽기 시간 초과" -#: logsrvd/logsrvd_relay.c:762 +#: logsrvd/logsrvd_relay.c:764 msgid "relay host name does not match certificate" msgstr "릴레이 호스트 이름이 인증서와 일치하지 않습니다" -#: logsrvd/logsrvd_relay.c:768 logsrvd/logsrvd_relay.c:782 -#: logsrvd/logsrvd_relay.c:789 +#: logsrvd/logsrvd_relay.c:770 logsrvd/logsrvd_relay.c:784 +#: logsrvd/logsrvd_relay.c:791 msgid "error reading from relay" msgstr "릴레이 데이터 읽는 중 오류" -#: logsrvd/logsrvd_relay.c:810 +#: logsrvd/logsrvd_relay.c:812 msgid "unable to read from relay" msgstr "릴레이 데이터를 읽을 수 없습니다" -#: logsrvd/logsrvd_relay.c:825 logsrvd/logsrvd_relay.c:943 +#: logsrvd/logsrvd_relay.c:827 logsrvd/logsrvd_relay.c:945 msgid "relay server closed connection" msgstr "릴레이 서버 연결을 끊었습니다" -#: logsrvd/logsrvd_relay.c:843 +#: logsrvd/logsrvd_relay.c:845 msgid "server message too large" msgstr "서버 메시지가 너무 깁니다" -#: logsrvd/logsrvd_relay.c:907 +#: logsrvd/logsrvd_relay.c:909 #, c-format msgid "timed out writing to relay %s (%s)" msgstr "릴레이 %s에 기록 시간 초과 (%s)" -#: logsrvd/logsrvd_relay.c:909 +#: logsrvd/logsrvd_relay.c:911 msgid "timeout writing to relay" msgstr "릴레이 기록 시간 초과" -#: logsrvd/logsrvd_relay.c:962 logsrvd/logsrvd_relay.c:969 -#: logsrvd/logsrvd_relay.c:981 +#: logsrvd/logsrvd_relay.c:964 logsrvd/logsrvd_relay.c:971 +#: logsrvd/logsrvd_relay.c:983 msgid "error writing to relay" msgstr "릴레이 기록 중 오류" @@ -1270,79 +1288,79 @@ msgid "unable to get server IP addr" msgstr "서버 IP 주소를 가져올 수 없습니다" -#: logsrvd/sendlog.c:300 plugins/sudoers/sudoreplay.c:868 +#: logsrvd/sendlog.c:309 plugins/sudoers/sudoreplay.c:868 #, c-format msgid "unable to read %s/%s: %s" msgstr "%s/%s을(를) 읽을 수 없습니다: %s" -#: logsrvd/sendlog.c:1020 plugins/sudoers/iolog.c:949 -#: plugins/sudoers/iolog.c:1024 +#: logsrvd/sendlog.c:1029 plugins/sudoers/iolog.c:948 +#: plugins/sudoers/iolog.c:1023 #, c-format msgid "unexpected I/O event %d" msgstr "예기치 않은 입출력 이벤트 %d" -#: logsrvd/sendlog.c:1073 logsrvd/sendlog.c:1090 logsrvd/sendlog.c:1124 -#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1394 -#: plugins/sudoers/log_client.c:1462 plugins/sudoers/log_client.c:1501 +#: logsrvd/sendlog.c:1082 logsrvd/sendlog.c:1099 logsrvd/sendlog.c:1133 +#: plugins/sudoers/log_client.c:1126 plugins/sudoers/log_client.c:1402 +#: plugins/sudoers/log_client.c:1470 plugins/sudoers/log_client.c:1509 #, c-format msgid "%s: unexpected state %d" msgstr "%s: 예기치 않은 상태 번호 %d" -#: logsrvd/sendlog.c:1160 plugins/sudoers/log_client.c:1550 +#: logsrvd/sendlog.c:1169 plugins/sudoers/log_client.c:1558 #, c-format msgid "error message received from server: %s" msgstr "서버로부터 오류 메시지를 받았습니다: %s" -#: logsrvd/sendlog.c:1173 plugins/sudoers/log_client.c:1563 +#: logsrvd/sendlog.c:1182 plugins/sudoers/log_client.c:1571 #, c-format msgid "abort message received from server: %s" msgstr "서버로부터 중단 메시지를 받았습니다: %s" -#: logsrvd/sendlog.c:1232 plugins/sudoers/log_client.c:1613 +#: logsrvd/sendlog.c:1241 plugins/sudoers/log_client.c:1621 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: 예기지 않은 type_case 값 %d" -#: logsrvd/sendlog.c:1261 +#: logsrvd/sendlog.c:1270 msgid "timeout reading from server" msgstr "서버 데이터 읽기 시간 초과" -#: logsrvd/sendlog.c:1310 plugins/sudoers/log_client.c:1729 +#: logsrvd/sendlog.c:1319 plugins/sudoers/log_client.c:1743 msgid "host name does not match certificate" msgstr "호스트 이름이 인증서와 일치하지 않습니다" -#: logsrvd/sendlog.c:1343 +#: logsrvd/sendlog.c:1352 msgid "premature EOF" msgstr "갑작스러운 EOF" -#: logsrvd/sendlog.c:1356 plugins/sudoers/log_client.c:1776 +#: logsrvd/sendlog.c:1365 plugins/sudoers/log_client.c:1790 #, c-format msgid "server message too large: %u" msgstr "서버 메시지가 너무 깁니다: %u" -#: logsrvd/sendlog.c:1412 +#: logsrvd/sendlog.c:1421 msgid "timeout writing to server" msgstr "서버 기록 시간 초과" -#: logsrvd/sendlog.c:1779 +#: logsrvd/sendlog.c:1788 msgid "both restart point and iolog ID must be specified" msgstr "다시 시작 지점과 입출력 로그 ID를 반드시 지정해야합니다" -#: logsrvd/sendlog.c:1783 +#: logsrvd/sendlog.c:1792 msgid "a restart point may not be set when no I/O is sent" msgstr "입출력을 보내지 않을 때 다시 시작 지점을 지정하지 않습니다" -#: logsrvd/sendlog.c:1859 +#: logsrvd/sendlog.c:1868 #, c-format msgid "exited prematurely with state %d" msgstr "%d 상태로 갑자기 빠져나왔습니다" -#: logsrvd/sendlog.c:1860 +#: logsrvd/sendlog.c:1869 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "경과 시간을 서버로 보냈습니다 [%lld, %ld]" -#: logsrvd/sendlog.c:1862 +#: logsrvd/sendlog.c:1871 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "제출 지점 정보를 서버로부터 받았습니다 [%lld, %ld]" @@ -1400,12 +1418,12 @@ msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "TLS 프로토콜 최소 버전을 1.2로 설정할 수 없습니다: %s" -#: plugins/sudoers/audit.c:269 plugins/sudoers/audit.c:429 -#: plugins/sudoers/log_client.c:951 plugins/sudoers/log_client.c:1000 -#: plugins/sudoers/log_client.c:1049 plugins/sudoers/log_client.c:1174 -#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:693 -#: plugins/sudoers/logging.c:796 plugins/sudoers/logging.c:987 -#: plugins/sudoers/policy.c:125 +#: plugins/sudoers/audit.c:268 plugins/sudoers/audit.c:428 +#: plugins/sudoers/log_client.c:959 plugins/sudoers/log_client.c:1008 +#: plugins/sudoers/log_client.c:1057 plugins/sudoers/log_client.c:1182 +#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:711 +#: plugins/sudoers/logging.c:833 plugins/sudoers/logging.c:1000 +#: plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "일시 정보를 가져올 수 없습니다" @@ -1414,28 +1432,28 @@ msgid "unable to change password for %s" msgstr "%s의 암호를 바꿀 수 없습니다" -#: plugins/sudoers/auth/bsdauth.c:74 +#: plugins/sudoers/auth/bsdauth.c:77 #, c-format msgid "unable to get login class for user %s" msgstr "%s 사용자의 로그인 클래스를 가져올 수 없습니다" -#: plugins/sudoers/auth/bsdauth.c:79 -msgid "unable to begin bsd authentication" -msgstr "BSD 인증을 시작할 수 없습니다" - -#: plugins/sudoers/auth/bsdauth.c:87 +#: plugins/sudoers/auth/bsdauth.c:84 msgid "invalid authentication type" msgstr "부적절한 인증 형식" +#: plugins/sudoers/auth/bsdauth.c:89 +msgid "unable to begin BSD authentication" +msgstr "BSD 인증을 시작할 수 없습니다" + #: plugins/sudoers/auth/bsdauth.c:96 msgid "unable to initialize BSD authentication" msgstr "BSD 인증을 초기화할 수 없습니다" -#: plugins/sudoers/auth/bsdauth.c:186 +#: plugins/sudoers/auth/bsdauth.c:188 msgid "your account has expired" msgstr "계정 유효 기간이 지났습니다" -#: plugins/sudoers/auth/bsdauth.c:188 +#: plugins/sudoers/auth/bsdauth.c:190 msgid "approval failed" msgstr "승인 실패" @@ -1654,13 +1672,12 @@ "\n" #: plugins/sudoers/check.c:353 plugins/sudoers/check.c:363 -#: plugins/sudoers/parse.c:82 plugins/sudoers/sudoers.c:945 -#: plugins/sudoers/sudoers.c:966 plugins/sudoers/tsdump.c:119 +#: plugins/sudoers/parse.c:80 plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid %u" msgstr "알 수 없는 uid %u" -#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1279 +#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1278 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" @@ -1675,84 +1692,84 @@ msgid "%s \"%s\" referenced but not defined" msgstr "%s \"%s\"을(를) 참조했지만 정의하지는 않았습니다" -#: plugins/sudoers/cvtsudoers.c:209 +#: plugins/sudoers/cvtsudoers.c:210 #, c-format msgid "order increment: %s: %s" msgstr "순서 증가: %s: %s" -#: plugins/sudoers/cvtsudoers.c:228 +#: plugins/sudoers/cvtsudoers.c:229 #, c-format msgid "starting order: %s: %s" msgstr "순서 시작: %s: %s" -#: plugins/sudoers/cvtsudoers.c:238 +#: plugins/sudoers/cvtsudoers.c:239 #, c-format msgid "order padding: %s: %s" msgstr "순서 패딩: %s: %s" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/visudo.c:184 +#: plugins/sudoers/cvtsudoers.c:249 plugins/sudoers/visudo.c:188 #, c-format msgid "%s grammar version %d\n" msgstr "%s 문법 버전 %d\n" -#: plugins/sudoers/cvtsudoers.c:277 plugins/sudoers/testsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:278 plugins/sudoers/testsudoers.c:163 #, c-format msgid "unsupported input format %s" msgstr "지원하지 않는 %s 입력 형식" -#: plugins/sudoers/cvtsudoers.c:295 +#: plugins/sudoers/cvtsudoers.c:296 #, c-format msgid "unsupported output format %s" msgstr "지원하지 않는 %s 출력 형식" -#: plugins/sudoers/cvtsudoers.c:385 +#: plugins/sudoers/cvtsudoers.c:386 #, c-format msgid "%s: input and output files must be different" msgstr "%s: 입출력 파일은 달라야합니다" -#: plugins/sudoers/cvtsudoers.c:399 plugins/sudoers/sudoers.c:166 -#: plugins/sudoers/sudoers.c:222 plugins/sudoers/testsudoers.c:254 -#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:654 +#: plugins/sudoers/cvtsudoers.c:400 plugins/sudoers/sudoers.c:163 +#: plugins/sudoers/sudoers.c:221 plugins/sudoers/testsudoers.c:263 +#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:657 msgid "unable to initialize sudoers default values" msgstr "sudoers 기본 값을 초기화할 수 없습니다" -#: plugins/sudoers/cvtsudoers.c:525 plugins/sudoers/ldap_conf.c:434 +#: plugins/sudoers/cvtsudoers.c:526 plugins/sudoers/ldap_conf.c:431 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" -#: plugins/sudoers/cvtsudoers.c:584 +#: plugins/sudoers/cvtsudoers.c:605 #, c-format msgid "%s: unknown key word %s" msgstr "%s: 알 수 없는 키워드 %s" -#: plugins/sudoers/cvtsudoers.c:630 +#: plugins/sudoers/cvtsudoers.c:651 #, c-format msgid "invalid defaults type: %s" msgstr "부적절한 기본 형식: %s" -#: plugins/sudoers/cvtsudoers.c:653 +#: plugins/sudoers/cvtsudoers.c:674 #, c-format msgid "invalid suppression type: %s" msgstr "부적절한 생략 형식: %s" -#: plugins/sudoers/cvtsudoers.c:694 plugins/sudoers/cvtsudoers.c:710 +#: plugins/sudoers/cvtsudoers.c:715 plugins/sudoers/cvtsudoers.c:731 #, c-format msgid "invalid filter: %s" msgstr "부적절한 필터: %s" -#: plugins/sudoers/cvtsudoers.c:754 plugins/sudoers/visudo.c:982 +#: plugins/sudoers/cvtsudoers.c:775 plugins/sudoers/visudo.c:992 #, c-format msgid "failed to parse %s file, unknown error" msgstr "%s 파일 해석에 실패했습니다. 알 수 없는 오류." -#: plugins/sudoers/cvtsudoers.c:1478 plugins/sudoers/sudoreplay.c:1142 -#: plugins/sudoers/timestamp.c:343 plugins/sudoers/timestamp.c:346 +#: plugins/sudoers/cvtsudoers.c:1499 plugins/sudoers/sudoreplay.c:1142 +#: plugins/sudoers/timestamp.c:368 plugins/sudoers/timestamp.c:371 #, c-format msgid "unable to write to %s" msgstr "%s에 기록할 수 없습니다" -#: plugins/sudoers/cvtsudoers.c:1506 +#: plugins/sudoers/cvtsudoers.c:1527 #, c-format msgid "" "%s - convert between sudoers file formats\n" @@ -1761,7 +1778,7 @@ "%s - sudoers 파일 형식을 변환합니다\n" "\n" -#: plugins/sudoers/cvtsudoers.c:1508 +#: plugins/sudoers/cvtsudoers.c:1529 msgid "" "\n" "Options:\n" @@ -1805,37 +1822,36 @@ #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 #: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:340 #: plugins/sudoers/env.c:347 plugins/sudoers/env.c:458 -#: plugins/sudoers/ldap.c:528 plugins/sudoers/ldap.c:761 -#: plugins/sudoers/ldap.c:1134 plugins/sudoers/ldap_conf.c:222 -#: plugins/sudoers/ldap_conf.c:313 plugins/sudoers/ldap_util.c:486 +#: plugins/sudoers/ldap.c:509 plugins/sudoers/ldap.c:626 +#: plugins/sudoers/ldap.c:999 plugins/sudoers/ldap_conf.c:219 +#: plugins/sudoers/ldap_conf.c:310 plugins/sudoers/ldap_util.c:486 #: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:461 -#: plugins/sudoers/logging.c:817 plugins/sudoers/logging.c:827 -#: plugins/sudoers/policy.c:807 plugins/sudoers/policy.c:818 +#: plugins/sudoers/policy.c:824 plugins/sudoers/policy.c:835 #: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 #: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/sudoreplay.c:1339 plugins/sudoers/sudoreplay.c:1345 -#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/toke_util.c:213 toke.l:995 toke.l:1197 +#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/toke_util.c:213 toke.l:996 toke.l:1259 #, c-format msgid "internal error, %s overflow" msgstr "내부 오류. %s 오버플로우" -#: plugins/sudoers/cvtsudoers_csv.c:452 plugins/sudoers/cvtsudoers_csv.c:466 -#: plugins/sudoers/cvtsudoers_json.c:657 plugins/sudoers/cvtsudoers_json.c:672 +#: plugins/sudoers/cvtsudoers_csv.c:454 plugins/sudoers/cvtsudoers_csv.c:468 +#: plugins/sudoers/cvtsudoers_json.c:661 plugins/sudoers/cvtsudoers_json.c:676 #: plugins/sudoers/cvtsudoers_ldif.c:347 plugins/sudoers/cvtsudoers_ldif.c:360 -#: plugins/sudoers/ldap.c:512 +#: plugins/sudoers/ldap.c:493 msgid "unable to get GMT time" msgstr "GMT 시간을 가져올 수 없습니다" -#: plugins/sudoers/cvtsudoers_csv.c:457 plugins/sudoers/cvtsudoers_csv.c:471 -#: plugins/sudoers/cvtsudoers_json.c:662 plugins/sudoers/cvtsudoers_json.c:677 +#: plugins/sudoers/cvtsudoers_csv.c:459 plugins/sudoers/cvtsudoers_csv.c:473 +#: plugins/sudoers/cvtsudoers_json.c:666 plugins/sudoers/cvtsudoers_json.c:681 #: plugins/sudoers/cvtsudoers_ldif.c:352 plugins/sudoers/cvtsudoers_ldif.c:365 -#: plugins/sudoers/ldap.c:520 +#: plugins/sudoers/ldap.c:501 msgid "unable to format timestamp" msgstr "타임스탬프를 형식에 맞출 수 없습니다" -#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:515 -#: plugins/sudoers/cvtsudoers_json.c:728 +#: plugins/sudoers/cvtsudoers_json.c:481 plugins/sudoers/cvtsudoers_json.c:516 +#: plugins/sudoers/cvtsudoers_json.c:732 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" msgstr "%s:%d:%d: 알 수 없는 \"%s\" 기본 항목" @@ -2644,18 +2660,18 @@ msgid "value \"%s\" is invalid for option \"%s\"" msgstr "\"%s\" 값은 \"%s\" 옵션에 맞지 않습니다" -#: plugins/sudoers/defaults.c:1128 plugins/sudoers/policy.c:210 -#: plugins/sudoers/policy.c:219 +#: plugins/sudoers/defaults.c:1127 plugins/sudoers/policy.c:205 +#: plugins/sudoers/policy.c:214 #, c-format msgid "path name for \"%s\" too long" msgstr "\"%s\" 경로 이름이 너무 깁니다" -#: plugins/sudoers/defaults.c:1134 +#: plugins/sudoers/defaults.c:1133 #, c-format msgid "values for \"%s\" must start with a '/', '~', or '*'" msgstr "\"%s\" 값은 '/', '~', '*' 문자로 시작해야합니다" -#: plugins/sudoers/defaults.c:1141 +#: plugins/sudoers/defaults.c:1140 #, c-format msgid "values for \"%s\" must start with a '/'" msgstr "\"%s\" 값은 '/' 문자로 시작해야합니다" @@ -2682,12 +2698,12 @@ msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "죄송하지만 다음 환경 변수를 설정하도록 허가받지 않았습니다: %s" -#: plugins/sudoers/filedigest.c:49 +#: plugins/sudoers/filedigest.c:50 #, c-format -msgid "unsupported digest type %d for %s" -msgstr "%2$s에서 지원하지 않는 다이제스트 형식 %1$d" +msgid "unsupported digest type %u for %s" +msgstr "%2$s에서 지원하지 않는 다이제스트 형식 %1$u" -#: plugins/sudoers/filedigest.c:78 +#: plugins/sudoers/filedigest.c:79 #, c-format msgid "%s: read error" msgstr "%s: 읽기 오류" @@ -2721,80 +2737,80 @@ msgid "Local IP address and netmask pairs:\n" msgstr "로컬 IP 주소 및 넷마스크 쌍:\n" -#: plugins/sudoers/iolog.c:685 +#: plugins/sudoers/iolog.c:684 msgid "unable to update sequence file" msgstr "시퀀스 파일을 업데이트할 수 없습니다" -#: plugins/sudoers/iolog.c:719 plugins/sudoers/iolog.c:907 -#: plugins/sudoers/iolog.c:1069 plugins/sudoers/iolog.c:1076 -#: plugins/sudoers/iolog.c:1197 plugins/sudoers/iolog.c:1204 -#: plugins/sudoers/iolog.c:1303 plugins/sudoers/iolog.c:1310 +#: plugins/sudoers/iolog.c:718 plugins/sudoers/iolog.c:906 +#: plugins/sudoers/iolog.c:1068 plugins/sudoers/iolog.c:1075 +#: plugins/sudoers/iolog.c:1196 plugins/sudoers/iolog.c:1203 +#: plugins/sudoers/iolog.c:1302 plugins/sudoers/iolog.c:1309 #, c-format msgid "unable to write to I/O log file: %s" msgstr "입출력 로그에 기록할 수 없습니다: %s" -#: plugins/sudoers/iolog.c:727 +#: plugins/sudoers/iolog.c:726 #, c-format msgid "unable to create %s/%s" msgstr "%s/%s을(를) 만들 수 없습니다" -#: plugins/sudoers/iolog.c:955 +#: plugins/sudoers/iolog.c:954 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: 내부 오류. 이벤트 %d 번의 입출력 로그 파일을 열지 않았습니다" -#: plugins/sudoers/iolog.c:1054 plugins/sudoers/iolog.c:1182 -#: plugins/sudoers/iolog.c:1287 plugins/sudoers/timestamp.c:879 -#: plugins/sudoers/timestamp.c:971 plugins/sudoers/visudo.c:556 -#: plugins/sudoers/visudo.c:562 +#: plugins/sudoers/iolog.c:1053 plugins/sudoers/iolog.c:1181 +#: plugins/sudoers/iolog.c:1286 plugins/sudoers/timestamp.c:904 +#: plugins/sudoers/timestamp.c:996 plugins/sudoers/visudo.c:559 +#: plugins/sudoers/visudo.c:565 msgid "unable to read the clock" msgstr "클록을 읽을 수 없습니다" -#: plugins/sudoers/iolog.c:1279 plugins/sudoers/log_client.c:1192 -#: plugins/sudoers/log_client.c:1202 plugins/sudoers/log_client.c:1206 +#: plugins/sudoers/iolog.c:1278 plugins/sudoers/log_client.c:1200 +#: plugins/sudoers/log_client.c:1210 plugins/sudoers/log_client.c:1214 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: 내부 오류. 부적절한 시그널 %d번" -#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:292 +#: plugins/sudoers/ldap.c:154 plugins/sudoers/ldap_conf.c:289 msgid "starttls not supported when using ldaps" msgstr "ldaps를 사용할 때 starttls를 지원하지 않습니다" -#: plugins/sudoers/ldap.c:248 +#: plugins/sudoers/ldap.c:225 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "SSL 인증서 및 키 DB를 초기화할 수 없습니다: %s" -#: plugins/sudoers/ldap.c:251 +#: plugins/sudoers/ldap.c:228 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "SSL을 사용하려면 %s에서 TLS_CERT를 설정해야 합니다" -#: plugins/sudoers/ldap.c:1714 +#: plugins/sudoers/ldap.c:1587 #, c-format msgid "unable to initialize LDAP: %s" msgstr "LDAP를 초기화할 수 없습니다: %s" -#: plugins/sudoers/ldap.c:1751 +#: plugins/sudoers/ldap.c:1624 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "start_tls를 지정했지만 LDAP 라이브러리에서 ldap_start_tls_s() 또는 ldap_start_tls_s_np() 함수를 지원하지 않습니다" -#: plugins/sudoers/ldap.c:1888 plugins/sudoers/parse_ldif.c:748 +#: plugins/sudoers/ldap.c:1761 plugins/sudoers/parse_ldif.c:748 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "부적절한 sudoOrder 속성: %s" -#: plugins/sudoers/ldap_conf.c:200 +#: plugins/sudoers/ldap_conf.c:197 #, c-format msgid "%s: port too large" msgstr "%s: 포트 번호가 너무 큽니다" -#: plugins/sudoers/ldap_conf.c:261 +#: plugins/sudoers/ldap_conf.c:258 #, c-format msgid "unsupported LDAP uri type: %s" msgstr "지원하지 않는 LDAP URI 형식: %s" -#: plugins/sudoers/ldap_conf.c:288 +#: plugins/sudoers/ldap_conf.c:285 msgid "unable to mix ldap and ldaps URIs" msgstr "ldap 및 ldaps URI를 함께 사용할 수 없습니다" @@ -2820,7 +2836,7 @@ msgstr "감시 메시지를 보낼 수 없습니다" #: plugins/sudoers/log_client.c:125 plugins/sudoers/log_client.c:412 -#: plugins/sudoers/log_client.c:1439 plugins/sudoers/log_client.c:2055 +#: plugins/sudoers/log_client.c:1447 plugins/sudoers/log_client.c:2069 msgid "error in event loop" msgstr "이벤트 루프 오류" @@ -2854,28 +2870,28 @@ msgid "TLS connection to %s:%s failed: %s" msgstr "%s:%s로의 TLS 연결 실패: %s" -#: plugins/sudoers/log_client.c:543 +#: plugins/sudoers/log_client.c:545 msgid "TLS initialization was unsuccessful" msgstr "TLS 초기화에 실패했습니다" -#: plugins/sudoers/log_client.c:553 +#: plugins/sudoers/log_client.c:555 msgid "TLS handshake was unsuccessful" msgstr "TLS 핸드셰이킹에 실패했습니다" -#: plugins/sudoers/log_client.c:1210 +#: plugins/sudoers/log_client.c:1218 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: 내부 오류. 부적절한 종료 상태 %d" -#: plugins/sudoers/log_client.c:1739 plugins/sudoers/log_client.c:1763 +#: plugins/sudoers/log_client.c:1753 plugins/sudoers/log_client.c:1777 msgid "lost connection to log server" msgstr "로그 서버의 연결이 끊어졌습니다" -#: plugins/sudoers/log_client.c:1840 +#: plugins/sudoers/log_client.c:1854 msgid "missing write buffer" msgstr "기록 버퍼 빠짐" -#: plugins/sudoers/log_client.c:1994 +#: plugins/sudoers/log_client.c:2008 msgid "unable to connect to log server" msgstr "로그 서버에 연결할 수 없습니다" @@ -2908,22 +2924,22 @@ #: plugins/sudoers/logging.c:324 #, 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" +msgid "Sorry, user %s is not allowed to execute '%s%s%s%s' as %s%s%s on %s.\n" +msgstr "죄송하지만 %1$s 사용자는 '%2$s%3$s%4$s%5$s'을(를) %9$s의 %6$s%7$s%8$s(으)로 실행하도록 허가받지 않았습니다.\n" #: plugins/sudoers/logging.c:334 msgid "This incident has been reported to the administrator.\n" msgstr "이번 시도는 관리자에게 보고했습니다.\n" -#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:657 plugins/sudoers/sudoers.c:659 -#: plugins/sudoers/sudoers.c:661 plugins/sudoers/sudoers.c:816 -#: plugins/sudoers/sudoers.c:818 +#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:566 +#: plugins/sudoers/sudoers.c:567 plugins/sudoers/sudoers.c:569 +#: plugins/sudoers/sudoers.c:570 plugins/sudoers/sudoers.c:791 +#: plugins/sudoers/sudoers.c:793 #, c-format msgid "%s: command not found" msgstr "%s: 명령이 없습니다" -#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:651 +#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:562 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2946,31 +2962,31 @@ msgid "a password is required" msgstr "암호가 필요합니다" -#: plugins/sudoers/logging.c:803 plugins/sudoers/logging.c:815 +#: plugins/sudoers/logging.c:855 msgid "problem parsing sudoers" msgstr "sudoers 해석 문제" -#: plugins/sudoers/logging.c:877 plugins/sudoers/logging.c:889 +#: plugins/sudoers/logging.c:896 plugins/sudoers/logging.c:904 #, c-format msgid "%s:%d:%d: %s" msgstr "%s:%d:%d: %s" -#: plugins/sudoers/logging.c:1066 +#: plugins/sudoers/logging.c:1079 #, c-format msgid "unable to write log file: %s" msgstr "로그 파일에 기록할 수 없습니다: %s" -#: plugins/sudoers/match_digest.c:112 +#: plugins/sudoers/match_digest.c:101 #, c-format msgid "digest for %s (%s) bad length %zu, expected %zu" msgstr "%1$s 다이제스트(%2$s)는 %4$zu 길이를 기대했지만 잘못된 %3$zu 길이를 가졌습니다" -#: plugins/sudoers/match_digest.c:131 +#: plugins/sudoers/match_digest.c:120 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "%s 다이제스트(%s)는 %s 형식이 아닙니다" -#: plugins/sudoers/parse.c:631 +#: plugins/sudoers/parse.c:643 #, c-format msgid "" "\n" @@ -2979,7 +2995,7 @@ "\n" "LDAP 역할: %s\n" -#: plugins/sudoers/parse.c:634 +#: plugins/sudoers/parse.c:646 msgid "" "\n" "Sudoers entry:\n" @@ -2987,38 +3003,38 @@ "\n" "Sudoers 항목:\n" -#: plugins/sudoers/parse.c:636 +#: plugins/sudoers/parse.c:648 msgid " RunAsUsers: " msgstr " 실행 사용자: " -#: plugins/sudoers/parse.c:651 +#: plugins/sudoers/parse.c:663 msgid " RunAsGroups: " msgstr " 실행 그룹: " -#: plugins/sudoers/parse.c:661 +#: plugins/sudoers/parse.c:673 msgid " Options: " msgstr " 옵션: " -#: plugins/sudoers/parse.c:725 +#: plugins/sudoers/parse.c:737 msgid " Commands:\n" msgstr " 명령:\n" -#: plugins/sudoers/parse.c:916 +#: plugins/sudoers/parse.c:928 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "%2$s에서 %1$s에 일치하는 기본 항목:\n" -#: plugins/sudoers/parse.c:934 +#: plugins/sudoers/parse.c:946 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "%s의 실행 권한 및 명령별 기본 값:\n" -#: plugins/sudoers/parse.c:952 +#: plugins/sudoers/parse.c:964 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "%s 사용자는 %s에서 다음 명령을 실행해야 합니다:\n" -#: plugins/sudoers/parse.c:967 +#: plugins/sudoers/parse.c:979 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "%s 사용자는 %s에서 sudo를 실행하도록 허가받지 않았습니다.\n" @@ -3033,64 +3049,72 @@ msgid "invalid LDIF attribute: %s" msgstr "부적절한 LDIF 속성: %s" -#: plugins/sudoers/policy.c:82 plugins/sudoers/policy.c:113 +#: plugins/sudoers/pivot.c:74 +msgid "unable to restore root directory" +msgstr "루트 디렉터리를 복원할 수 없습니다" + +#: plugins/sudoers/pivot.c:82 +msgid "unable to restore current working directory" +msgstr "현재 작업 디렉터리를 복원할 수 없습니다" + +#: 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:360 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:356 plugins/sudoers/testsudoers.c:277 msgid "unable to parse network address list" msgstr "네트워크 주소 목록을 해석할 수 없습니다" -#: plugins/sudoers/policy.c:528 +#: plugins/sudoers/policy.c:524 msgid "user name not set by sudo front-end" msgstr "sudo 프론트엔드에서 사용자 이름을 설정하지 않았습니다" -#: plugins/sudoers/policy.c:532 +#: plugins/sudoers/policy.c:528 msgid "user-ID not set by sudo front-end" msgstr "sudo 프론트엔드에서 사용자 ID를 설정하지 않았습니다" -#: plugins/sudoers/policy.c:536 +#: plugins/sudoers/policy.c:532 msgid "group-ID not set by sudo front-end" msgstr "sudo 프론트엔드에서 그룹 ID를 지정하지 않았습니다" -#: plugins/sudoers/policy.c:540 +#: plugins/sudoers/policy.c:536 msgid "host name not set by sudo front-end" msgstr "sudo 프론트엔드에서 호스트 이름을 설정하지 않았습니다" -#: plugins/sudoers/policy.c:737 +#: plugins/sudoers/policy.c:754 #, c-format msgid "invalid working directory: %s" msgstr "부적절한 작업 디렉터리: %s" -#: plugins/sudoers/policy.c:921 +#: plugins/sudoers/policy.c:938 #, c-format msgid "invalid chroot directory: %s" msgstr "부적절한 루트 변경 디렉터리: %s" -#: plugins/sudoers/policy.c:1108 plugins/sudoers/visudo.c:259 -#: plugins/sudoers/visudo.c:906 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/visudo.c:910 +#: plugins/sudoers/visudo.c:1209 #, c-format msgid "unable to execute %s" msgstr "%s을(를) 실행할 수 없습니다" -#: plugins/sudoers/policy.c:1178 plugins/sudoers/policy.c:1215 -#: plugins/sudoers/policy.c:1237 plugins/sudoers/policy.c:1263 +#: plugins/sudoers/policy.c:1195 plugins/sudoers/policy.c:1230 +#: plugins/sudoers/policy.c:1252 plugins/sudoers/policy.c:1274 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s: sudo 프론트엔드의 상태 플래그가 잘못되었습니다: 0x%x" -#: plugins/sudoers/policy.c:1299 +#: plugins/sudoers/policy.c:1294 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Sudoers 정책 플러그인 버전 %s\n" -#: plugins/sudoers/policy.c:1301 +#: plugins/sudoers/policy.c:1296 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Sudoers 파일 문법 버전 %d\n" -#: plugins/sudoers/policy.c:1305 +#: plugins/sudoers/policy.c:1300 #, c-format msgid "" "\n" @@ -3099,27 +3123,27 @@ "\n" "Sudoers 경로: %s\n" -#: plugins/sudoers/policy.c:1308 +#: plugins/sudoers/policy.c:1303 #, c-format msgid "nsswitch path: %s\n" msgstr "nsswitch 경로: %s\n" -#: plugins/sudoers/policy.c:1310 +#: plugins/sudoers/policy.c:1305 #, c-format msgid "ldap.conf path: %s\n" msgstr "ldap.conf 경로: %s\n" -#: plugins/sudoers/policy.c:1311 +#: plugins/sudoers/policy.c:1306 #, c-format msgid "ldap.secret path: %s\n" msgstr "ldap.secret 경로: %s\n" -#: plugins/sudoers/policy.c:1344 +#: plugins/sudoers/policy.c:1339 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "%d 형식의 후크를 등록할 수 없습니다(버전 %d.%d)" -#: plugins/sudoers/policy.c:1362 +#: plugins/sudoers/policy.c:1357 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "%d 형식의 후크 등록을 해제할 수 없습니다(버전 %d.%d)" @@ -3188,48 +3212,48 @@ msgid "unable to parse gids for %s" msgstr "%s 그룹 ID를 해석할 수 없습니다" -#: 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 +#: plugins/sudoers/set_perms.c:115 plugins/sudoers/set_perms.c:451 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1178 +#: plugins/sudoers/set_perms.c:1481 msgid "perm stack overflow" msgstr "권한 스택 오버플로우" -#: 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 +#: plugins/sudoers/set_perms.c:126 plugins/sudoers/set_perms.c:382 +#: plugins/sudoers/set_perms.c:462 plugins/sudoers/set_perms.c:730 +#: plugins/sudoers/set_perms.c:874 plugins/sudoers/set_perms.c:1102 +#: plugins/sudoers/set_perms.c:1189 plugins/sudoers/set_perms.c:1414 +#: plugins/sudoers/set_perms.c:1492 plugins/sudoers/set_perms.c:1583 msgid "perm stack underflow" msgstr "권한 스택 언더플로우" -#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 -#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 +#: plugins/sudoers/set_perms.c:186 plugins/sudoers/set_perms.c:509 +#: plugins/sudoers/set_perms.c:1243 plugins/sudoers/set_perms.c:1526 msgid "unable to change to root gid" msgstr "루트 gid로 바꿀 수 없습니다" -#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 -#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 +#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:606 +#: plugins/sudoers/set_perms.c:1006 plugins/sudoers/set_perms.c:1320 msgid "unable to change to runas gid" msgstr "실행 gid로 바꿀 수 없습니다" -#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 -#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 +#: plugins/sudoers/set_perms.c:282 plugins/sudoers/set_perms.c:611 +#: plugins/sudoers/set_perms.c:1011 plugins/sudoers/set_perms.c:1325 msgid "unable to set runas group vector" msgstr "실행 그룹 벡터를 설정할 수 없습니다" -#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 -#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:293 plugins/sudoers/set_perms.c:622 +#: plugins/sudoers/set_perms.c:1020 plugins/sudoers/set_perms.c:1334 msgid "unable to change to runas uid" msgstr "실행 uid로 바꿀 수 없습니다" -#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 -#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 +#: plugins/sudoers/set_perms.c:315 plugins/sudoers/set_perms.c:644 +#: plugins/sudoers/set_perms.c:1040 plugins/sudoers/set_perms.c:1354 msgid "unable to change to sudoers gid" msgstr "sudoers gid로 바꿀 수 없습니다" -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 msgid "too many processes" msgstr "동작 중인 프로세스가 너무 많습니다" @@ -3258,150 +3282,150 @@ msgid "unable to find symbol \"%s\" in %s" msgstr "%2$s에서 \"%1$s\" 심볼을 찾을 수 없습니다" -#: plugins/sudoers/sudoers.c:263 +#: plugins/sudoers/sudoers.c:261 #, c-format msgid "unable to get defaults from %s" msgstr "%s의 기본값을 가져올 수 없습니다" -#: plugins/sudoers/sudoers.c:270 +#: plugins/sudoers/sudoers.c:268 msgid "no valid sudoers sources found, quitting" msgstr "올바른 sudoers 설정 원본이 없습니다. 나갑니다." -#: plugins/sudoers/sudoers.c:346 +#: plugins/sudoers/sudoers.c:344 #, c-format msgid "user not allowed to change root directory to %s" msgstr "%s을(를) 루트 디렉터리로 변환하도록 허용하지 않습니다" -#: plugins/sudoers/sudoers.c:348 +#: plugins/sudoers/sudoers.c:346 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "-R 옵션과 %s 옵션의 병행 사용을 허가받지 않았습니다" -#: plugins/sudoers/sudoers.c:373 +#: plugins/sudoers/sudoers.c:371 #, c-format msgid "user not allowed to change directory to %s" msgstr "%s 디렉터리로의 이동을 허용하지 않습니다" -#: plugins/sudoers/sudoers.c:374 +#: plugins/sudoers/sudoers.c:372 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "-D 옵션과 %s 옵션의 병행 사용을 허가받지 않았습니다" -#: plugins/sudoers/sudoers.c:401 -msgid "no command specified" -msgstr "지정한 명령이 없음" - -#: plugins/sudoers/sudoers.c:426 +#: plugins/sudoers/sudoers.c:412 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers에서 root가 sudo를 실행하지 못하게 지정했습니다" -#: plugins/sudoers/sudoers.c:483 +#: plugins/sudoers/sudoers.c:421 msgid "user not allowed to override closefrom limit" msgstr "사용자가 closefrom 제한 값을 따로 적용하도록 허용하지 않았습니다" -#: plugins/sudoers/sudoers.c:484 +#: plugins/sudoers/sudoers.c:422 msgid "you are not permitted to use the -C option" msgstr "-C 옵션 사용을 허가받지 않았습니다" -#: plugins/sudoers/sudoers.c:544 -#, c-format -msgid "timestamp owner (%s): No such user" -msgstr "타임스탬프 소유자(%s): 사용자 없음" - -#: plugins/sudoers/sudoers.c:559 +#: plugins/sudoers/sudoers.c:468 msgid "no tty" msgstr "tty 없음" -#: plugins/sudoers/sudoers.c:560 +#: plugins/sudoers/sudoers.c:469 msgid "sorry, you must have a tty to run sudo" msgstr "죄송하지만 sudo를 실행하려면 tty를 확보해야합니다" -#: plugins/sudoers/sudoers.c:567 +#: plugins/sudoers/sudoers.c:477 #, c-format msgid "invalid shell for user %s: %s" msgstr "%s 사용자에게 부적절한 셸 제공: %s" -#: plugins/sudoers/sudoers.c:650 +#: plugins/sudoers/sudoers.c:561 msgid "command in current directory" msgstr "현재 디렉터리의 명령" -#: plugins/sudoers/sudoers.c:665 +#: plugins/sudoers/sudoers.c:574 msgid "\"cd\" is a shell built-in command, it cannot be run directly." msgstr "\"cd\"는 셸 내장 명령으로, 직접 실행할 수 없습니다." -#: plugins/sudoers/sudoers.c:667 +#: plugins/sudoers/sudoers.c:576 msgid "the -s option may be used to run a privileged shell." msgstr "-s 옵션은 별도 권한을 부여한 셸에서 실행할 때 사용합니다." -#: plugins/sudoers/sudoers.c:669 +#: plugins/sudoers/sudoers.c:578 msgid "the -D option may be used to run a command in a specific directory." msgstr "-D 옵션은 지정 디렉터리에서 명령을 실행할 때 사용합니다." -#: plugins/sudoers/sudoers.c:678 +#: plugins/sudoers/sudoers.c:587 msgid "user not allowed to set a command timeout" msgstr "사용자가 명령 처리 제한 시간을 설정하도록 허용하지 않았습니다" -#: plugins/sudoers/sudoers.c:680 +#: plugins/sudoers/sudoers.c:589 msgid "sorry, you are not allowed set a command timeout" msgstr "죄송하지만, 명령 처리 제한 시간을 설정할 수 없습니다" -#: plugins/sudoers/sudoers.c:688 +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to preserve the environment" msgstr "사용자가 환경 설정 값을 유지하도록 허용하지 않았습니다" -#: plugins/sudoers/sudoers.c:690 +#: plugins/sudoers/sudoers.c:599 msgid "sorry, you are not allowed to preserve the environment" msgstr "죄송하지만 이 환경 상태를 유지하도록 허가받지 않았습니다" -#: plugins/sudoers/sudoers.c:799 +#: plugins/sudoers/sudoers.c:635 +msgid "no command specified" +msgstr "지정한 명령이 없음" + +#: plugins/sudoers/sudoers.c:774 msgid "error setting user-specified environment variables" msgstr "사용자 지정 환경 변수 설정 오류" -#: plugins/sudoers/sudoers.c:1112 +#: plugins/sudoers/sudoers.c:1239 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit는 sudo로 실행할 필요가 없습니다" -#: plugins/sudoers/sudoers.c:1157 plugins/sudoers/sudoreplay.c:1612 +#: plugins/sudoers/sudoers.c:1314 plugins/sudoers/sudoreplay.c:1612 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "%s을(를) 읽을 수 없습니다" -#: plugins/sudoers/sudoers.c:1186 plugins/sudoers/visudo.c:1066 +#: plugins/sudoers/sudoers.c:1337 plugins/sudoers/visudo.c:1114 #, c-format msgid "%s is not a regular file" msgstr "%s은(는) 일반 파일이 아닙니다" -#: plugins/sudoers/sudoers.c:1190 plugins/sudoers/timestamp.c:263 toke.l:1255 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/timestamp.c:288 toke.l:1325 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s은(는) %u uid가 소유했지만, %u uid가 소유해야합니다" -#: plugins/sudoers/sudoers.c:1194 plugins/sudoers/timestamp.c:270 toke.l:1260 +#: plugins/sudoers/sudoers.c:1345 plugins/sudoers/timestamp.c:295 toke.l:1330 #, c-format msgid "%s is world writable" msgstr "%s에 모두가 기록할 수 있습니다" -#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/timestamp.c:275 toke.l:1263 +#: plugins/sudoers/sudoers.c:1349 plugins/sudoers/timestamp.c:300 toke.l:1333 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s은(는) %u gid가 소유했지만, %u gid가 소유해야합니다" -#: plugins/sudoers/sudoers.c:1233 +#: plugins/sudoers/sudoers.c:1377 #, c-format msgid "only root can use \"-c %s\"" msgstr "루트만 \"-c %s\" 옵션을 사용할 수 있습니다" -#: plugins/sudoers/sudoers.c:1252 +#: plugins/sudoers/sudoers.c:1396 #, c-format msgid "unknown login class %s" msgstr "알 수 없는 로그인 클래스 %s" -#: plugins/sudoers/sudoers.c:1339 plugins/sudoers/sudoers.c:1354 +#: plugins/sudoers/sudoers.c:1483 plugins/sudoers/sudoers.c:1498 #, c-format msgid "unable to resolve host %s" msgstr "%s 호스트를 해석할 수 없습니다" +#: plugins/sudoers/sudoers.c:1636 +#, c-format +msgid "%s:%d:%d timestampowner: unknown user %s" +msgstr "%s:%d:%d timestampowner: 알 수 없는 %s 사용자" + #: plugins/sudoers/sudoreplay.c:252 #, c-format msgid "invalid filter option: %s" @@ -3542,11 +3566,11 @@ " -s, --speed=<숫자> 출력 속도를 올리거나 내립니다\n" " -V, --version 버전 정보를 나타낸 후 빠져나갑니다" -#: plugins/sudoers/testsudoers.c:344 +#: plugins/sudoers/testsudoers.c:355 msgid "\thost unmatched" msgstr "\t호스트가 일치하지 않습니다" -#: plugins/sudoers/testsudoers.c:347 +#: plugins/sudoers/testsudoers.c:358 msgid "" "\n" "Command allowed" @@ -3554,7 +3578,7 @@ "\n" "명령 허용함" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command denied" @@ -3562,7 +3586,7 @@ "\n" "명령 거부함" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command unmatched" @@ -3570,21 +3594,21 @@ "\n" "명령이 일치하지 않음" -#: plugins/sudoers/timestamp.c:354 plugins/sudoers/timestamp.c:693 +#: plugins/sudoers/timestamp.c:379 plugins/sudoers/timestamp.c:718 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "타임스탬프 파일을 %lld 바이트로 자를 수 없습니다" -#: plugins/sudoers/timestamp.c:890 +#: plugins/sudoers/timestamp.c:915 msgid "ignoring time stamp from the future" msgstr "미래 타임스탬프 값 무시" -#: plugins/sudoers/timestamp.c:913 +#: plugins/sudoers/timestamp.c:938 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "타임스탬프 값이 미래 값으로 너무 밀려있습니다: %20.20s" -#: plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1067 #, c-format msgid "unable to lock time stamp file %s" msgstr "%s 타임스탬프 파일을 잠글 수 없습니다" @@ -3593,99 +3617,91 @@ msgid "sudoedit should not be specified with a path" msgstr "sudoedit에 경로를 지정하면 안됩니다" -#: plugins/sudoers/visudo.c:254 -msgid "the -x option will be removed in a future release" -msgstr "-x 옵션은 추후 릴리스에서 제거 예정입니다" - -#: plugins/sudoers/visudo.c:256 -msgid "please consider using the cvtsudoers utility instead" -msgstr "cvtsudoers 유틸리티를 대신 사용해보십시오" - -#: plugins/sudoers/visudo.c:311 plugins/sudoers/visudo.c:702 +#: plugins/sudoers/visudo.c:314 plugins/sudoers/visudo.c:705 #, c-format msgid "press return to edit %s: " msgstr "%s 항목을 편집하려면 return 키를 누르십시오: " -#: plugins/sudoers/visudo.c:326 +#: plugins/sudoers/visudo.c:329 #, c-format msgid "contents of edit session left in %s" msgstr "%s에 편집 세션 내용이 남았습니다" -#: plugins/sudoers/visudo.c:403 +#: plugins/sudoers/visudo.c:406 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "지정 편집기(%s)가 없습니다" -#: plugins/sudoers/visudo.c:408 +#: plugins/sudoers/visudo.c:411 #, c-format msgid "no editor found (editor path = %s)" msgstr "편집기가 없습니다(편집기 경로 = %s)" -#: plugins/sudoers/visudo.c:495 plugins/sudoers/visudo.c:774 +#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:777 #, c-format msgid "unable to stat %s" msgstr "%s의 상태를 가져올 수 없습니다" -#: plugins/sudoers/visudo.c:515 plugins/sudoers/visudo.c:523 +#: plugins/sudoers/visudo.c:518 plugins/sudoers/visudo.c:526 msgid "write error" msgstr "쓰기 오류" -#: plugins/sudoers/visudo.c:569 +#: plugins/sudoers/visudo.c:572 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "임시 파일 상태를 가져올 수 없습니다(%s). %s을(를) 바꾸지 않았습니다" -#: plugins/sudoers/visudo.c:576 +#: plugins/sudoers/visudo.c:579 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "임시 파일 길이가 0입니다(%s). %s을(를) 바꾸지 않았습니다" -#: plugins/sudoers/visudo.c:582 +#: plugins/sudoers/visudo.c:585 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "편집기(%s) 실패. %s을(를) 바꾸지 않았습니다" -#: plugins/sudoers/visudo.c:604 +#: plugins/sudoers/visudo.c:607 #, c-format msgid "%s unchanged" msgstr "%s 바꾸지 않음" -#: plugins/sudoers/visudo.c:649 +#: plugins/sudoers/visudo.c:652 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "임시 파일(%s)을 다시 열 수 없습니다. %s을(를) 바꾸지 않았습니다." -#: plugins/sudoers/visudo.c:662 +#: plugins/sudoers/visudo.c:665 #, c-format msgid "unable to parse temporary file (%s), unknown error" msgstr "임시 파일(%s)을 해석할 수 없습니다. 알 수 없는 오류" -#: plugins/sudoers/visudo.c:748 plugins/sudoers/visudo.c:778 -#: plugins/sudoers/visudo.c:785 +#: plugins/sudoers/visudo.c:751 plugins/sudoers/visudo.c:781 +#: plugins/sudoers/visudo.c:788 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "%s의 uid/gid를 %u/%u 값으로 설정할 수 없습니다" -#: plugins/sudoers/visudo.c:813 +#: plugins/sudoers/visudo.c:816 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "%s 및 %s은(는) 동일한 파일 시스템에 없습니다. mv 명령으로 이름을 바꿉니다" -#: plugins/sudoers/visudo.c:824 +#: plugins/sudoers/visudo.c:827 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "명령 실행 실패: '%s %s %s', %s을(를) 바꾸지 않았습니다" -#: plugins/sudoers/visudo.c:831 +#: plugins/sudoers/visudo.c:834 #, c-format msgid "error renaming %s, %s unchanged" msgstr "%s 이름 바꾸기 오류. %s을(를) 바꾸지 않았습니다" -#: plugins/sudoers/visudo.c:851 +#: plugins/sudoers/visudo.c:855 msgid "What now? " msgstr "어떻게 하시겠습니까? " -#: plugins/sudoers/visudo.c:865 +#: plugins/sudoers/visudo.c:869 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -3697,41 +3713,49 @@ " sudoers 파일을 바꾼 상태에서 저장하지 않고 나갑니다(X)\n" " sudoers 파일을 바꾼 상태에서 저장하고 끝냅니다(Q)\n" -#: plugins/sudoers/visudo.c:911 +#: plugins/sudoers/visudo.c:915 #, c-format msgid "unable to run %s" msgstr "%s을(를) 실행할 수 없음" -#: plugins/sudoers/visudo.c:942 +#: plugins/sudoers/visudo.c:946 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s: 잘못된 소유자 uid/gid를 %u/%u 값으로 설정해야 합니다\n" -#: plugins/sudoers/visudo.c:953 +#: plugins/sudoers/visudo.c:957 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s: 잘못된 권한입니다. 0%o 모드 값을 설정해야 합니다\n" -#: plugins/sudoers/visudo.c:999 plugins/sudoers/visudo.c:1006 +#: plugins/sudoers/visudo.c:1009 plugins/sudoers/visudo.c:1016 #, c-format msgid "%s: parsed OK\n" msgstr "%s: 해석 성공\n" -#: plugins/sudoers/visudo.c:1025 +#: plugins/sudoers/visudo.c:1035 #, c-format msgid "%s busy, try again later" msgstr "%s을(를) 사용중입니다. 나중에 다시 시도하십시오" -#: plugins/sudoers/visudo.c:1029 +#: plugins/sudoers/visudo.c:1039 msgid "Edit anyway? [y/N]" msgstr "그래도 편집하시겠습니까? [y/N]" -#: plugins/sudoers/visudo.c:1130 +#: plugins/sudoers/visudo.c:1197 +msgid "the -x option will be removed in a future release" +msgstr "-x 옵션은 추후 릴리스에서 제거 예정입니다" + +#: plugins/sudoers/visudo.c:1199 +msgid "please consider using the cvtsudoers utility instead" +msgstr "cvtsudoers 유틸리티를 대신 사용해보십시오" + +#: plugins/sudoers/visudo.c:1219 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "경고: %s:%d:%d 사용하지 않는 %s \"%s\"이(가) 있습니다" -#: plugins/sudoers/visudo.c:1242 +#: plugins/sudoers/visudo.c:1332 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3740,7 +3764,7 @@ "%s - sudoers 파일을 안전하게 편집합니다\n" "\n" -#: plugins/sudoers/visudo.c:1244 +#: plugins/sudoers/visudo.c:1334 msgid "" "\n" "Options:\n" @@ -3762,38 +3786,49 @@ " -s, --strict 엄격한 문법 검사를 시행합니다\n" " -V, --version 버전 정보를 나타낸 후 빠져나갑니다\n" -#: toke.l:189 +#: toke.l:184 msgid "empty string" msgstr "빈 문자열" -#: toke.l:201 toke.l:571 +#: toke.l:196 toke.l:566 msgid "empty group" msgstr "빈 그룹" -#: toke.l:211 toke.l:569 +#: toke.l:206 toke.l:564 msgid "empty netgroup" msgstr "빈 네트워크 그룹" -#: toke.l:289 +#: toke.l:284 msgid "unterminated regular expression" msgstr "끝나지 않은 정규 표현식" -#: toke.l:363 toke.l:375 toke.l:387 toke.l:403 toke.l:422 toke.l:462 +#: toke.l:358 toke.l:370 toke.l:382 toke.l:398 toke.l:417 toke.l:457 msgid "invalid line continuation" msgstr "부적절한 연속 문자" -#: toke.l:608 toke.l:620 +#: toke.l:603 toke.l:615 msgid "invalid IPv6 address" msgstr "부적절한 IPv6 주소" -#: toke.l:876 +#: toke.l:863 msgid "unexpected line break in string" msgstr "예기치 않은 개행 문자 발견" -#: toke.l:1226 +#: toke.l:983 +msgid "ignoring editor backup file" +msgstr "편집기 백업 파일 무시" + +#: toke.l:986 +msgid "ignoring file name containing '.'" +msgstr "'.' 문자가 들어간 파일 이름 무시" + +#: toke.l:1289 msgid "too many levels of includes" msgstr "포함 레벨이 너무 많습니다" +#~ msgid "timestamp owner (%s): No such user" +#~ msgstr "타임스탬프 소유자(%s): 사용자 없음" + #~ msgid "%s must be owned by uid %d" #~ msgstr "%s은(는) %d uid가 소유해야 합니다" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/plugins/sudoers/po/pl.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/plugins/sudoers/po/pl.mo differ diff -Nru sudo-1.9.13p3/plugins/sudoers/po/pl.po sudo-1.9.14p2/plugins/sudoers/po/pl.po --- sudo-1.9.13p3/plugins/sudoers/po/pl.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/po/pl.po 2023-07-15 15:37:21.000000000 +0000 @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.13b2\n" +"Project-Id-Version: sudoers 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-26 19:15+0100\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-13 16:47+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" @@ -17,7 +17,7 @@ "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:1220 plugins/sudoers/logging.c:866 +#: confstr.sh:1 gram.y:1240 plugins/sudoers/logging.c:885 msgid "syntax error" msgstr "błąd składni" @@ -41,34 +41,34 @@ msgid "Sorry, try again." msgstr "Niestety, proszę spróbować ponownie." -#: gram.y:237 gram.y:304 gram.y:313 gram.y:322 gram.y:332 gram.y:342 -#: gram.y:366 gram.y:393 gram.y:402 gram.y:410 gram.y:419 gram.y:428 -#: gram.y:502 gram.y:512 gram.y:524 gram.y:572 gram.y:581 gram.y:590 -#: gram.y:599 gram.y:731 gram.y:739 gram.y:750 gram.y:762 gram.y:781 -#: gram.y:944 gram.y:949 gram.y:957 gram.y:971 gram.y:977 gram.y:1099 -#: gram.y:1108 gram.y:1116 gram.y:1125 gram.y:1134 gram.y:1163 gram.y:1172 -#: gram.y:1180 gram.y:1280 gram.y:1410 gram.y:1777 gram.y:1827 -#: lib/eventlog/eventlog.c:235 lib/eventlog/eventlog.c:312 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:834 -#: lib/eventlog/eventlog.c:1135 lib/iolog/iolog_filter.c:142 +#: gram.y:236 gram.y:303 gram.y:312 gram.y:321 gram.y:331 gram.y:341 +#: gram.y:365 gram.y:392 gram.y:401 gram.y:409 gram.y:418 gram.y:427 +#: gram.y:501 gram.y:511 gram.y:523 gram.y:571 gram.y:580 gram.y:589 +#: gram.y:598 gram.y:730 gram.y:738 gram.y:749 gram.y:761 gram.y:780 +#: gram.y:943 gram.y:948 gram.y:956 gram.y:970 gram.y:976 gram.y:988 +#: gram.y:994 gram.y:1119 gram.y:1128 gram.y:1136 gram.y:1145 gram.y:1154 +#: gram.y:1183 gram.y:1192 gram.y:1200 gram.y:1300 gram.y:1430 gram.y:1808 +#: gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:313 lib/eventlog/eventlog.c:755 +#: lib/eventlog/eventlog.c:832 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:472 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 #: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:233 -#: lib/iolog/iolog_json.c:150 lib/iolog/iolog_json.c:382 -#: lib/iolog/iolog_json.c:412 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:212 -#: logsrvd/iolog_writer.c:95 logsrvd/iolog_writer.c:100 -#: logsrvd/iolog_writer.c:134 logsrvd/iolog_writer.c:182 -#: logsrvd/iolog_writer.c:215 logsrvd/iolog_writer.c:225 -#: logsrvd/iolog_writer.c:254 logsrvd/iolog_writer.c:275 -#: logsrvd/iolog_writer.c:287 logsrvd/iolog_writer.c:297 -#: logsrvd/iolog_writer.c:307 logsrvd/iolog_writer.c:317 -#: logsrvd/iolog_writer.c:329 logsrvd/iolog_writer.c:364 -#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:377 -#: logsrvd/iolog_writer.c:383 logsrvd/iolog_writer.c:567 -#: logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 logsrvd/logsrvd.c:310 -#: logsrvd/logsrvd.c:1050 logsrvd/logsrvd.c:1113 logsrvd/logsrvd.c:1582 -#: logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 logsrvd/logsrvd.c:1988 +#: 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:212 logsrvd/iolog_writer.c:95 +#: logsrvd/iolog_writer.c:100 logsrvd/iolog_writer.c:134 +#: logsrvd/iolog_writer.c:182 logsrvd/iolog_writer.c:215 +#: logsrvd/iolog_writer.c:225 logsrvd/iolog_writer.c:254 +#: logsrvd/iolog_writer.c:275 logsrvd/iolog_writer.c:287 +#: logsrvd/iolog_writer.c:297 logsrvd/iolog_writer.c:307 +#: logsrvd/iolog_writer.c:317 logsrvd/iolog_writer.c:329 +#: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 +#: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:1058 logsrvd/logsrvd.c:1121 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 #: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 #: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 #: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 @@ -83,29 +83,31 @@ #: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1743 #: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:216 #: logsrvd/logsrvd_journal.c:217 logsrvd/logsrvd_journal.c:273 -#: logsrvd/logsrvd_journal.c:433 logsrvd/logsrvd_journal.c:435 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:216 -#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:279 -#: logsrvd/logsrvd_local.c:417 logsrvd/logsrvd_local.c:466 -#: logsrvd/logsrvd_local.c:467 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:473 logsrvd/logsrvd_queue.c:159 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/logsrvd_relay.c:444 logsrvd/logsrvd_relay.c:743 -#: logsrvd/logsrvd_relay.c:850 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 -#: logsrvd/sendlog.c:291 logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 -#: logsrvd/sendlog.c:1801 plugins/sudoers/audit.c:116 -#: plugins/sudoers/auth/bsdauth.c:150 plugins/sudoers/auth/kerb5.c:121 +#: logsrvd/logsrvd_journal.c:278 logsrvd/logsrvd_journal.c:438 +#: logsrvd/logsrvd_journal.c:440 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:216 logsrvd/logsrvd_local.c:278 +#: logsrvd/logsrvd_local.c:279 logsrvd/logsrvd_local.c:417 +#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:467 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:473 +#: logsrvd/logsrvd_queue.c:159 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/logsrvd_relay.c:446 +#: logsrvd/logsrvd_relay.c:745 logsrvd/logsrvd_relay.c:852 +#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:292 +#: logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 logsrvd/sendlog.c:624 +#: logsrvd/sendlog.c:1810 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/bsdauth.c:152 plugins/sudoers/auth/kerb5.c:121 #: plugins/sudoers/auth/kerb5.c:148 plugins/sudoers/auth/pam.c:687 #: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:175 plugins/sudoers/cvtsudoers.c:192 -#: plugins/sudoers/cvtsudoers.c:203 plugins/sudoers/cvtsudoers.c:333 -#: plugins/sudoers/cvtsudoers.c:372 plugins/sudoers/cvtsudoers.c:392 -#: plugins/sudoers/cvtsudoers.c:537 plugins/sudoers/cvtsudoers.c:670 -#: plugins/sudoers/cvtsudoers.c:688 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:870 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:246 +#: plugins/sudoers/canon_path.c:129 plugins/sudoers/canon_path.c:160 +#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:132 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:193 +#: plugins/sudoers/cvtsudoers.c:204 plugins/sudoers/cvtsudoers.c:334 +#: plugins/sudoers/cvtsudoers.c:373 plugins/sudoers/cvtsudoers.c:393 +#: plugins/sudoers/cvtsudoers.c:538 plugins/sudoers/cvtsudoers.c:691 +#: plugins/sudoers/cvtsudoers.c:709 plugins/sudoers/cvtsudoers.c:883 +#: plugins/sudoers/cvtsudoers.c:891 plugins/sudoers/cvtsudoers.c:1386 +#: plugins/sudoers/cvtsudoers.c:1390 plugins/sudoers/cvtsudoers.c:1492 +#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:247 #: 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:376 @@ -123,143 +125,152 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1158 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:212 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:689 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:691 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:294 plugins/sudoers/ldap_util.c:301 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:402 -#: plugins/sudoers/log_client.c:715 plugins/sudoers/log_client.c:736 -#: plugins/sudoers/log_client.c:1415 plugins/sudoers/log_client.c:1536 -#: plugins/sudoers/log_client.c:1636 plugins/sudoers/log_client.c:1972 -#: plugins/sudoers/log_client.c:2031 plugins/sudoers/logging.c:110 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/match_command.c:335 plugins/sudoers/match_command.c:603 -#: plugins/sudoers/match_command.c:654 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:776 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:267 plugins/sudoers/parse.c:284 -#: plugins/sudoers/parse.c:303 plugins/sudoers/parse.c:322 -#: plugins/sudoers/parse.c:339 plugins/sudoers/parse.c:362 -#: plugins/sudoers/parse.c:373 plugins/sudoers/parse_ldif.c:153 -#: plugins/sudoers/parse_ldif.c:184 plugins/sudoers/parse_ldif.c:253 -#: plugins/sudoers/parse_ldif.c:261 plugins/sudoers/parse_ldif.c:266 -#: plugins/sudoers/parse_ldif.c:342 plugins/sudoers/parse_ldif.c:353 -#: plugins/sudoers/parse_ldif.c:380 plugins/sudoers/parse_ldif.c:397 -#: plugins/sudoers/parse_ldif.c:409 plugins/sudoers/parse_ldif.c:413 -#: plugins/sudoers/parse_ldif.c:427 plugins/sudoers/parse_ldif.c:484 -#: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:628 -#: plugins/sudoers/parse_ldif.c:653 plugins/sudoers/parse_ldif.c:711 -#: plugins/sudoers/parse_ldif.c:728 plugins/sudoers/parse_ldif.c:756 -#: plugins/sudoers/parse_ldif.c:763 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 -#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 -#: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 -#: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 -#: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:185 -#: plugins/sudoers/sssd.c:414 plugins/sudoers/sssd.c:479 -#: plugins/sudoers/sssd.c:505 plugins/sudoers/sssd.c:568 -#: plugins/sudoers/sssd.c:761 plugins/sudoers/strvec_join.c:53 -#: plugins/sudoers/stubs.c:112 plugins/sudoers/stubs.c:120 -#: plugins/sudoers/sudoers.c:354 plugins/sudoers/sudoers.c:380 -#: plugins/sudoers/sudoers.c:447 plugins/sudoers/sudoers.c:464 -#: plugins/sudoers/sudoers.c:505 plugins/sudoers/sudoers.c:849 -#: plugins/sudoers/sudoers.c:902 plugins/sudoers/sudoers.c:1054 -#: plugins/sudoers/sudoers.c:1114 plugins/sudoers/sudoers.c:1369 +#: plugins/sudoers/log_client.c:717 plugins/sudoers/log_client.c:739 +#: plugins/sudoers/log_client.c:744 plugins/sudoers/log_client.c:1423 +#: plugins/sudoers/log_client.c:1544 plugins/sudoers/log_client.c:1667 +#: plugins/sudoers/log_client.c:1986 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:846 plugins/sudoers/match_command.c:295 +#: plugins/sudoers/match_command.c:563 plugins/sudoers/match_command.c:629 +#: plugins/sudoers/match_command.c:724 plugins/sudoers/match_command.c:770 +#: plugins/sudoers/match_digest.c:82 plugins/sudoers/parse.c:279 +#: plugins/sudoers/parse.c:296 plugins/sudoers/parse.c:315 +#: plugins/sudoers/parse.c:334 plugins/sudoers/parse.c:351 +#: plugins/sudoers/parse.c:374 plugins/sudoers/parse.c:385 +#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 +#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:261 +#: plugins/sudoers/parse_ldif.c:266 plugins/sudoers/parse_ldif.c:342 +#: plugins/sudoers/parse_ldif.c:353 plugins/sudoers/parse_ldif.c:380 +#: plugins/sudoers/parse_ldif.c:397 plugins/sudoers/parse_ldif.c:409 +#: plugins/sudoers/parse_ldif.c:413 plugins/sudoers/parse_ldif.c:427 +#: plugins/sudoers/parse_ldif.c:484 plugins/sudoers/parse_ldif.c:598 +#: plugins/sudoers/parse_ldif.c:628 plugins/sudoers/parse_ldif.c:653 +#: plugins/sudoers/parse_ldif.c:711 plugins/sudoers/parse_ldif.c:728 +#: plugins/sudoers/parse_ldif.c:756 plugins/sudoers/parse_ldif.c:763 +#: plugins/sudoers/policy.c:622 plugins/sudoers/policy.c:1050 +#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:199 +#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 +#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:587 +#: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:857 +#: plugins/sudoers/pwutil.c:945 plugins/sudoers/pwutil.c:993 +#: plugins/sudoers/pwutil.c:1052 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 +#: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1325 plugins/sudoers/sudoers.c:1513 #: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 #: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 #: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 -#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 -#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:588 -#: plugins/sudoers/timestamp.c:451 plugins/sudoers/timestamp.c:495 -#: plugins/sudoers/timestamp.c:1017 plugins/sudoers/timestamp.c:1146 -#: plugins/sudoers/toke_util.c:78 plugins/sudoers/toke_util.c:106 -#: plugins/sudoers/toke_util.c:131 plugins/sudoers/toke_util.c:161 -#: plugins/sudoers/toke_util.c:200 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:150 plugins/sudoers/visudo.c:385 -#: plugins/sudoers/visudo.c:391 plugins/sudoers/visudo.c:502 -#: plugins/sudoers/visudo.c:1056 toke.l:1031 toke.l:1163 toke.l:1234 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 +#: plugins/sudoers/toke_util.c:161 plugins/sudoers/toke_util.c:200 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1087 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1299 msgid "unable to allocate memory" msgstr "nie udało się przydzielić pamięci" -#: gram.y:623 +#: gram.y:622 msgid "a digest requires a path name" msgstr "skrót wymaga nazwy pliku" -#: gram.y:645 +#: gram.y:644 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "wartości \"CWD\" muszą zaczynać się od '/', '~' lub '*'" -#: gram.y:651 +#: gram.y:650 msgid "\"CWD\" path too long" msgstr "ścieżka \"CWD\" zbyt długa" -#: gram.y:661 +#: gram.y:660 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "wartości \"CHROOT\" muszą zaczynać się od '/', '~' lub '*'" -#: gram.y:667 +#: gram.y:666 msgid "\"CHROOT\" path too long" msgstr "ścieżka \"CHROOT\" zbyt długa" -#: gram.y:802 +#: gram.y:801 #, 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:825 +#: gram.y:824 msgid "invalid notbefore value" msgstr "błędna wartość notbefore" -#: gram.y:834 +#: gram.y:833 msgid "invalid notafter value" msgstr "błędna wartość notafter" -#: gram.y:844 plugins/sudoers/policy.c:385 +#: gram.y:843 plugins/sudoers/policy.c:381 msgid "timeout value too large" msgstr "wartość limitu czasu zbyt duża" -#: gram.y:846 plugins/sudoers/policy.c:387 +#: gram.y:845 plugins/sudoers/policy.c:383 msgid "invalid timeout value" msgstr "błędna wartość limitu czasu" -#: gram.y:967 plugins/sudoers/sudoers.c:1072 +#: gram.y:966 plugins/sudoers/sudoers.c:1192 msgid "command too long" msgstr "polecenie zbyt długie" -#: gram.y:1224 plugins/sudoers/check_aliases.c:96 -#: plugins/sudoers/defaults.c:1276 +#: gram.y:1000 +msgid "expected a fully-qualified path name" +msgstr "oczekiwano pełnej ścieżki" + +#: gram.y:1244 plugins/sudoers/check_aliases.c:96 +#: plugins/sudoers/defaults.c:1275 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1278 +#: gram.y:1298 #, c-format msgid "Alias \"%s\" already defined" msgstr "Alias \"%s\" jest już zdefiniowany" -#: gram.y:1777 gram.y:1827 lib/eventlog/eventlog.c:235 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:830 -#: lib/eventlog/eventlog.c:833 lib/eventlog/eventlog.c:1135 -#: lib/iolog/iolog_filter.c:142 lib/iolog/iolog_filter.c:202 -#: lib/iolog/iolog_filter.c:232 lib/iolog/iolog_json.c:150 -#: lib/iolog/iolog_json.c:381 lib/iolog/iolog_json.c:412 +#: gram.y:1808 gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:755 lib/eventlog/eventlog.c:828 +#: lib/eventlog/eventlog.c:831 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:471 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 +#: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:232 #: 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 @@ -274,55 +285,56 @@ #: logsrvd/iolog_writer.c:316 logsrvd/iolog_writer.c:328 #: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 #: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 -#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 -#: logsrvd/logsrvd.c:310 logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:490 -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:611 -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:732 -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1439 logsrvd/logsrvd.c:1446 -#: logsrvd/logsrvd.c:1582 logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 -#: logsrvd/logsrvd.c:1988 logsrvd/logsrvd_conf.c:357 -#: logsrvd/logsrvd_conf.c:370 logsrvd/logsrvd_conf.c:511 -#: logsrvd/logsrvd_conf.c:534 logsrvd/logsrvd_conf.c:538 -#: logsrvd/logsrvd_conf.c:556 logsrvd/logsrvd_conf.c:626 -#: logsrvd/logsrvd_conf.c:649 logsrvd/logsrvd_conf.c:678 -#: logsrvd/logsrvd_conf.c:692 logsrvd/logsrvd_conf.c:706 -#: logsrvd/logsrvd_conf.c:720 logsrvd/logsrvd_conf.c:734 -#: logsrvd/logsrvd_conf.c:748 logsrvd/logsrvd_conf.c:829 -#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1053 -#: logsrvd/logsrvd_conf.c:1448 logsrvd/logsrvd_conf.c:1595 -#: logsrvd/logsrvd_conf.c:1621 logsrvd/logsrvd_conf.c:1633 -#: logsrvd/logsrvd_conf.c:1640 logsrvd/logsrvd_conf.c:1646 -#: logsrvd/logsrvd_conf.c:1742 logsrvd/logsrvd_journal.c:76 -#: logsrvd/logsrvd_journal.c:125 logsrvd/logsrvd_journal.c:216 -#: logsrvd/logsrvd_journal.c:246 logsrvd/logsrvd_journal.c:250 -#: logsrvd/logsrvd_journal.c:258 logsrvd/logsrvd_journal.c:281 -#: logsrvd/logsrvd_journal.c:285 logsrvd/logsrvd_journal.c:433 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:278 -#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:491 logsrvd/logsrvd_queue.c:158 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:291 -#: logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 logsrvd/sendlog.c:1503 -#: logsrvd/sendlog.c:1510 logsrvd/sendlog.c:1733 logsrvd/sendlog.c:1801 -#: logsrvd/tls_init.c:305 logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 -#: plugins/sudoers/audit.c:116 plugins/sudoers/auth/pam.c:502 -#: plugins/sudoers/auth/pam.c:687 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:174 plugins/sudoers/cvtsudoers.c:191 -#: plugins/sudoers/cvtsudoers.c:202 plugins/sudoers/cvtsudoers.c:332 -#: plugins/sudoers/cvtsudoers.c:536 plugins/sudoers/cvtsudoers.c:669 -#: plugins/sudoers/cvtsudoers.c:687 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:869 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:182 plugins/sudoers/cvtsudoers_csv.c:245 -#: 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:375 -#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:437 -#: plugins/sudoers/cvtsudoers_ldif.c:448 plugins/sudoers/cvtsudoers_ldif.c:455 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:480 -#: plugins/sudoers/cvtsudoers_ldif.c:488 plugins/sudoers/cvtsudoers_ldif.c:635 -#: plugins/sudoers/cvtsudoers_merge.c:47 plugins/sudoers/cvtsudoers_merge.c:51 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:530 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:668 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:1132 +#: logsrvd/logsrvd.c:1447 logsrvd/logsrvd.c:1454 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 +#: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 +#: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 +#: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 +#: logsrvd/logsrvd_conf.c:626 logsrvd/logsrvd_conf.c:649 +#: logsrvd/logsrvd_conf.c:678 logsrvd/logsrvd_conf.c:692 +#: logsrvd/logsrvd_conf.c:706 logsrvd/logsrvd_conf.c:720 +#: logsrvd/logsrvd_conf.c:734 logsrvd/logsrvd_conf.c:748 +#: logsrvd/logsrvd_conf.c:829 logsrvd/logsrvd_conf.c:1036 +#: logsrvd/logsrvd_conf.c:1053 logsrvd/logsrvd_conf.c:1448 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1621 +#: logsrvd/logsrvd_conf.c:1633 logsrvd/logsrvd_conf.c:1640 +#: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1742 +#: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:125 +#: logsrvd/logsrvd_journal.c:216 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:250 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:290 +#: logsrvd/logsrvd_journal.c:438 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:466 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:491 +#: logsrvd/logsrvd_queue.c:158 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 +#: logsrvd/sendlog.c:292 logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 +#: logsrvd/sendlog.c:624 logsrvd/sendlog.c:1512 logsrvd/sendlog.c:1519 +#: logsrvd/sendlog.c:1742 logsrvd/sendlog.c:1810 logsrvd/tls_init.c:305 +#: logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/pam.c:502 plugins/sudoers/auth/pam.c:687 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/canon_path.c:129 +#: plugins/sudoers/canon_path.c:160 plugins/sudoers/check_aliases.c:168 +#: plugins/sudoers/cvtsudoers.c:132 plugins/sudoers/cvtsudoers.c:175 +#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:203 +#: plugins/sudoers/cvtsudoers.c:333 plugins/sudoers/cvtsudoers.c:537 +#: plugins/sudoers/cvtsudoers.c:690 plugins/sudoers/cvtsudoers.c:708 +#: plugins/sudoers/cvtsudoers.c:883 plugins/sudoers/cvtsudoers.c:890 +#: plugins/sudoers/cvtsudoers.c:1386 plugins/sudoers/cvtsudoers.c:1390 +#: plugins/sudoers/cvtsudoers.c:1492 plugins/sudoers/cvtsudoers_csv.c:182 +#: plugins/sudoers/cvtsudoers_csv.c:246 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:375 plugins/sudoers/cvtsudoers_ldif.c:429 +#: plugins/sudoers/cvtsudoers_ldif.c:437 plugins/sudoers/cvtsudoers_ldif.c:448 +#: plugins/sudoers/cvtsudoers_ldif.c:455 plugins/sudoers/cvtsudoers_ldif.c:467 +#: plugins/sudoers/cvtsudoers_ldif.c:480 plugins/sudoers/cvtsudoers_ldif.c:488 +#: plugins/sudoers/cvtsudoers_ldif.c:635 plugins/sudoers/cvtsudoers_merge.c:47 +#: plugins/sudoers/cvtsudoers_merge.c:51 #: plugins/sudoers/cvtsudoers_merge.c:353 #: plugins/sudoers/cvtsudoers_merge.c:399 #: plugins/sudoers/cvtsudoers_merge.c:445 @@ -334,42 +346,43 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1157 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:211 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:688 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:690 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:293 plugins/sudoers/ldap_util.c:300 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:228 #: plugins/sudoers/log_client.c:250 plugins/sudoers/log_client.c:264 -#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:715 -#: plugins/sudoers/log_client.c:736 plugins/sudoers/log_client.c:1415 -#: plugins/sudoers/log_client.c:1536 plugins/sudoers/log_client.c:1636 -#: plugins/sudoers/log_client.c:1972 plugins/sudoers/log_client.c:2031 -#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:188 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/logging.c:880 plugins/sudoers/logging.c:892 -#: plugins/sudoers/match_command.c:334 plugins/sudoers/match_command.c:602 -#: plugins/sudoers/match_command.c:653 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:775 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:266 plugins/sudoers/parse.c:283 -#: plugins/sudoers/parse.c:302 plugins/sudoers/parse.c:321 -#: plugins/sudoers/parse.c:338 plugins/sudoers/parse.c:361 -#: plugins/sudoers/parse.c:372 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:717 +#: plugins/sudoers/log_client.c:739 plugins/sudoers/log_client.c:744 +#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1544 +#: plugins/sudoers/log_client.c:1667 plugins/sudoers/log_client.c:1986 +#: plugins/sudoers/log_client.c:2045 plugins/sudoers/logging.c:110 +#: plugins/sudoers/logging.c:188 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:734 plugins/sudoers/logging.c:846 +#: plugins/sudoers/logging.c:899 plugins/sudoers/logging.c:906 +#: plugins/sudoers/match_command.c:294 plugins/sudoers/match_command.c:562 +#: plugins/sudoers/match_command.c:628 plugins/sudoers/match_command.c:724 +#: plugins/sudoers/match_command.c:769 plugins/sudoers/match_digest.c:82 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:295 +#: plugins/sudoers/parse.c:314 plugins/sudoers/parse.c:333 +#: plugins/sudoers/parse.c:350 plugins/sudoers/parse.c:373 +#: plugins/sudoers/parse.c:384 plugins/sudoers/parse_ldif.c:152 #: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 #: plugins/sudoers/parse_ldif.c:260 plugins/sudoers/parse_ldif.c:265 #: plugins/sudoers/parse_ldif.c:341 plugins/sudoers/parse_ldif.c:352 @@ -379,56 +392,60 @@ #: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:627 #: plugins/sudoers/parse_ldif.c:652 plugins/sudoers/parse_ldif.c:710 #: plugins/sudoers/parse_ldif.c:727 plugins/sudoers/parse_ldif.c:755 -#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:154 -#: plugins/sudoers/policy.c:163 plugins/sudoers/policy.c:172 -#: plugins/sudoers/policy.c:201 plugins/sudoers/policy.c:370 -#: plugins/sudoers/policy.c:385 plugins/sudoers/policy.c:387 -#: plugins/sudoers/policy.c:425 plugins/sudoers/policy.c:434 -#: plugins/sudoers/policy.c:482 plugins/sudoers/policy.c:492 -#: plugins/sudoers/policy.c:501 plugins/sudoers/policy.c:510 -#: plugins/sudoers/policy.c:519 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:166 +#: plugins/sudoers/policy.c:196 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:381 plugins/sudoers/policy.c:383 +#: plugins/sudoers/policy.c:421 plugins/sudoers/policy.c:430 +#: plugins/sudoers/policy.c:478 plugins/sudoers/policy.c:488 +#: plugins/sudoers/policy.c:497 plugins/sudoers/policy.c:506 +#: plugins/sudoers/policy.c:515 plugins/sudoers/policy.c:622 +#: plugins/sudoers/policy.c:1050 plugins/sudoers/prompt.c:93 #: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 #: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 #: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 #: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 #: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 plugins/sudoers/sssd.c:144 #: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 #: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 -#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:761 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:112 -#: plugins/sudoers/stubs.c:120 plugins/sudoers/sudoers.c:354 -#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:447 -#: plugins/sudoers/sudoers.c:464 plugins/sudoers/sudoers.c:505 -#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:902 -#: plugins/sudoers/sudoers.c:1054 plugins/sudoers/sudoers.c:1114 -#: plugins/sudoers/sudoers.c:1369 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:562 plugins/sudoers/sudoreplay.c:1278 -#: plugins/sudoers/sudoreplay.c:1334 plugins/sudoers/sudoreplay.c:1530 -#: plugins/sudoers/sudoreplay.c:1534 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:588 plugins/sudoers/timestamp.c:451 -#: plugins/sudoers/timestamp.c:495 plugins/sudoers/timestamp.c:1017 -#: plugins/sudoers/timestamp.c:1146 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1324 plugins/sudoers/sudoers.c:1513 +#: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 +#: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 #: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 #: plugins/sudoers/toke_util.c:160 plugins/sudoers/toke_util.c:200 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:150 -#: plugins/sudoers/visudo.c:385 plugins/sudoers/visudo.c:391 -#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:1056 toke.l:1031 -#: toke.l:1163 toke.l:1226 toke.l:1234 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1086 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1288 toke.l:1299 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:303 +#: lib/eventlog/eventlog.c:304 #, c-format msgid "unable to dup stdin: %m" msgstr "nie udało się wykonać dup na stdin: %m" -#: lib/eventlog/eventlog.c:345 +#: lib/eventlog/eventlog.c:346 #, c-format msgid "unable to execute %s: %m" msgstr "nie udało się wywołać %s: %m" @@ -447,96 +464,96 @@ msgid "unable to open pipe: %m" msgstr "nie udało się otworzyć potoku: %m" -#: lib/eventlog/eventlog.c:960 +#: lib/eventlog/eventlog.c:958 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:989 +#: lib/eventlog/eventlog.c:987 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (kontynuacja polecenia) %s" -#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1242 -#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 -#, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "błędne wyrażenie regularne \"%s\": %s" - -#: lib/iolog/iolog_json.c:140 +#: lib/eventlog/parse_json.c:175 #, c-format msgid "expected JSON_STRING, got %d" msgstr "nieoczekiwany JSON_STRING, otrzymano %d" -#: lib/iolog/iolog_json.c:145 +#: lib/eventlog/parse_json.c:180 msgid "JSON_ARRAY too large" msgstr "JSON_ARRAY zbyt duża" -#: lib/iolog/iolog_json.c:404 +#: lib/eventlog/parse_json.c:494 msgid "missing double quote in name" msgstr "brak podwójnego cudzysłowu w nazwie" -#: lib/iolog/iolog_json.c:511 +#: lib/eventlog/parse_json.c:612 msgid "missing JSON_OBJECT" msgstr "brakujący JSON_OBJECT" -#: lib/iolog/iolog_json.c:515 +#: lib/eventlog/parse_json.c:616 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "oczekiwany JSON_OBJECT, otrzymano %d" -#: lib/iolog/iolog_json.c:632 +#: lib/eventlog/parse_json.c:750 #, c-format msgid "json stack exhausted (max %u frames)" msgstr "stos json wyczerpany (maksimum %u ramek)" -#: lib/iolog/iolog_json.c:706 +#: lib/eventlog/parse_json.c:828 msgid "objects must consist of name:value pairs" msgstr "obiekty muszą składać się z kluczy nazwa:wartość" -#: lib/iolog/iolog_json.c:711 lib/iolog/iolog_json.c:742 -#: lib/iolog/iolog_json.c:786 lib/iolog/iolog_json.c:808 -#: lib/iolog/iolog_json.c:830 lib/iolog/iolog_json.c:852 -#: lib/iolog/iolog_json.c:874 +#: lib/eventlog/parse_json.c:833 lib/eventlog/parse_json.c:864 +#: lib/eventlog/parse_json.c:908 lib/eventlog/parse_json.c:930 +#: lib/eventlog/parse_json.c:952 lib/eventlog/parse_json.c:974 +#: lib/eventlog/parse_json.c:996 msgid "missing separator between values" msgstr "brak separatora między wartościami" -#: lib/iolog/iolog_json.c:726 lib/iolog/iolog_json.c:900 +#: lib/eventlog/parse_json.c:848 lib/eventlog/parse_json.c:1022 msgid "unmatched close brace" msgstr "brak klamry zamykającej" -#: lib/iolog/iolog_json.c:737 +#: lib/eventlog/parse_json.c:859 msgid "unexpected array" msgstr "nieoczekiwana tablica" -#: lib/iolog/iolog_json.c:757 lib/iolog/iolog_json.c:903 +#: lib/eventlog/parse_json.c:879 lib/eventlog/parse_json.c:1025 msgid "unmatched close bracket" msgstr "brak nawiasu zamykającego" -#: lib/iolog/iolog_json.c:768 +#: lib/eventlog/parse_json.c:890 msgid "unexpected string" msgstr "nieoczekiwany łańcuch" -#: lib/iolog/iolog_json.c:779 +#: lib/eventlog/parse_json.c:901 msgid "missing colon after name" msgstr "brak dwukropka po nazwie" -#: lib/iolog/iolog_json.c:800 lib/iolog/iolog_json.c:822 +#: lib/eventlog/parse_json.c:922 lib/eventlog/parse_json.c:944 msgid "unexpected boolean" msgstr "nieoczekiwana wartość logiczna" -#: lib/iolog/iolog_json.c:844 +#: lib/eventlog/parse_json.c:966 msgid "unexpected null" msgstr "nieoczekiwana wartość pusta" -#: lib/iolog/iolog_json.c:865 +#: lib/eventlog/parse_json.c:987 msgid "unexpected number" msgstr "nieoczekiwana liczba" -#: lib/iolog/iolog_json.c:912 +#: lib/eventlog/parse_json.c:1033 msgid "parse error" msgstr "błąd składni" +#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1241 +#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "błędne wyrażenie regularne \"%s\": %s" + #: lib/iolog/iolog_legacy.c:65 #, c-format msgid "%s: invalid log file" @@ -573,13 +590,13 @@ msgstr "%s istnieje, ale nie jest katalogiem (0%o)" #: lib/iolog/iolog_mkdirs.c:123 lib/iolog/iolog_mkdtemp.c:79 -#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:209 +#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:234 #, c-format msgid "unable to mkdir %s" msgstr "nie udało się wykonać mkdir %s" -#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:757 -#: plugins/sudoers/visudo.c:791 plugins/sudoers/visudo.c:797 +#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:760 +#: plugins/sudoers/visudo.c:794 plugins/sudoers/visudo.c:800 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "nie udało się zmienić uprawnień %s na 0%o" @@ -611,8 +628,8 @@ msgid "%s: protocol error: NULL value found in %s" msgstr "%s: błąd protokołu: napotkano wartość NULL w %s" -#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:980 -#: plugins/sudoers/policy.c:593 +#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:993 +#: plugins/sudoers/policy.c:589 msgid "unable to generate UUID" msgstr "nie udało się wygenerować UUID-a" @@ -664,26 +681,26 @@ 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:763 logsrvd/logsrvd_journal.c:385 +#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:390 #, 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:785 logsrvd/logsrvd_journal.c:428 +#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:433 #: logsrvd/logsrvd_queue.c:115 logsrvd/tls_init.c:256 -#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:730 -#: plugins/sudoers/cvtsudoers.c:751 plugins/sudoers/cvtsudoers.c:1431 -#: plugins/sudoers/cvtsudoers_csv.c:695 plugins/sudoers/cvtsudoers_json.c:898 -#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1152 -#: plugins/sudoers/sudoers.c:1182 plugins/sudoers/sudoreplay.c:1496 -#: plugins/sudoers/timestamp.c:460 plugins/sudoers/tsdump.c:128 -#: plugins/sudoers/visudo.c:975 +#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:751 +#: plugins/sudoers/cvtsudoers.c:772 plugins/sudoers/cvtsudoers.c:1452 +#: plugins/sudoers/cvtsudoers_csv.c:697 plugins/sudoers/cvtsudoers_json.c:902 +#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1310 +#: plugins/sudoers/sudoers.c:1334 plugins/sudoers/sudoreplay.c:1496 +#: plugins/sudoers/timestamp.c:485 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:982 #, c-format msgid "unable to open %s" msgstr "nie udało się otworzyć %s" -#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:105 -#: logsrvd/logsrv_util.c:112 plugins/sudoers/sudoreplay.c:355 +#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:111 +#: logsrvd/logsrv_util.c:118 plugins/sudoers/sudoreplay.c:355 #: plugins/sudoers/sudoreplay.c:361 #, c-format msgid "unable to open %s/%s" @@ -699,17 +716,17 @@ msgid "unable to rename %s to %s" msgstr "nie udało się zmienić nazwy %s na %s" -#: logsrvd/logsrv_util.c:147 logsrvd/logsrv_util.c:176 +#: logsrvd/logsrv_util.c:153 logsrvd/logsrv_util.c:182 #, 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/logsrv_util.c:159 +#: logsrvd/logsrv_util.c:165 #, c-format msgid "missing I/O log file %s/%s" msgstr "brak pliku logu we/wy %s/%s" -#: logsrvd/logsrv_util.c:166 +#: logsrvd/logsrv_util.c:172 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: nie udało przesunąć %zu w przód" @@ -718,31 +735,31 @@ msgid "unable to connect to relay" msgstr "nie udało się połączyć z przekaźnikiem" -#: logsrvd/logsrvd.c:330 logsrvd/logsrvd_relay.c:842 +#: logsrvd/logsrvd.c:338 logsrvd/logsrvd_relay.c:844 #, c-format msgid "server message too large: %zu" msgstr "komunikat serwera zbyt duży: %zu" -#: logsrvd/logsrvd.c:422 logsrvd/logsrvd.c:545 logsrvd/logsrvd.c:631 -#: logsrvd/logsrvd.c:873 logsrvd/logsrvd.c:887 logsrvd/logsrvd.c:1049 -#: logsrvd/logsrvd.c:1174 logsrvd/logsrvd.c:1347 logsrvd/logsrvd.c:1365 -#: logsrvd/logsrvd.c:1464 logsrvd/logsrvd.c:1589 logsrvd/logsrvd.c:1773 -#: logsrvd/logsrvd_journal.c:497 logsrvd/logsrvd_local.c:238 +#: logsrvd/logsrvd.c:430 logsrvd/logsrvd.c:553 logsrvd/logsrvd.c:639 +#: logsrvd/logsrvd.c:881 logsrvd/logsrvd.c:895 logsrvd/logsrvd.c:1057 +#: logsrvd/logsrvd.c:1182 logsrvd/logsrvd.c:1355 logsrvd/logsrvd.c:1373 +#: logsrvd/logsrvd.c:1472 logsrvd/logsrvd.c:1597 logsrvd/logsrvd.c:1784 +#: logsrvd/logsrvd_journal.c:502 logsrvd/logsrvd_local.c:238 #: logsrvd/logsrvd_queue.c:164 logsrvd/logsrvd_relay.c:172 #: logsrvd/logsrvd_relay.c:249 logsrvd/logsrvd_relay.c:253 -#: logsrvd/logsrvd_relay.c:389 logsrvd/logsrvd_relay.c:581 -#: logsrvd/logsrvd_relay.c:742 logsrvd/logsrvd_relay.c:1131 -#: logsrvd/sendlog.c:1291 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 -#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:278 -#: plugins/sudoers/iolog.c:1031 plugins/sudoers/iolog.c:1164 -#: plugins/sudoers/iolog.c:1262 plugins/sudoers/log_client.c:121 +#: logsrvd/logsrvd_relay.c:391 logsrvd/logsrvd_relay.c:583 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:1133 +#: logsrvd/sendlog.c:1300 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:277 +#: plugins/sudoers/iolog.c:1030 plugins/sudoers/iolog.c:1163 +#: plugins/sudoers/iolog.c:1261 plugins/sudoers/log_client.c:121 #: plugins/sudoers/log_client.c:343 plugins/sudoers/log_client.c:359 -#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:611 -#: plugins/sudoers/log_client.c:618 plugins/sudoers/log_client.c:1103 -#: plugins/sudoers/log_client.c:1384 plugins/sudoers/log_client.c:1425 -#: plugins/sudoers/log_client.c:1433 plugins/sudoers/log_client.c:1592 -#: plugins/sudoers/log_client.c:1710 plugins/sudoers/log_client.c:2039 -#: plugins/sudoers/log_client.c:2047 plugins/sudoers/logging.c:147 +#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:613 +#: plugins/sudoers/log_client.c:620 plugins/sudoers/log_client.c:1111 +#: plugins/sudoers/log_client.c:1392 plugins/sudoers/log_client.c:1433 +#: plugins/sudoers/log_client.c:1441 plugins/sudoers/log_client.c:1600 +#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:2053 +#: plugins/sudoers/log_client.c:2061 plugins/sudoers/logging.c:147 #: plugins/sudoers/logging.c:205 plugins/sudoers/sudoreplay.c:519 #: plugins/sudoers/sudoreplay.c:566 plugins/sudoers/sudoreplay.c:808 #: plugins/sudoers/sudoreplay.c:920 plugins/sudoers/sudoreplay.c:1011 @@ -752,189 +769,190 @@ msgid "unable to add event to queue" msgstr "nie udało się dodać zdarzenia do kolejki" -#: logsrvd/logsrvd.c:446 logsrvd/logsrvd.c:483 logsrvd/logsrvd.c:515 -#: logsrvd/logsrvd.c:569 logsrvd/logsrvd.c:648 logsrvd/logsrvd.c:684 -#: logsrvd/logsrvd.c:720 logsrvd/logsrvd.c:756 logsrvd/logsrvd_relay.c:510 -#: logsrvd/logsrvd_relay.c:543 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:577 logsrvd/logsrvd.c:656 logsrvd/logsrvd.c:692 +#: logsrvd/logsrvd.c:728 logsrvd/logsrvd.c:764 logsrvd/logsrvd_relay.c:512 +#: logsrvd/logsrvd_relay.c:545 #, c-format msgid "unexpected state %d for %s" msgstr "nieoczekiwany stan %d dla %s" -#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 -#: logsrvd/logsrvd.c:570 logsrvd/logsrvd.c:649 logsrvd/logsrvd.c:685 -#: logsrvd/logsrvd.c:721 logsrvd/logsrvd.c:757 logsrvd/logsrvd_relay.c:512 -#: logsrvd/logsrvd_relay.c:545 +#: logsrvd/logsrvd.c:455 logsrvd/logsrvd.c:492 logsrvd/logsrvd.c:524 +#: logsrvd/logsrvd.c:578 logsrvd/logsrvd.c:657 logsrvd/logsrvd.c:693 +#: logsrvd/logsrvd.c:729 logsrvd/logsrvd.c:765 logsrvd/logsrvd_relay.c:514 +#: logsrvd/logsrvd_relay.c:547 msgid "state machine error" msgstr "błąd maszyny stanów" -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:454 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:462 msgid "invalid AcceptMessage" msgstr "błędny AcceptMessage" -#: logsrvd/logsrvd.c:490 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:499 msgid "invalid RejectMessage" msgstr "błędny RejectMessage" -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:530 logsrvd/logsrvd.c:531 msgid "invalid ExitMessage" msgstr "błędny ExitMessage" -#: logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:577 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:585 msgid "invalid RestartMessage" msgstr "błędny RestartMessage" -#: logsrvd/logsrvd.c:611 logsrvd/logsrvd.c:612 +#: logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:620 msgid "invalid AlertMessage" msgstr "błędny AlertMessage" -#: logsrvd/logsrvd.c:653 logsrvd/logsrvd.c:689 logsrvd/logsrvd.c:725 +#: logsrvd/logsrvd.c:661 logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:733 #, c-format msgid "%s: unexpected IoBuffer" msgstr "%s: nieoczekiwany IoBuffer" -#: logsrvd/logsrvd.c:654 logsrvd/logsrvd.c:690 logsrvd/logsrvd.c:726 +#: logsrvd/logsrvd.c:662 logsrvd/logsrvd.c:698 logsrvd/logsrvd.c:734 msgid "protocol error" msgstr "błąd protokołu" -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:661 +#: logsrvd/logsrvd.c:668 logsrvd/logsrvd.c:669 msgid "invalid IoBuffer" msgstr "błędny IoBuffer" -#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:697 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:705 msgid "invalid ChangeWindowSize" msgstr "błędny ChangeWindowSize" -#: logsrvd/logsrvd.c:732 logsrvd/logsrvd.c:733 +#: logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:741 msgid "invalid CommandSuspend" msgstr "błędny CommandSuspend" -#: logsrvd/logsrvd.c:782 logsrvd/logsrvd_journal.c:296 -#: logsrvd/logsrvd_relay.c:652 logsrvd/sendlog.c:1192 -#: plugins/sudoers/log_client.c:1582 +#: logsrvd/logsrvd.c:790 logsrvd/logsrvd_journal.c:301 +#: logsrvd/logsrvd_relay.c:654 logsrvd/sendlog.c:1201 +#: plugins/sudoers/log_client.c:1590 #, c-format msgid "unable to unpack %s size %zu" msgstr "nie udało się rozpakować %s, rozmiar %zu" -#: logsrvd/logsrvd.c:827 logsrvd/logsrvd_journal.c:370 -#: logsrvd/logsrvd_relay.c:676 +#: logsrvd/logsrvd.c:835 logsrvd/logsrvd_journal.c:375 +#: logsrvd/logsrvd_relay.c:678 #, 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:829 +#: logsrvd/logsrvd.c:837 msgid "unrecognized ClientMessage type" msgstr "nie rozpoznany typ ClientMessage" -#: logsrvd/logsrvd.c:919 +#: logsrvd/logsrvd.c:927 #, c-format msgid "timed out writing to client %s" msgstr "przekroczony limit czasu przy pisaniu do klienta %s" -#: logsrvd/logsrvd.c:924 logsrvd/logsrvd_relay.c:914 logsrvd/sendlog.c:1395 +#: logsrvd/logsrvd.c:932 logsrvd/logsrvd_relay.c:916 logsrvd/sendlog.c:1404 #, c-format msgid "missing write buffer for client %s" msgstr "brak bufora zapisu dla klienta %s" -#: logsrvd/logsrvd.c:1020 +#: logsrvd/logsrvd.c:1028 #, c-format msgid "timed out reading from client %s" msgstr "przekroczony limit czasu przy czytaniu od klienta %s" -#: logsrvd/logsrvd.c:1061 logsrvd/logsrvd_relay.c:777 +#: logsrvd/logsrvd.c:1069 logsrvd/logsrvd_relay.c:779 #, 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:1105 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:322 -#: plugins/sudoers/log_client.c:721 +#: logsrvd/logsrvd.c:1113 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:331 +#: plugins/sudoers/log_client.c:723 #, c-format msgid "client message too large: %zu" msgstr "komunikat klienta zbyt duży %zu" -#: logsrvd/logsrvd.c:1106 logsrvd/logsrvd_journal.c:259 +#: logsrvd/logsrvd.c:1114 logsrvd/logsrvd_journal.c:259 #: logsrvd/logsrvd_journal.c:260 msgid "client message too large" msgstr "komunikat klienta zbyt duży" -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1125 +#: logsrvd/logsrvd.c:1132 logsrvd/logsrvd.c:1133 msgid "invalid ClientMessage" msgstr "błędny ClientMessage" -#: logsrvd/logsrvd.c:1425 +#: logsrvd/logsrvd.c:1433 msgid "unable to get remote IP addr" msgstr "nie udało się uzyskać zdalnego adresu IP" -#: logsrvd/logsrvd.c:1456 logsrvd/tls_client.c:203 +#: logsrvd/logsrvd.c:1464 logsrvd/tls_client.c:203 #: plugins/sudoers/log_client.c:281 #, 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:1639 logsrvd/logsrvd.c:1992 +#: logsrvd/logsrvd.c:1647 logsrvd/logsrvd.c:2003 msgid "unable to setup listen socket" msgstr "nie udało się ustanowić gniazda nasłuchującego" -#: logsrvd/logsrvd.c:1756 +#: logsrvd/logsrvd.c:1767 #, c-format msgid "unexpected signal %d" msgstr "nieoczekiwany sygnał %d" -#: logsrvd/logsrvd.c:1894 +#: logsrvd/logsrvd.c:1905 msgid "sudo log server" msgstr "serwer logów sudo" -#: logsrvd/logsrvd.c:1896 logsrvd/sendlog.c:121 +#: logsrvd/logsrvd.c:1907 logsrvd/sendlog.c:121 msgid "Options:" msgstr "Opcje:" -#: logsrvd/logsrvd.c:1898 +#: logsrvd/logsrvd.c:1909 msgid "path to configuration file" msgstr "ścieżka do pliku konfiguracyjnego" -#: logsrvd/logsrvd.c:1900 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1911 logsrvd/sendlog.c:123 msgid "display help message and exit" msgstr "wyświetlenie pomocy i zakończenie" -#: logsrvd/logsrvd.c:1902 +#: logsrvd/logsrvd.c:1913 msgid "do not fork, run in the foreground" msgstr "bez wykonywania fork, działanie na pierwszym planie" -#: logsrvd/logsrvd.c:1904 +#: logsrvd/logsrvd.c:1915 msgid "percent chance connections will drop" msgstr "procentowe prawdopodobieństwo odrzucenia połączenia" -#: logsrvd/logsrvd.c:1906 logsrvd/sendlog.c:153 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:153 msgid "display version information and exit" msgstr "wyświetlenie informacji o wersji i zakończenie" -#: logsrvd/logsrvd.c:1956 logsrvd/sendlog.c:1702 +#: logsrvd/logsrvd.c:1967 logsrvd/sendlog.c:1711 msgid "Protobuf-C version 1.3 or higher required" msgstr "Wymagany Protobuf-C w wersji 1.3 lub wyższej" -#: logsrvd/logsrvd.c:1972 +#: logsrvd/logsrvd.c:1983 #, c-format msgid "invalid random drop value: %s" msgstr "błędna wartość losowego gubienia: %s" -#: logsrvd/logsrvd.c:1975 logsrvd/sendlog.c:1756 -#: plugins/sudoers/cvtsudoers.c:246 plugins/sudoers/sudoreplay.c:294 -#: plugins/sudoers/visudo.c:182 +#: logsrvd/logsrvd.c:1986 logsrvd/sendlog.c:1765 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/sudoreplay.c:294 +#: plugins/sudoers/visudo.c:186 #, c-format msgid "%s version %s\n" msgstr "%s wersja %s\n" #: logsrvd/logsrvd_conf.c:422 plugins/sudoers/check.c:358 #: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:122 -#: plugins/sudoers/policy.c:1271 plugins/sudoers/sudoers.c:512 -#: plugins/sudoers/sudoers.c:1411 plugins/sudoers/testsudoers.c:215 -#: plugins/sudoers/testsudoers.c:382 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:939 +#: plugins/sudoers/sudoers.c:1041 plugins/sudoers/sudoers.c:1062 +#: plugins/sudoers/sudoers.c:1555 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:393 #, c-format msgid "unknown user %s" msgstr "nieznany użytkownik %s" #: logsrvd/logsrvd_conf.c:439 plugins/sudoers/iolog.c:148 -#: plugins/sudoers/sudoers.c:517 plugins/sudoers/sudoers.c:1445 -#: plugins/sudoers/testsudoers.c:406 +#: plugins/sudoers/sudoers.c:453 plugins/sudoers/sudoers.c:1589 +#: plugins/sudoers/testsudoers.c:417 #, c-format msgid "unknown group %s" msgstr "nieznana grupa %s" @@ -1006,8 +1024,8 @@ msgid "%s:%d [%s] illegal key: %s" msgstr "%s:%d [%s] niedozwolony klucz: %s" -#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:268 -#: plugins/sudoers/logging.c:1033 +#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:269 +#: plugins/sudoers/logging.c:1046 #, c-format msgid "unable to open log file %s" msgstr "nie udało się otworzyć pliku logu %s" @@ -1020,13 +1038,13 @@ msgid "unable to initialize relay TLS context" msgstr "nie udało się zainicjować kontekstu przekaźnika TLS" -#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:424 -#: logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:434 msgid "unable to create journal file" msgstr "nie udało się utworzuć pliku kroniki" #: logsrvd/logsrvd_journal.c:153 logsrvd/logsrvd_queue.c:109 -#: plugins/sudoers/visudo.c:1028 +#: plugins/sudoers/visudo.c:1038 #, c-format msgid "unable to lock %s" msgstr "nie udało się zablokować %s" @@ -1039,8 +1057,8 @@ msgid "unable to open journal file" msgstr "nie udało się otworzyć pliku kroniki" -#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:460 -#: logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:470 msgid "unable to write journal file" msgstr "nie udało się zapisać pliku kroniki" @@ -1049,20 +1067,20 @@ msgstr "nie udało się zmienić nazwy pliku kroniki" #: logsrvd/logsrvd_journal.c:247 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:282 logsrvd/logsrvd_journal.c:283 +#: logsrvd/logsrvd_journal.c:287 logsrvd/logsrvd_journal.c:288 msgid "unexpected EOF reading journal file" msgstr "nieoczekiwany koniec pliku podczas odczytu pliku kroniki" #: logsrvd/logsrvd_journal.c:251 logsrvd/logsrvd_journal.c:252 -#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:287 +#: logsrvd/logsrvd_journal.c:291 logsrvd/logsrvd_journal.c:292 msgid "error reading journal file" msgstr "błąd podczas odczytu pliku kroniki" -#: logsrvd/logsrvd_journal.c:298 logsrvd/logsrvd_journal.c:384 +#: logsrvd/logsrvd_journal.c:303 logsrvd/logsrvd_journal.c:389 msgid "invalid journal file, unable to restart" msgstr "błędny plik kroniki, nie udało się zrestartować" -#: logsrvd/logsrvd_journal.c:443 +#: logsrvd/logsrvd_journal.c:448 #, 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" @@ -1120,7 +1138,7 @@ #: logsrvd/logsrvd_local.c:599 logsrvd/logsrvd_local.c:607 #: logsrvd/logsrvd_local.c:655 logsrvd/logsrvd_local.c:690 -#: plugins/sudoers/sudoreplay.c:344 +#: plugins/sudoers/sudoreplay.c:344 toke.l:982 toke.l:985 #, c-format msgid "%s/%s: %s" msgstr "%s/%s: %s" @@ -1141,69 +1159,69 @@ msgid "error writing CommandSuspend" msgstr "błąd zapisu CommandSuspend" -#: logsrvd/logsrvd_relay.c:435 +#: logsrvd/logsrvd_relay.c:437 msgid "TLS handshake with relay host failed" msgstr "przywitanie TLS z hostem przekaźnika nie powiodło się" -#: logsrvd/logsrvd_relay.c:463 +#: logsrvd/logsrvd_relay.c:465 msgid "unable to connect to relay host" msgstr "nie udało się połączyć z hostem przekaźnika" -#: logsrvd/logsrvd_relay.c:518 +#: logsrvd/logsrvd_relay.c:520 #, c-format msgid "%s: invalid ServerHello, missing server_id" msgstr "%s: błędne ServerHello, brak server_id" -#: logsrvd/logsrvd_relay.c:520 logsrvd/sendlog.c:1096 -#: plugins/sudoers/log_client.c:1468 +#: logsrvd/logsrvd_relay.c:522 logsrvd/sendlog.c:1105 +#: plugins/sudoers/log_client.c:1476 msgid "invalid ServerHello" msgstr "błędne ServerHello" -#: logsrvd/logsrvd_relay.c:679 +#: logsrvd/logsrvd_relay.c:681 msgid "unrecognized ServerMessage type" msgstr "nie rozpoznany typ ServerMessage" -#: logsrvd/logsrvd_relay.c:708 +#: logsrvd/logsrvd_relay.c:710 #, 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:710 +#: logsrvd/logsrvd_relay.c:712 msgid "timeout reading from relay" msgstr "przekroczony limit czasu przy czytaniu z przekaźnika" -#: logsrvd/logsrvd_relay.c:762 +#: logsrvd/logsrvd_relay.c:764 msgid "relay host name does not match certificate" msgstr "nazwa hosta przekaźnika nie pasuje do certyfikatu" -#: logsrvd/logsrvd_relay.c:768 logsrvd/logsrvd_relay.c:782 -#: logsrvd/logsrvd_relay.c:789 +#: logsrvd/logsrvd_relay.c:770 logsrvd/logsrvd_relay.c:784 +#: logsrvd/logsrvd_relay.c:791 msgid "error reading from relay" msgstr "błąd podczas odczytu z przekaźnika" -#: logsrvd/logsrvd_relay.c:810 +#: logsrvd/logsrvd_relay.c:812 msgid "unable to read from relay" msgstr "nie udał się odczyt z przekaźnika" -#: logsrvd/logsrvd_relay.c:825 logsrvd/logsrvd_relay.c:943 +#: logsrvd/logsrvd_relay.c:827 logsrvd/logsrvd_relay.c:945 msgid "relay server closed connection" msgstr "serwer przekaźnika zamknął połączenie" -#: logsrvd/logsrvd_relay.c:843 +#: logsrvd/logsrvd_relay.c:845 msgid "server message too large" msgstr "komunikat serwera zbyt duży" -#: logsrvd/logsrvd_relay.c:907 +#: logsrvd/logsrvd_relay.c:909 #, 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:909 +#: logsrvd/logsrvd_relay.c:911 msgid "timeout writing to relay" msgstr "przekroczony limit czasu przy pisaniu do przekaźnika" -#: logsrvd/logsrvd_relay.c:962 logsrvd/logsrvd_relay.c:969 -#: logsrvd/logsrvd_relay.c:981 +#: logsrvd/logsrvd_relay.c:964 logsrvd/logsrvd_relay.c:971 +#: logsrvd/logsrvd_relay.c:983 msgid "error writing to relay" msgstr "błąd zapisu do przekaźnika" @@ -1268,79 +1286,79 @@ msgid "unable to get server IP addr" msgstr "nie udało się uzyskać adresu IP serwera" -#: logsrvd/sendlog.c:300 plugins/sudoers/sudoreplay.c:868 +#: logsrvd/sendlog.c:309 plugins/sudoers/sudoreplay.c:868 #, c-format msgid "unable to read %s/%s: %s" msgstr "nie udało się odczytać %s/%s: %s" -#: logsrvd/sendlog.c:1020 plugins/sudoers/iolog.c:949 -#: plugins/sudoers/iolog.c:1024 +#: logsrvd/sendlog.c:1029 plugins/sudoers/iolog.c:948 +#: plugins/sudoers/iolog.c:1023 #, c-format msgid "unexpected I/O event %d" msgstr "nieoczekiwane zdarzenie we/wy %d" -#: logsrvd/sendlog.c:1073 logsrvd/sendlog.c:1090 logsrvd/sendlog.c:1124 -#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1394 -#: plugins/sudoers/log_client.c:1462 plugins/sudoers/log_client.c:1501 +#: logsrvd/sendlog.c:1082 logsrvd/sendlog.c:1099 logsrvd/sendlog.c:1133 +#: plugins/sudoers/log_client.c:1126 plugins/sudoers/log_client.c:1402 +#: plugins/sudoers/log_client.c:1470 plugins/sudoers/log_client.c:1509 #, c-format msgid "%s: unexpected state %d" msgstr "%s: nieoczekiwany stan %d" -#: logsrvd/sendlog.c:1160 plugins/sudoers/log_client.c:1550 +#: logsrvd/sendlog.c:1169 plugins/sudoers/log_client.c:1558 #, c-format msgid "error message received from server: %s" msgstr "odebrano od serwera komunikat błędu: %s" -#: logsrvd/sendlog.c:1173 plugins/sudoers/log_client.c:1563 +#: logsrvd/sendlog.c:1182 plugins/sudoers/log_client.c:1571 #, c-format msgid "abort message received from server: %s" msgstr "odebrano od serwera komunikat zerwania: %s" -#: logsrvd/sendlog.c:1232 plugins/sudoers/log_client.c:1613 +#: logsrvd/sendlog.c:1241 plugins/sudoers/log_client.c:1621 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: nieoczekiwana wartość type_case %d" -#: logsrvd/sendlog.c:1261 +#: logsrvd/sendlog.c:1270 msgid "timeout reading from server" msgstr "przekroczony limit czasu przy czytaniu z serwera" -#: logsrvd/sendlog.c:1310 plugins/sudoers/log_client.c:1729 +#: logsrvd/sendlog.c:1319 plugins/sudoers/log_client.c:1743 msgid "host name does not match certificate" msgstr "nazwa hosta nie pasuje do certyfikatu" -#: logsrvd/sendlog.c:1343 +#: logsrvd/sendlog.c:1352 msgid "premature EOF" msgstr "przedwczesny EOF" -#: logsrvd/sendlog.c:1356 plugins/sudoers/log_client.c:1776 +#: logsrvd/sendlog.c:1365 plugins/sudoers/log_client.c:1790 #, c-format msgid "server message too large: %u" msgstr "komunikat serwera zbyt duży: %u" -#: logsrvd/sendlog.c:1412 +#: logsrvd/sendlog.c:1421 msgid "timeout writing to server" msgstr "przekroczony limit czasu przy pisaniu do serwera" -#: logsrvd/sendlog.c:1779 +#: logsrvd/sendlog.c:1788 msgid "both restart point and iolog ID must be specified" msgstr "muszą być podane jednocześnie punkt wznowienia i ID iolog" -#: logsrvd/sendlog.c:1783 +#: logsrvd/sendlog.c:1792 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:1859 +#: logsrvd/sendlog.c:1868 #, c-format msgid "exited prematurely with state %d" msgstr "zakończono przedwcześnie ze stanem %d" -#: logsrvd/sendlog.c:1860 +#: logsrvd/sendlog.c:1869 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "miniony czas wysłany do serwera [%lld, %ld]" -#: logsrvd/sendlog.c:1862 +#: logsrvd/sendlog.c:1871 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "odebrano od serwera punkt zatwierdzenia [%lld, %ld]" @@ -1398,12 +1416,12 @@ 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" -#: plugins/sudoers/audit.c:269 plugins/sudoers/audit.c:429 -#: plugins/sudoers/log_client.c:951 plugins/sudoers/log_client.c:1000 -#: plugins/sudoers/log_client.c:1049 plugins/sudoers/log_client.c:1174 -#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:693 -#: plugins/sudoers/logging.c:796 plugins/sudoers/logging.c:987 -#: plugins/sudoers/policy.c:125 +#: plugins/sudoers/audit.c:268 plugins/sudoers/audit.c:428 +#: plugins/sudoers/log_client.c:959 plugins/sudoers/log_client.c:1008 +#: plugins/sudoers/log_client.c:1057 plugins/sudoers/log_client.c:1182 +#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:711 +#: plugins/sudoers/logging.c:833 plugins/sudoers/logging.c:1000 +#: plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "nie udało się pobrać aktualnego czasu" @@ -1412,28 +1430,28 @@ msgid "unable to change password for %s" msgstr "nie udało się zmienić hasła dla %s" -#: plugins/sudoers/auth/bsdauth.c:74 +#: plugins/sudoers/auth/bsdauth.c:77 #, c-format msgid "unable to get login class for user %s" msgstr "nie udało się uzyskać klasy logowania dla użytkownika %s" -#: plugins/sudoers/auth/bsdauth.c:79 -msgid "unable to begin bsd authentication" -msgstr "nie udało się rozpocząć uwierzytelnienia BSD" - -#: plugins/sudoers/auth/bsdauth.c:87 +#: plugins/sudoers/auth/bsdauth.c:84 msgid "invalid authentication type" msgstr "błędny rodzaj uwierzytelnienia" +#: plugins/sudoers/auth/bsdauth.c:89 +msgid "unable to begin BSD authentication" +msgstr "nie udało się rozpocząć uwierzytelnienia BSD" + #: plugins/sudoers/auth/bsdauth.c:96 msgid "unable to initialize BSD authentication" msgstr "nie udało się zainicjować uwierzytelnienia BSD" -#: plugins/sudoers/auth/bsdauth.c:186 +#: plugins/sudoers/auth/bsdauth.c:188 msgid "your account has expired" msgstr "konto wygasło" -#: plugins/sudoers/auth/bsdauth.c:188 +#: plugins/sudoers/auth/bsdauth.c:190 msgid "approval failed" msgstr "zezwolenie nie powiodło się" @@ -1652,13 +1670,12 @@ "\n" #: plugins/sudoers/check.c:353 plugins/sudoers/check.c:363 -#: plugins/sudoers/parse.c:82 plugins/sudoers/sudoers.c:945 -#: plugins/sudoers/sudoers.c:966 plugins/sudoers/tsdump.c:119 +#: plugins/sudoers/parse.c:80 plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid %u" msgstr "nieznany uid %u" -#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1279 +#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1278 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" @@ -1673,84 +1690,84 @@ msgid "%s \"%s\" referenced but not defined" msgstr "%s \"%s\" użyty, ale nie zdefiniowany" -#: plugins/sudoers/cvtsudoers.c:209 +#: plugins/sudoers/cvtsudoers.c:210 #, c-format msgid "order increment: %s: %s" msgstr "zwiększenie rangi: %s: %s" -#: plugins/sudoers/cvtsudoers.c:228 +#: plugins/sudoers/cvtsudoers.c:229 #, c-format msgid "starting order: %s: %s" msgstr "początkowa ranga: %s: %s" -#: plugins/sudoers/cvtsudoers.c:238 +#: plugins/sudoers/cvtsudoers.c:239 #, c-format msgid "order padding: %s: %s" msgstr "wyrównanie rangi: %s: %s" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/visudo.c:184 +#: plugins/sudoers/cvtsudoers.c:249 plugins/sudoers/visudo.c:188 #, c-format msgid "%s grammar version %d\n" msgstr "%s, wersja gramatyki %d\n" -#: plugins/sudoers/cvtsudoers.c:277 plugins/sudoers/testsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:278 plugins/sudoers/testsudoers.c:163 #, c-format msgid "unsupported input format %s" msgstr "nieobsługiwany format wejścia %s" -#: plugins/sudoers/cvtsudoers.c:295 +#: plugins/sudoers/cvtsudoers.c:296 #, c-format msgid "unsupported output format %s" msgstr "nieobsługiwany format wyjścia %s" -#: plugins/sudoers/cvtsudoers.c:385 +#: plugins/sudoers/cvtsudoers.c:386 #, c-format 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:399 plugins/sudoers/sudoers.c:166 -#: plugins/sudoers/sudoers.c:222 plugins/sudoers/testsudoers.c:254 -#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:654 +#: plugins/sudoers/cvtsudoers.c:400 plugins/sudoers/sudoers.c:163 +#: plugins/sudoers/sudoers.c:221 plugins/sudoers/testsudoers.c:263 +#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:657 msgid "unable to initialize sudoers default values" msgstr "nie udało się zainicjować wartości domyślnych sudoers" -#: plugins/sudoers/cvtsudoers.c:525 plugins/sudoers/ldap_conf.c:434 +#: plugins/sudoers/cvtsudoers.c:526 plugins/sudoers/ldap_conf.c:431 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" -#: plugins/sudoers/cvtsudoers.c:584 +#: plugins/sudoers/cvtsudoers.c:605 #, c-format msgid "%s: unknown key word %s" msgstr "%s: nieznane słowo kluczowe %s" -#: plugins/sudoers/cvtsudoers.c:630 +#: plugins/sudoers/cvtsudoers.c:651 #, c-format msgid "invalid defaults type: %s" msgstr "błędny typ wartości domyślnej: %s" -#: plugins/sudoers/cvtsudoers.c:653 +#: plugins/sudoers/cvtsudoers.c:674 #, c-format msgid "invalid suppression type: %s" msgstr "błędny typ ograniczenia: %s" -#: plugins/sudoers/cvtsudoers.c:694 plugins/sudoers/cvtsudoers.c:710 +#: plugins/sudoers/cvtsudoers.c:715 plugins/sudoers/cvtsudoers.c:731 #, c-format msgid "invalid filter: %s" msgstr "błędny filtr: %s" -#: plugins/sudoers/cvtsudoers.c:754 plugins/sudoers/visudo.c:982 +#: plugins/sudoers/cvtsudoers.c:775 plugins/sudoers/visudo.c:992 #, c-format msgid "failed to parse %s file, unknown error" msgstr "nie udało się przeanalizować pliku %s, nieznany błąd" -#: plugins/sudoers/cvtsudoers.c:1478 plugins/sudoers/sudoreplay.c:1142 -#: plugins/sudoers/timestamp.c:343 plugins/sudoers/timestamp.c:346 +#: plugins/sudoers/cvtsudoers.c:1499 plugins/sudoers/sudoreplay.c:1142 +#: plugins/sudoers/timestamp.c:368 plugins/sudoers/timestamp.c:371 #, c-format msgid "unable to write to %s" msgstr "nie udało się zapisać do %s" -#: plugins/sudoers/cvtsudoers.c:1506 +#: plugins/sudoers/cvtsudoers.c:1527 #, c-format msgid "" "%s - convert between sudoers file formats\n" @@ -1759,7 +1776,7 @@ "%s - konwersja między formatami pliku sudoers\n" "\n" -#: plugins/sudoers/cvtsudoers.c:1508 +#: plugins/sudoers/cvtsudoers.c:1529 msgid "" "\n" "Options:\n" @@ -1804,37 +1821,36 @@ #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 #: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:340 #: plugins/sudoers/env.c:347 plugins/sudoers/env.c:458 -#: plugins/sudoers/ldap.c:528 plugins/sudoers/ldap.c:761 -#: plugins/sudoers/ldap.c:1134 plugins/sudoers/ldap_conf.c:222 -#: plugins/sudoers/ldap_conf.c:313 plugins/sudoers/ldap_util.c:486 +#: plugins/sudoers/ldap.c:509 plugins/sudoers/ldap.c:626 +#: plugins/sudoers/ldap.c:999 plugins/sudoers/ldap_conf.c:219 +#: plugins/sudoers/ldap_conf.c:310 plugins/sudoers/ldap_util.c:486 #: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:461 -#: plugins/sudoers/logging.c:817 plugins/sudoers/logging.c:827 -#: plugins/sudoers/policy.c:807 plugins/sudoers/policy.c:818 +#: plugins/sudoers/policy.c:824 plugins/sudoers/policy.c:835 #: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 #: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/sudoreplay.c:1339 plugins/sudoers/sudoreplay.c:1345 -#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/toke_util.c:213 toke.l:995 toke.l:1197 +#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/toke_util.c:213 toke.l:996 toke.l:1259 #, c-format msgid "internal error, %s overflow" msgstr "błąd wewnętrzny, przepełnienie %s" -#: plugins/sudoers/cvtsudoers_csv.c:452 plugins/sudoers/cvtsudoers_csv.c:466 -#: plugins/sudoers/cvtsudoers_json.c:657 plugins/sudoers/cvtsudoers_json.c:672 +#: plugins/sudoers/cvtsudoers_csv.c:454 plugins/sudoers/cvtsudoers_csv.c:468 +#: plugins/sudoers/cvtsudoers_json.c:661 plugins/sudoers/cvtsudoers_json.c:676 #: plugins/sudoers/cvtsudoers_ldif.c:347 plugins/sudoers/cvtsudoers_ldif.c:360 -#: plugins/sudoers/ldap.c:512 +#: plugins/sudoers/ldap.c:493 msgid "unable to get GMT time" msgstr "nie udało się pobrać czasu GMT" -#: plugins/sudoers/cvtsudoers_csv.c:457 plugins/sudoers/cvtsudoers_csv.c:471 -#: plugins/sudoers/cvtsudoers_json.c:662 plugins/sudoers/cvtsudoers_json.c:677 +#: plugins/sudoers/cvtsudoers_csv.c:459 plugins/sudoers/cvtsudoers_csv.c:473 +#: plugins/sudoers/cvtsudoers_json.c:666 plugins/sudoers/cvtsudoers_json.c:681 #: plugins/sudoers/cvtsudoers_ldif.c:352 plugins/sudoers/cvtsudoers_ldif.c:365 -#: plugins/sudoers/ldap.c:520 +#: plugins/sudoers/ldap.c:501 msgid "unable to format timestamp" msgstr "nie udało się sformatować znacznika czasu" -#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:515 -#: plugins/sudoers/cvtsudoers_json.c:728 +#: plugins/sudoers/cvtsudoers_json.c:481 plugins/sudoers/cvtsudoers_json.c:516 +#: plugins/sudoers/cvtsudoers_json.c:732 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" msgstr "%s:%d:%d: nieznany wpis domyślny \"%s\"" @@ -2643,18 +2659,18 @@ msgid "value \"%s\" is invalid for option \"%s\"" msgstr "błędna wartość \"%s\" dla opcji \"%s\"" -#: plugins/sudoers/defaults.c:1128 plugins/sudoers/policy.c:210 -#: plugins/sudoers/policy.c:219 +#: plugins/sudoers/defaults.c:1127 plugins/sudoers/policy.c:205 +#: plugins/sudoers/policy.c:214 #, c-format msgid "path name for \"%s\" too long" msgstr "ścieżka pliku \"%s\" zbyt długa" -#: plugins/sudoers/defaults.c:1134 +#: plugins/sudoers/defaults.c:1133 #, c-format msgid "values for \"%s\" must start with a '/', '~', or '*'" msgstr "wartości \"%s\" muszą zaczynać się od '/', '~' lub '*'" -#: plugins/sudoers/defaults.c:1141 +#: plugins/sudoers/defaults.c:1140 #, c-format msgid "values for \"%s\" must start with a '/'" msgstr "wartości \"%s\" muszą zaczynać się od '/'" @@ -2681,12 +2697,12 @@ 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/filedigest.c:49 +#: plugins/sudoers/filedigest.c:50 #, c-format -msgid "unsupported digest type %d for %s" -msgstr "nieobsługiwany typ skrótu %d dla %s" +msgid "unsupported digest type %u for %s" +msgstr "nieobsługiwany typ skrótu %u dla %s" -#: plugins/sudoers/filedigest.c:78 +#: plugins/sudoers/filedigest.c:79 #, c-format msgid "%s: read error" msgstr "%s: błąd odczytu" @@ -2720,80 +2736,80 @@ msgid "Local IP address and netmask pairs:\n" msgstr "Pary lokalnych adresów IP i masek:\n" -#: plugins/sudoers/iolog.c:685 +#: plugins/sudoers/iolog.c:684 msgid "unable to update sequence file" msgstr "nie udało się uaktualnić pliku sekwencji" -#: plugins/sudoers/iolog.c:719 plugins/sudoers/iolog.c:907 -#: plugins/sudoers/iolog.c:1069 plugins/sudoers/iolog.c:1076 -#: plugins/sudoers/iolog.c:1197 plugins/sudoers/iolog.c:1204 -#: plugins/sudoers/iolog.c:1303 plugins/sudoers/iolog.c:1310 +#: plugins/sudoers/iolog.c:718 plugins/sudoers/iolog.c:906 +#: plugins/sudoers/iolog.c:1068 plugins/sudoers/iolog.c:1075 +#: plugins/sudoers/iolog.c:1196 plugins/sudoers/iolog.c:1203 +#: plugins/sudoers/iolog.c:1302 plugins/sudoers/iolog.c:1309 #, 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:727 +#: plugins/sudoers/iolog.c:726 #, c-format msgid "unable to create %s/%s" msgstr "nie udało się utworzyć %s/%s" -#: plugins/sudoers/iolog.c:955 +#: plugins/sudoers/iolog.c:954 #, 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:1054 plugins/sudoers/iolog.c:1182 -#: plugins/sudoers/iolog.c:1287 plugins/sudoers/timestamp.c:879 -#: plugins/sudoers/timestamp.c:971 plugins/sudoers/visudo.c:556 -#: plugins/sudoers/visudo.c:562 +#: plugins/sudoers/iolog.c:1053 plugins/sudoers/iolog.c:1181 +#: plugins/sudoers/iolog.c:1286 plugins/sudoers/timestamp.c:904 +#: plugins/sudoers/timestamp.c:996 plugins/sudoers/visudo.c:559 +#: plugins/sudoers/visudo.c:565 msgid "unable to read the clock" msgstr "nie udało się odczytać zegara" -#: plugins/sudoers/iolog.c:1279 plugins/sudoers/log_client.c:1192 -#: plugins/sudoers/log_client.c:1202 plugins/sudoers/log_client.c:1206 +#: plugins/sudoers/iolog.c:1278 plugins/sudoers/log_client.c:1200 +#: plugins/sudoers/log_client.c:1210 plugins/sudoers/log_client.c:1214 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: błąd wewnętrzny, błędny sygnał %d" -#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:292 +#: plugins/sudoers/ldap.c:154 plugins/sudoers/ldap_conf.c:289 msgid "starttls not supported when using ldaps" msgstr "brak obsługi starttls w przypadku użycia ldaps" -#: plugins/sudoers/ldap.c:248 +#: plugins/sudoers/ldap.c:225 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "nie udało się zainicjować bazy certyfikatów i kluczy SSL: %s" -#: plugins/sudoers/ldap.c:251 +#: plugins/sudoers/ldap.c:228 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "aby używać SSL, trzeba ustawić TLS_CERT w %s" -#: plugins/sudoers/ldap.c:1714 +#: plugins/sudoers/ldap.c:1587 #, c-format msgid "unable to initialize LDAP: %s" msgstr "nie udało się zainicjować LDAP: %s" -#: plugins/sudoers/ldap.c:1751 +#: plugins/sudoers/ldap.c:1624 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "wybrano start_tls, ale biblioteki LDAP nie obsługują ldap_start_tls_s() ani ldap_start_tls_s_np()" -#: plugins/sudoers/ldap.c:1888 plugins/sudoers/parse_ldif.c:748 +#: plugins/sudoers/ldap.c:1761 plugins/sudoers/parse_ldif.c:748 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "błędny atrybut sudoOrder: %s" -#: plugins/sudoers/ldap_conf.c:200 +#: plugins/sudoers/ldap_conf.c:197 #, c-format msgid "%s: port too large" msgstr "%s: za duży numer portu" -#: plugins/sudoers/ldap_conf.c:261 +#: plugins/sudoers/ldap_conf.c:258 #, c-format msgid "unsupported LDAP uri type: %s" msgstr "nieobsługiwany rodzaj URI LDAP: %s" -#: plugins/sudoers/ldap_conf.c:288 +#: plugins/sudoers/ldap_conf.c:285 msgid "unable to mix ldap and ldaps URIs" msgstr "nie można mieszać URI ldap i ldaps" @@ -2819,7 +2835,7 @@ msgstr "nie udało się wysłać komunikatu audytowego" #: plugins/sudoers/log_client.c:125 plugins/sudoers/log_client.c:412 -#: plugins/sudoers/log_client.c:1439 plugins/sudoers/log_client.c:2055 +#: plugins/sudoers/log_client.c:1447 plugins/sudoers/log_client.c:2069 msgid "error in event loop" msgstr "błąd w pętli zdarzeń" @@ -2853,28 +2869,28 @@ 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:543 +#: plugins/sudoers/log_client.c:545 msgid "TLS initialization was unsuccessful" msgstr "Inicjowanie TLS nie powiodło się" -#: plugins/sudoers/log_client.c:553 +#: plugins/sudoers/log_client.c:555 msgid "TLS handshake was unsuccessful" msgstr "Powitanie TLS nie powiodło się" -#: plugins/sudoers/log_client.c:1210 +#: plugins/sudoers/log_client.c:1218 #, 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:1739 plugins/sudoers/log_client.c:1763 +#: plugins/sudoers/log_client.c:1753 plugins/sudoers/log_client.c:1777 msgid "lost connection to log server" msgstr "utracono połączenie z serwerem logów" -#: plugins/sudoers/log_client.c:1840 +#: plugins/sudoers/log_client.c:1854 msgid "missing write buffer" msgstr "brak bufora zapisu" -#: plugins/sudoers/log_client.c:1994 +#: plugins/sudoers/log_client.c:2008 msgid "unable to connect to log server" msgstr "nie udało się połączyć z serwerem logów" @@ -2907,22 +2923,22 @@ #: plugins/sudoers/logging.c:324 #, 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" +msgid "Sorry, user %s is not allowed to execute '%s%s%s%s' as %s%s%s on %s.\n" +msgstr "Niestety użytkownik %s nie ma uprawnień do uruchamiania '%s%s%s%s' jako %s%s%s na %s.\n" #: plugins/sudoers/logging.c:334 msgid "This incident has been reported to the administrator.\n" msgstr "Ten incydent został zgłoszony do administratora.\n" -#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:657 plugins/sudoers/sudoers.c:659 -#: plugins/sudoers/sudoers.c:661 plugins/sudoers/sudoers.c:816 -#: plugins/sudoers/sudoers.c:818 +#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:566 +#: plugins/sudoers/sudoers.c:567 plugins/sudoers/sudoers.c:569 +#: plugins/sudoers/sudoers.c:570 plugins/sudoers/sudoers.c:791 +#: plugins/sudoers/sudoers.c:793 #, c-format msgid "%s: command not found" msgstr "%s: nie znaleziono polecenia" -#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:651 +#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:562 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2947,31 +2963,31 @@ msgid "a password is required" msgstr "wymagane jest hasło" -#: plugins/sudoers/logging.c:803 plugins/sudoers/logging.c:815 +#: plugins/sudoers/logging.c:855 msgid "problem parsing sudoers" msgstr "problem przy analizie pliku sudoers" -#: plugins/sudoers/logging.c:877 plugins/sudoers/logging.c:889 +#: plugins/sudoers/logging.c:896 plugins/sudoers/logging.c:904 #, c-format msgid "%s:%d:%d: %s" msgstr "%s:%d:%d: %s" -#: plugins/sudoers/logging.c:1066 +#: plugins/sudoers/logging.c:1079 #, c-format msgid "unable to write log file: %s" msgstr "nie udało się zapisać pliku logu: %s" -#: plugins/sudoers/match_digest.c:112 +#: plugins/sudoers/match_digest.c:101 #, c-format msgid "digest for %s (%s) bad length %zu, expected %zu" msgstr "skrót dla %s (%s) ma błędną długość %zu, oczekiwano %zu" -#: plugins/sudoers/match_digest.c:131 +#: plugins/sudoers/match_digest.c:120 #, c-format 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:631 +#: plugins/sudoers/parse.c:643 #, c-format msgid "" "\n" @@ -2980,7 +2996,7 @@ "\n" "Rola LDAP: %s\n" -#: plugins/sudoers/parse.c:634 +#: plugins/sudoers/parse.c:646 msgid "" "\n" "Sudoers entry:\n" @@ -2988,38 +3004,38 @@ "\n" "Wpis sudoers:\n" -#: plugins/sudoers/parse.c:636 +#: plugins/sudoers/parse.c:648 msgid " RunAsUsers: " msgstr " Jako użytkownicy: " -#: plugins/sudoers/parse.c:651 +#: plugins/sudoers/parse.c:663 msgid " RunAsGroups: " msgstr " Jako grupy: " -#: plugins/sudoers/parse.c:661 +#: plugins/sudoers/parse.c:673 msgid " Options: " msgstr " Opcje: " -#: plugins/sudoers/parse.c:725 +#: plugins/sudoers/parse.c:737 msgid " Commands:\n" msgstr " Polecenia:\n" -#: plugins/sudoers/parse.c:916 +#: plugins/sudoers/parse.c:928 #, 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:934 +#: plugins/sudoers/parse.c:946 #, 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:952 +#: plugins/sudoers/parse.c:964 #, 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:967 +#: plugins/sudoers/parse.c:979 #, 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" @@ -3034,64 +3050,72 @@ msgid "invalid LDIF attribute: %s" msgstr "błędny atrybut LDIF: %s" -#: plugins/sudoers/policy.c:82 plugins/sudoers/policy.c:113 +#: plugins/sudoers/pivot.c:74 +msgid "unable to restore root directory" +msgstr "nie udało się przywrócić katalogu głównego" + +#: plugins/sudoers/pivot.c:82 +msgid "unable to restore current working directory" +msgstr "nie udało się przywrócić aktualnego katalogu roboczego" + +#: 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:360 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:356 plugins/sudoers/testsudoers.c:277 msgid "unable to parse network address list" msgstr "nie udało się przeanalizować listy adresów sieciowych" -#: plugins/sudoers/policy.c:528 +#: plugins/sudoers/policy.c:524 msgid "user name not set by sudo front-end" msgstr "nazwa użytkownika nie ustawiona przez frontend sudo" -#: plugins/sudoers/policy.c:532 +#: plugins/sudoers/policy.c:528 msgid "user-ID not set by sudo front-end" msgstr "ID użytkownika nie ustawiony przez frontend sudo" -#: plugins/sudoers/policy.c:536 +#: plugins/sudoers/policy.c:532 msgid "group-ID not set by sudo front-end" msgstr "ID grupy nie ustawiony przez frontend sudo" -#: plugins/sudoers/policy.c:540 +#: plugins/sudoers/policy.c:536 msgid "host name not set by sudo front-end" msgstr "nazwa hosta nie ustawiona przez frontend sudo" -#: plugins/sudoers/policy.c:737 +#: plugins/sudoers/policy.c:754 #, c-format msgid "invalid working directory: %s" msgstr "błędny katalog roboczy: %s" -#: plugins/sudoers/policy.c:921 +#: plugins/sudoers/policy.c:938 #, c-format msgid "invalid chroot directory: %s" msgstr "błędny katalog chroot: %s" -#: plugins/sudoers/policy.c:1108 plugins/sudoers/visudo.c:259 -#: plugins/sudoers/visudo.c:906 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/visudo.c:910 +#: plugins/sudoers/visudo.c:1209 #, c-format msgid "unable to execute %s" msgstr "nie udało się wywołać %s" -#: plugins/sudoers/policy.c:1178 plugins/sudoers/policy.c:1215 -#: plugins/sudoers/policy.c:1237 plugins/sudoers/policy.c:1263 +#: plugins/sudoers/policy.c:1195 plugins/sudoers/policy.c:1230 +#: plugins/sudoers/policy.c:1252 plugins/sudoers/policy.c:1274 #, 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:1299 +#: plugins/sudoers/policy.c:1294 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Wersja wtyczki polityki sudoers %s\n" -#: plugins/sudoers/policy.c:1301 +#: plugins/sudoers/policy.c:1296 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Wersja gramatyki pliku sudoers %d\n" -#: plugins/sudoers/policy.c:1305 +#: plugins/sudoers/policy.c:1300 #, c-format msgid "" "\n" @@ -3100,27 +3124,27 @@ "\n" "Ścieżka do sudoers: %s\n" -#: plugins/sudoers/policy.c:1308 +#: plugins/sudoers/policy.c:1303 #, c-format msgid "nsswitch path: %s\n" msgstr "ścieżka do nsswitch: %s\n" -#: plugins/sudoers/policy.c:1310 +#: plugins/sudoers/policy.c:1305 #, c-format msgid "ldap.conf path: %s\n" msgstr "ścieżka do ldap.conf: %s\n" -#: plugins/sudoers/policy.c:1311 +#: plugins/sudoers/policy.c:1306 #, c-format msgid "ldap.secret path: %s\n" msgstr "ścieżka do ldap.secret: %s\n" -#: plugins/sudoers/policy.c:1344 +#: plugins/sudoers/policy.c:1339 #, 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:1362 +#: plugins/sudoers/policy.c:1357 #, 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)" @@ -3189,48 +3213,48 @@ 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:445 -#: plugins/sudoers/set_perms.c:852 plugins/sudoers/set_perms.c:1162 -#: plugins/sudoers/set_perms.c:1460 +#: plugins/sudoers/set_perms.c:115 plugins/sudoers/set_perms.c:451 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1178 +#: plugins/sudoers/set_perms.c:1481 msgid "perm stack overflow" msgstr "przepełnienie stosu uprawnień" -#: 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 +#: plugins/sudoers/set_perms.c:126 plugins/sudoers/set_perms.c:382 +#: plugins/sudoers/set_perms.c:462 plugins/sudoers/set_perms.c:730 +#: plugins/sudoers/set_perms.c:874 plugins/sudoers/set_perms.c:1102 +#: plugins/sudoers/set_perms.c:1189 plugins/sudoers/set_perms.c:1414 +#: plugins/sudoers/set_perms.c:1492 plugins/sudoers/set_perms.c:1583 msgid "perm stack underflow" msgstr "niedopełnienie stosu uprawnień" -#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 -#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 +#: plugins/sudoers/set_perms.c:186 plugins/sudoers/set_perms.c:509 +#: plugins/sudoers/set_perms.c:1243 plugins/sudoers/set_perms.c:1526 msgid "unable to change to root gid" msgstr "nie udało się zmienić na gid roota" -#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 -#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 +#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:606 +#: plugins/sudoers/set_perms.c:1006 plugins/sudoers/set_perms.c:1320 msgid "unable to change to runas gid" msgstr "nie udało się zmienić na docelowy gid" -#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 -#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 +#: plugins/sudoers/set_perms.c:282 plugins/sudoers/set_perms.c:611 +#: plugins/sudoers/set_perms.c:1011 plugins/sudoers/set_perms.c:1325 msgid "unable to set runas group vector" msgstr "nie udało się ustawić wektora grup docelowych" -#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 -#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:293 plugins/sudoers/set_perms.c:622 +#: plugins/sudoers/set_perms.c:1020 plugins/sudoers/set_perms.c:1334 msgid "unable to change to runas uid" msgstr "nie udało się zmienić na docelowy uid" -#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 -#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 +#: plugins/sudoers/set_perms.c:315 plugins/sudoers/set_perms.c:644 +#: plugins/sudoers/set_perms.c:1040 plugins/sudoers/set_perms.c:1354 msgid "unable to change to sudoers gid" msgstr "nie udało się zmienić na gid sudoers" -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 msgid "too many processes" msgstr "zbyt dużo procesów" @@ -3259,150 +3283,150 @@ msgid "unable to find symbol \"%s\" in %s" msgstr "nie udało się odnaleźć symbolu \"%s\" w %s" -#: plugins/sudoers/sudoers.c:263 +#: plugins/sudoers/sudoers.c:261 #, c-format msgid "unable to get defaults from %s" msgstr "nie udało się pobrać wartości domyślnych z %s" -#: plugins/sudoers/sudoers.c:270 +#: plugins/sudoers/sudoers.c:268 msgid "no valid sudoers sources found, quitting" msgstr "nie znaleziono poprawnych źródeł sudoers, zakończenie" -#: plugins/sudoers/sudoers.c:346 +#: plugins/sudoers/sudoers.c:344 #, 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:348 +#: plugins/sudoers/sudoers.c:346 #, 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:373 +#: plugins/sudoers/sudoers.c:371 #, 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:374 +#: plugins/sudoers/sudoers.c:372 #, 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:401 -msgid "no command specified" -msgstr "nie podano polecenia" - -#: plugins/sudoers/sudoers.c:426 +#: plugins/sudoers/sudoers.c:412 msgid "sudoers specifies that root is not allowed to sudo" msgstr "wg sudoers root nie ma prawa używać sudo" -#: plugins/sudoers/sudoers.c:483 +#: plugins/sudoers/sudoers.c:421 msgid "user not allowed to override closefrom limit" msgstr "użytkownik nie ma pozwolenia na zmianę limitu closefrom" -#: plugins/sudoers/sudoers.c:484 +#: plugins/sudoers/sudoers.c:422 msgid "you are not permitted to use the -C option" msgstr "brak uprawnień do używania opcji -C" -#: plugins/sudoers/sudoers.c:544 -#, 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:559 +#: plugins/sudoers/sudoers.c:468 msgid "no tty" msgstr "brak tty" -#: plugins/sudoers/sudoers.c:560 +#: plugins/sudoers/sudoers.c:469 msgid "sorry, you must have a tty to run sudo" msgstr "niestety do uruchomienia sudo konieczny jest tty" -#: plugins/sudoers/sudoers.c:567 +#: plugins/sudoers/sudoers.c:477 #, c-format msgid "invalid shell for user %s: %s" msgstr "błędna powłoka użytkownika %s: %s" -#: plugins/sudoers/sudoers.c:650 +#: plugins/sudoers/sudoers.c:561 msgid "command in current directory" msgstr "polecenie w bieżącym katalogu" -#: plugins/sudoers/sudoers.c:665 +#: plugins/sudoers/sudoers.c:574 msgid "\"cd\" is a shell built-in command, it cannot be run directly." msgstr "\"cd\" to polecenie wbudowane powłoki, nie może być uruchomione bezpośrednio." -#: plugins/sudoers/sudoers.c:667 +#: plugins/sudoers/sudoers.c:576 msgid "the -s option may be used to run a privileged shell." msgstr "można użyć opcji -s do uruchomienia powłoki uprzywilejowanej." -#: plugins/sudoers/sudoers.c:669 +#: plugins/sudoers/sudoers.c:578 msgid "the -D option may be used to run a command in a specific directory." msgstr "można użyć opcji -D do uruchomienia polecenia w podanym katalogu." -#: plugins/sudoers/sudoers.c:678 +#: plugins/sudoers/sudoers.c:587 msgid "user not allowed to set a command timeout" msgstr "użytkownik nie ma uprawnień do ustawienia limitu czasu polecenia" -#: plugins/sudoers/sudoers.c:680 +#: plugins/sudoers/sudoers.c:589 msgid "sorry, you are not allowed set a command timeout" msgstr "niestety brak uprawnień do ustawienia limitu czasu polecenia" -#: plugins/sudoers/sudoers.c:688 +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to preserve the environment" msgstr "użytkownik nie ma uprawnień do zachowania środowiska" -#: plugins/sudoers/sudoers.c:690 +#: plugins/sudoers/sudoers.c:599 msgid "sorry, you are not allowed to preserve the environment" msgstr "niestety brak uprawnień do zachowania środowiska" -#: plugins/sudoers/sudoers.c:799 +#: plugins/sudoers/sudoers.c:635 +msgid "no command specified" +msgstr "nie podano polecenia" + +#: plugins/sudoers/sudoers.c:774 msgid "error setting user-specified environment variables" msgstr "błąd ustawiania zmiennych środowiskowych podanych przez użytkownika" -#: plugins/sudoers/sudoers.c:1112 +#: plugins/sudoers/sudoers.c:1239 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit nie musi być uruchamiany przez sudo" -#: plugins/sudoers/sudoers.c:1157 plugins/sudoers/sudoreplay.c:1612 +#: plugins/sudoers/sudoers.c:1314 plugins/sudoers/sudoreplay.c:1612 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "nie udało się odczytać %s" -#: plugins/sudoers/sudoers.c:1186 plugins/sudoers/visudo.c:1066 +#: plugins/sudoers/sudoers.c:1337 plugins/sudoers/visudo.c:1114 #, c-format msgid "%s is not a regular file" msgstr "%s nie jest zwykłym plikiem" -#: plugins/sudoers/sudoers.c:1190 plugins/sudoers/timestamp.c:263 toke.l:1255 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/timestamp.c:288 toke.l:1325 #, 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:1194 plugins/sudoers/timestamp.c:270 toke.l:1260 +#: plugins/sudoers/sudoers.c:1345 plugins/sudoers/timestamp.c:295 toke.l:1330 #, c-format msgid "%s is world writable" msgstr "%s jest zapisywalny dla świata" -#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/timestamp.c:275 toke.l:1263 +#: plugins/sudoers/sudoers.c:1349 plugins/sudoers/timestamp.c:300 toke.l:1333 #, 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:1233 +#: plugins/sudoers/sudoers.c:1377 #, c-format msgid "only root can use \"-c %s\"" msgstr "tylko root może używać \"-c %s\"" -#: plugins/sudoers/sudoers.c:1252 +#: plugins/sudoers/sudoers.c:1396 #, c-format msgid "unknown login class %s" msgstr "nieznana klasa logowania %s" -#: plugins/sudoers/sudoers.c:1339 plugins/sudoers/sudoers.c:1354 +#: plugins/sudoers/sudoers.c:1483 plugins/sudoers/sudoers.c:1498 #, c-format msgid "unable to resolve host %s" msgstr "nie udało się rozwiązać nazwy hosta %s" +#: plugins/sudoers/sudoers.c:1636 +#, c-format +msgid "%s:%d:%d timestampowner: unknown user %s" +msgstr "%s:%d:%d timestampowner: nieznany użytkownik %s" + #: plugins/sudoers/sudoreplay.c:252 #, c-format msgid "invalid filter option: %s" @@ -3543,11 +3567,11 @@ " -s, --speed=ile przyspieszenie lub spowolnienie wyjścia\n" " -V, --version wyświetlenie informacji o wersji i zakończenie" -#: plugins/sudoers/testsudoers.c:344 +#: plugins/sudoers/testsudoers.c:355 msgid "\thost unmatched" msgstr "\thost nie znaleziony" -#: plugins/sudoers/testsudoers.c:347 +#: plugins/sudoers/testsudoers.c:358 msgid "" "\n" "Command allowed" @@ -3555,7 +3579,7 @@ "\n" "Polecenie dozwolone" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command denied" @@ -3563,7 +3587,7 @@ "\n" "Polecenie niedozwolone" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command unmatched" @@ -3571,21 +3595,21 @@ "\n" "Polecenie nie znalezione" -#: plugins/sudoers/timestamp.c:354 plugins/sudoers/timestamp.c:693 +#: plugins/sudoers/timestamp.c:379 plugins/sudoers/timestamp.c:718 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "nie udało się uciąć pliku znacznika czasu do długości %lld" -#: plugins/sudoers/timestamp.c:890 +#: plugins/sudoers/timestamp.c:915 msgid "ignoring time stamp from the future" msgstr "znacznik czasu zbyt daleko w przyszłości" -#: plugins/sudoers/timestamp.c:913 +#: plugins/sudoers/timestamp.c:938 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "znacznik czasu zbyt daleko w przyszłości: %20.20s" -#: plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1067 #, c-format msgid "unable to lock time stamp file %s" msgstr "nie udało się zablokować pliku znacznika czasu %s" @@ -3594,99 +3618,91 @@ msgid "sudoedit should not be specified with a path" msgstr "sudoedit nie powinien być podawany ze ścieżką" -#: plugins/sudoers/visudo.c:254 -msgid "the -x option will be removed in a future release" -msgstr "opcja -x będzie usunięta w kolejnej wersji" - -#: plugins/sudoers/visudo.c:256 -msgid "please consider using the cvtsudoers utility instead" -msgstr "należy rozważyć użycie zamiast niej narzędzia cvtsudoers" - -#: plugins/sudoers/visudo.c:311 plugins/sudoers/visudo.c:702 +#: plugins/sudoers/visudo.c:314 plugins/sudoers/visudo.c:705 #, c-format msgid "press return to edit %s: " msgstr "wciśnięcie return przejdzie do edycji %s: " -#: plugins/sudoers/visudo.c:326 +#: plugins/sudoers/visudo.c:329 #, c-format msgid "contents of edit session left in %s" msgstr "zawartość sesji edycji pozostawiona w %s" -#: plugins/sudoers/visudo.c:403 +#: plugins/sudoers/visudo.c:406 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "podany edytor (%s) nie istnieje" -#: plugins/sudoers/visudo.c:408 +#: plugins/sudoers/visudo.c:411 #, c-format msgid "no editor found (editor path = %s)" msgstr "nie znaleziono edytora (ścieżka = %s)" -#: plugins/sudoers/visudo.c:495 plugins/sudoers/visudo.c:774 +#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:777 #, c-format msgid "unable to stat %s" msgstr "nie udało się wykonać stat na %s" -#: plugins/sudoers/visudo.c:515 plugins/sudoers/visudo.c:523 +#: plugins/sudoers/visudo.c:518 plugins/sudoers/visudo.c:526 msgid "write error" msgstr "błąd zapisu" -#: plugins/sudoers/visudo.c:569 +#: plugins/sudoers/visudo.c:572 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "nie udało się wykonać stat na pliku tymczasowym (%s), %s nie zmieniony" -#: plugins/sudoers/visudo.c:576 +#: plugins/sudoers/visudo.c:579 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "plik tymczasowy (%s) zerowej długości, %s nie zmieniony" -#: plugins/sudoers/visudo.c:582 +#: plugins/sudoers/visudo.c:585 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "błąd edytora (%s), %s nie zmieniony" -#: plugins/sudoers/visudo.c:604 +#: plugins/sudoers/visudo.c:607 #, c-format msgid "%s unchanged" msgstr "%s nie zmieniony" -#: plugins/sudoers/visudo.c:649 +#: plugins/sudoers/visudo.c:652 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "nie udało się ponownie otworzyć pliku tymczasowego (%s), %s nie zmieniony." -#: plugins/sudoers/visudo.c:662 +#: plugins/sudoers/visudo.c:665 #, c-format msgid "unable to parse temporary file (%s), unknown error" msgstr "nie udało się przeanalizować pliku tymczasowego (%s), nieznany błąd" -#: plugins/sudoers/visudo.c:748 plugins/sudoers/visudo.c:778 -#: plugins/sudoers/visudo.c:785 +#: plugins/sudoers/visudo.c:751 plugins/sudoers/visudo.c:781 +#: plugins/sudoers/visudo.c:788 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "nie udało się ustawić (uid, gid) %s na (%u, %u)" -#: plugins/sudoers/visudo.c:813 +#: plugins/sudoers/visudo.c:816 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "%s i %s nie są na tym samym systemie plików, użycie mv do zmiany nazwy" -#: plugins/sudoers/visudo.c:824 +#: plugins/sudoers/visudo.c:827 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "polecenie nie powiodło się: '%s %s %s', %s nie zmieniony" -#: plugins/sudoers/visudo.c:831 +#: plugins/sudoers/visudo.c:834 #, c-format msgid "error renaming %s, %s unchanged" msgstr "błąd podczas zmiany nazwy %s, %s nie zmieniony" -#: plugins/sudoers/visudo.c:851 +#: plugins/sudoers/visudo.c:855 msgid "What now? " msgstr "Co teraz? " -#: plugins/sudoers/visudo.c:865 +#: plugins/sudoers/visudo.c:869 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -3698,41 +3714,49 @@ " (x) wyjście bez zapisu zmian do pliku sudoers\n" " (Q) wyjście i zapisanie zmian w pliku sudoers (NIEBEZPIECZNE!)\n" -#: plugins/sudoers/visudo.c:911 +#: plugins/sudoers/visudo.c:915 #, c-format msgid "unable to run %s" msgstr "nie udało się uruchomić %s" -#: plugins/sudoers/visudo.c:942 +#: plugins/sudoers/visudo.c:946 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s: błędny właściciel, (uid, gid) powinny wynosić (%u, %u)\n" -#: plugins/sudoers/visudo.c:953 +#: plugins/sudoers/visudo.c:957 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s: błędne uprawnienia, powinny być 0%o\n" -#: plugins/sudoers/visudo.c:999 plugins/sudoers/visudo.c:1006 +#: plugins/sudoers/visudo.c:1009 plugins/sudoers/visudo.c:1016 #, c-format msgid "%s: parsed OK\n" msgstr "%s: składnia poprawna\n" -#: plugins/sudoers/visudo.c:1025 +#: plugins/sudoers/visudo.c:1035 #, c-format msgid "%s busy, try again later" msgstr "%s zajęty, proszę spróbować później" -#: plugins/sudoers/visudo.c:1029 +#: plugins/sudoers/visudo.c:1039 msgid "Edit anyway? [y/N]" msgstr "Modyfikować mimo to? [y/N]" -#: plugins/sudoers/visudo.c:1130 +#: plugins/sudoers/visudo.c:1197 +msgid "the -x option will be removed in a future release" +msgstr "opcja -x będzie usunięta w kolejnej wersji" + +#: plugins/sudoers/visudo.c:1199 +msgid "please consider using the cvtsudoers utility instead" +msgstr "należy rozważyć użycie zamiast niej narzędzia cvtsudoers" + +#: plugins/sudoers/visudo.c:1219 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Uwaga: %s:%d:%d: nie użyty %s \"%s\"" -#: plugins/sudoers/visudo.c:1242 +#: plugins/sudoers/visudo.c:1332 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3741,7 +3765,7 @@ "%s - bezpieczna edycja pliku sudoers\n" "\n" -#: plugins/sudoers/visudo.c:1244 +#: plugins/sudoers/visudo.c:1334 msgid "" "\n" "Options:\n" @@ -3763,34 +3787,42 @@ " -s, --strict ścisłe sprawdzanie składni\n" " -V, --version wyświetlenie informacji o wersji i zakończenie\n" -#: toke.l:189 +#: toke.l:184 msgid "empty string" msgstr "pusty łańcuch" -#: toke.l:201 toke.l:571 +#: toke.l:196 toke.l:566 msgid "empty group" msgstr "pusta grupa" -#: toke.l:211 toke.l:569 +#: toke.l:206 toke.l:564 msgid "empty netgroup" msgstr "pusta grupa sieciowa" -#: toke.l:289 +#: toke.l:284 msgid "unterminated regular expression" msgstr "niezakończone wyrażenie regularne" -#: toke.l:363 toke.l:375 toke.l:387 toke.l:403 toke.l:422 toke.l:462 +#: toke.l:358 toke.l:370 toke.l:382 toke.l:398 toke.l:417 toke.l:457 msgid "invalid line continuation" msgstr "błędna kontynuacja linii" -#: toke.l:608 toke.l:620 +#: toke.l:603 toke.l:615 msgid "invalid IPv6 address" msgstr "błędny adres IPv6" -#: toke.l:876 +#: toke.l:863 msgid "unexpected line break in string" msgstr "nieoczekiwany koniec linii w łańcuchu" -#: toke.l:1226 +#: toke.l:983 +msgid "ignoring editor backup file" +msgstr "zignorowano plik kopii zapasowej edytora" + +#: toke.l:986 +msgid "ignoring file name containing '.'" +msgstr "zignorowano nazwę pliku zawierającą" + +#: toke.l:1289 msgid "too many levels of includes" msgstr "za dużo poziomów include" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/plugins/sudoers/po/ro.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/plugins/sudoers/po/ro.mo differ diff -Nru sudo-1.9.13p3/plugins/sudoers/po/ro.po sudo-1.9.14p2/plugins/sudoers/po/ro.po --- sudo-1.9.13p3/plugins/sudoers/po/ro.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/po/ro.po 2023-07-15 15:37:21.000000000 +0000 @@ -9,18 +9,20 @@ # Cronologia traducerii fișierului „sudoers”: # Traducera inițială, făcută de FM, pentru versiunea sudoers 1.9.2rc1. # Actualizare a algoritmului formelor de plural (de la „trei-vechi” la „patru”, experimental). -# Actualizare a traducerii pentru versiunea 1.9.10b1, făcută de R-GC. -# Actualizare a traducerii pentru versiunea 1.9.11b1, făcută de R-GC. -# Actualizare a traducerii pentru versiunea 1.9.12b2, făcută de R-GC. -# Actualizare a traducerii pentru versiunea 1.9.13b2, făcută de R-GC. -# Actualizare a traducerii pentru versiunea Y, făcută de X, Z(anul). +# Actualizare a traducerii pentru versiunea 1.9.10b1, făcută de R-GC, feb-2022. +# Actualizare a traducerii pentru versiunea 1.9.11b1, făcută de R-GC, mai-2022. +# Actualizare a traducerii pentru versiunea 1.9.12b2, făcută de R-GC, oct-2022. +# Actualizare a traducerii pentru versiunea 1.9.13b2, făcută de R-GC, ian-2023. +# Actualizare a traducerii pentru versiunea 1.9.14b1, făcută de R-GC, iun-2023. +# Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul). +# # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.13b2\n" +"Project-Id-Version: sudoers 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-26 20:05+0100\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-09 13:54+0200\n" "Last-Translator: Remus-Gabriel Chelu \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -31,7 +33,7 @@ "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: Poedit 3.2.2\n" -#: confstr.sh:1 gram.y:1220 plugins/sudoers/logging.c:866 +#: confstr.sh:1 gram.y:1240 plugins/sudoers/logging.c:885 msgid "syntax error" msgstr "eroare de sintaxă" @@ -55,34 +57,34 @@ msgid "Sorry, try again." msgstr "Încercați din nou." -#: gram.y:237 gram.y:304 gram.y:313 gram.y:322 gram.y:332 gram.y:342 -#: gram.y:366 gram.y:393 gram.y:402 gram.y:410 gram.y:419 gram.y:428 -#: gram.y:502 gram.y:512 gram.y:524 gram.y:572 gram.y:581 gram.y:590 -#: gram.y:599 gram.y:731 gram.y:739 gram.y:750 gram.y:762 gram.y:781 -#: gram.y:944 gram.y:949 gram.y:957 gram.y:971 gram.y:977 gram.y:1099 -#: gram.y:1108 gram.y:1116 gram.y:1125 gram.y:1134 gram.y:1163 gram.y:1172 -#: gram.y:1180 gram.y:1280 gram.y:1410 gram.y:1777 gram.y:1827 -#: lib/eventlog/eventlog.c:235 lib/eventlog/eventlog.c:312 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:834 -#: lib/eventlog/eventlog.c:1135 lib/iolog/iolog_filter.c:142 +#: gram.y:236 gram.y:303 gram.y:312 gram.y:321 gram.y:331 gram.y:341 +#: gram.y:365 gram.y:392 gram.y:401 gram.y:409 gram.y:418 gram.y:427 +#: gram.y:501 gram.y:511 gram.y:523 gram.y:571 gram.y:580 gram.y:589 +#: gram.y:598 gram.y:730 gram.y:738 gram.y:749 gram.y:761 gram.y:780 +#: gram.y:943 gram.y:948 gram.y:956 gram.y:970 gram.y:976 gram.y:988 +#: gram.y:994 gram.y:1119 gram.y:1128 gram.y:1136 gram.y:1145 gram.y:1154 +#: gram.y:1183 gram.y:1192 gram.y:1200 gram.y:1300 gram.y:1430 gram.y:1808 +#: gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:313 lib/eventlog/eventlog.c:755 +#: lib/eventlog/eventlog.c:832 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:472 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 #: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:233 -#: lib/iolog/iolog_json.c:150 lib/iolog/iolog_json.c:382 -#: lib/iolog/iolog_json.c:412 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:212 -#: logsrvd/iolog_writer.c:95 logsrvd/iolog_writer.c:100 -#: logsrvd/iolog_writer.c:134 logsrvd/iolog_writer.c:182 -#: logsrvd/iolog_writer.c:215 logsrvd/iolog_writer.c:225 -#: logsrvd/iolog_writer.c:254 logsrvd/iolog_writer.c:275 -#: logsrvd/iolog_writer.c:287 logsrvd/iolog_writer.c:297 -#: logsrvd/iolog_writer.c:307 logsrvd/iolog_writer.c:317 -#: logsrvd/iolog_writer.c:329 logsrvd/iolog_writer.c:364 -#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:377 -#: logsrvd/iolog_writer.c:383 logsrvd/iolog_writer.c:567 -#: logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 logsrvd/logsrvd.c:310 -#: logsrvd/logsrvd.c:1050 logsrvd/logsrvd.c:1113 logsrvd/logsrvd.c:1582 -#: logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 logsrvd/logsrvd.c:1988 +#: 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:212 logsrvd/iolog_writer.c:95 +#: logsrvd/iolog_writer.c:100 logsrvd/iolog_writer.c:134 +#: logsrvd/iolog_writer.c:182 logsrvd/iolog_writer.c:215 +#: logsrvd/iolog_writer.c:225 logsrvd/iolog_writer.c:254 +#: logsrvd/iolog_writer.c:275 logsrvd/iolog_writer.c:287 +#: logsrvd/iolog_writer.c:297 logsrvd/iolog_writer.c:307 +#: logsrvd/iolog_writer.c:317 logsrvd/iolog_writer.c:329 +#: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 +#: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:1058 logsrvd/logsrvd.c:1121 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 #: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 #: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 #: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 @@ -97,29 +99,31 @@ #: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1743 #: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:216 #: logsrvd/logsrvd_journal.c:217 logsrvd/logsrvd_journal.c:273 -#: logsrvd/logsrvd_journal.c:433 logsrvd/logsrvd_journal.c:435 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:216 -#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:279 -#: logsrvd/logsrvd_local.c:417 logsrvd/logsrvd_local.c:466 -#: logsrvd/logsrvd_local.c:467 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:473 logsrvd/logsrvd_queue.c:159 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/logsrvd_relay.c:444 logsrvd/logsrvd_relay.c:743 -#: logsrvd/logsrvd_relay.c:850 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 -#: logsrvd/sendlog.c:291 logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 -#: logsrvd/sendlog.c:1801 plugins/sudoers/audit.c:116 -#: plugins/sudoers/auth/bsdauth.c:150 plugins/sudoers/auth/kerb5.c:121 +#: logsrvd/logsrvd_journal.c:278 logsrvd/logsrvd_journal.c:438 +#: logsrvd/logsrvd_journal.c:440 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:216 logsrvd/logsrvd_local.c:278 +#: logsrvd/logsrvd_local.c:279 logsrvd/logsrvd_local.c:417 +#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:467 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:473 +#: logsrvd/logsrvd_queue.c:159 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/logsrvd_relay.c:446 +#: logsrvd/logsrvd_relay.c:745 logsrvd/logsrvd_relay.c:852 +#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:292 +#: logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 logsrvd/sendlog.c:624 +#: logsrvd/sendlog.c:1810 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/bsdauth.c:152 plugins/sudoers/auth/kerb5.c:121 #: plugins/sudoers/auth/kerb5.c:148 plugins/sudoers/auth/pam.c:687 #: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:175 plugins/sudoers/cvtsudoers.c:192 -#: plugins/sudoers/cvtsudoers.c:203 plugins/sudoers/cvtsudoers.c:333 -#: plugins/sudoers/cvtsudoers.c:372 plugins/sudoers/cvtsudoers.c:392 -#: plugins/sudoers/cvtsudoers.c:537 plugins/sudoers/cvtsudoers.c:670 -#: plugins/sudoers/cvtsudoers.c:688 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:870 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:246 +#: plugins/sudoers/canon_path.c:129 plugins/sudoers/canon_path.c:160 +#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:132 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:193 +#: plugins/sudoers/cvtsudoers.c:204 plugins/sudoers/cvtsudoers.c:334 +#: plugins/sudoers/cvtsudoers.c:373 plugins/sudoers/cvtsudoers.c:393 +#: plugins/sudoers/cvtsudoers.c:538 plugins/sudoers/cvtsudoers.c:691 +#: plugins/sudoers/cvtsudoers.c:709 plugins/sudoers/cvtsudoers.c:883 +#: plugins/sudoers/cvtsudoers.c:891 plugins/sudoers/cvtsudoers.c:1386 +#: plugins/sudoers/cvtsudoers.c:1390 plugins/sudoers/cvtsudoers.c:1492 +#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:247 #: 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:376 @@ -137,143 +141,152 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1158 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:212 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:689 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:691 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:294 plugins/sudoers/ldap_util.c:301 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:402 -#: plugins/sudoers/log_client.c:715 plugins/sudoers/log_client.c:736 -#: plugins/sudoers/log_client.c:1415 plugins/sudoers/log_client.c:1536 -#: plugins/sudoers/log_client.c:1636 plugins/sudoers/log_client.c:1972 -#: plugins/sudoers/log_client.c:2031 plugins/sudoers/logging.c:110 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/match_command.c:335 plugins/sudoers/match_command.c:603 -#: plugins/sudoers/match_command.c:654 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:776 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:267 plugins/sudoers/parse.c:284 -#: plugins/sudoers/parse.c:303 plugins/sudoers/parse.c:322 -#: plugins/sudoers/parse.c:339 plugins/sudoers/parse.c:362 -#: plugins/sudoers/parse.c:373 plugins/sudoers/parse_ldif.c:153 -#: plugins/sudoers/parse_ldif.c:184 plugins/sudoers/parse_ldif.c:253 -#: plugins/sudoers/parse_ldif.c:261 plugins/sudoers/parse_ldif.c:266 -#: plugins/sudoers/parse_ldif.c:342 plugins/sudoers/parse_ldif.c:353 -#: plugins/sudoers/parse_ldif.c:380 plugins/sudoers/parse_ldif.c:397 -#: plugins/sudoers/parse_ldif.c:409 plugins/sudoers/parse_ldif.c:413 -#: plugins/sudoers/parse_ldif.c:427 plugins/sudoers/parse_ldif.c:484 -#: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:628 -#: plugins/sudoers/parse_ldif.c:653 plugins/sudoers/parse_ldif.c:711 -#: plugins/sudoers/parse_ldif.c:728 plugins/sudoers/parse_ldif.c:756 -#: plugins/sudoers/parse_ldif.c:763 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 -#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 -#: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 -#: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 -#: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:185 -#: plugins/sudoers/sssd.c:414 plugins/sudoers/sssd.c:479 -#: plugins/sudoers/sssd.c:505 plugins/sudoers/sssd.c:568 -#: plugins/sudoers/sssd.c:761 plugins/sudoers/strvec_join.c:53 -#: plugins/sudoers/stubs.c:112 plugins/sudoers/stubs.c:120 -#: plugins/sudoers/sudoers.c:354 plugins/sudoers/sudoers.c:380 -#: plugins/sudoers/sudoers.c:447 plugins/sudoers/sudoers.c:464 -#: plugins/sudoers/sudoers.c:505 plugins/sudoers/sudoers.c:849 -#: plugins/sudoers/sudoers.c:902 plugins/sudoers/sudoers.c:1054 -#: plugins/sudoers/sudoers.c:1114 plugins/sudoers/sudoers.c:1369 +#: plugins/sudoers/log_client.c:717 plugins/sudoers/log_client.c:739 +#: plugins/sudoers/log_client.c:744 plugins/sudoers/log_client.c:1423 +#: plugins/sudoers/log_client.c:1544 plugins/sudoers/log_client.c:1667 +#: plugins/sudoers/log_client.c:1986 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:846 plugins/sudoers/match_command.c:295 +#: plugins/sudoers/match_command.c:563 plugins/sudoers/match_command.c:629 +#: plugins/sudoers/match_command.c:724 plugins/sudoers/match_command.c:770 +#: plugins/sudoers/match_digest.c:82 plugins/sudoers/parse.c:279 +#: plugins/sudoers/parse.c:296 plugins/sudoers/parse.c:315 +#: plugins/sudoers/parse.c:334 plugins/sudoers/parse.c:351 +#: plugins/sudoers/parse.c:374 plugins/sudoers/parse.c:385 +#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 +#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:261 +#: plugins/sudoers/parse_ldif.c:266 plugins/sudoers/parse_ldif.c:342 +#: plugins/sudoers/parse_ldif.c:353 plugins/sudoers/parse_ldif.c:380 +#: plugins/sudoers/parse_ldif.c:397 plugins/sudoers/parse_ldif.c:409 +#: plugins/sudoers/parse_ldif.c:413 plugins/sudoers/parse_ldif.c:427 +#: plugins/sudoers/parse_ldif.c:484 plugins/sudoers/parse_ldif.c:598 +#: plugins/sudoers/parse_ldif.c:628 plugins/sudoers/parse_ldif.c:653 +#: plugins/sudoers/parse_ldif.c:711 plugins/sudoers/parse_ldif.c:728 +#: plugins/sudoers/parse_ldif.c:756 plugins/sudoers/parse_ldif.c:763 +#: plugins/sudoers/policy.c:622 plugins/sudoers/policy.c:1050 +#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:199 +#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 +#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:587 +#: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:857 +#: plugins/sudoers/pwutil.c:945 plugins/sudoers/pwutil.c:993 +#: plugins/sudoers/pwutil.c:1052 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 +#: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1325 plugins/sudoers/sudoers.c:1513 #: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 #: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 #: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 -#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 -#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:588 -#: plugins/sudoers/timestamp.c:451 plugins/sudoers/timestamp.c:495 -#: plugins/sudoers/timestamp.c:1017 plugins/sudoers/timestamp.c:1146 -#: plugins/sudoers/toke_util.c:78 plugins/sudoers/toke_util.c:106 -#: plugins/sudoers/toke_util.c:131 plugins/sudoers/toke_util.c:161 -#: plugins/sudoers/toke_util.c:200 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:150 plugins/sudoers/visudo.c:385 -#: plugins/sudoers/visudo.c:391 plugins/sudoers/visudo.c:502 -#: plugins/sudoers/visudo.c:1056 toke.l:1031 toke.l:1163 toke.l:1234 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 +#: plugins/sudoers/toke_util.c:161 plugins/sudoers/toke_util.c:200 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1087 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1299 msgid "unable to allocate memory" msgstr "nu se poate aloca memoria" -#: gram.y:623 +#: gram.y:622 msgid "a digest requires a path name" -msgstr "tabelul sumelor de control necesită un nume de cale" +msgstr "tabelul sumelor de control necesită un nume de rută" -#: gram.y:645 +#: gram.y:644 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "valorile pentru „CWD” trebuie să înceapă cu un caracter: „/”, „~”, sau „*”" -#: gram.y:651 +#: gram.y:650 msgid "\"CWD\" path too long" -msgstr "calea „CWD” este prea lungă" +msgstr "ruta „CWD” este prea lungă" -#: gram.y:661 +#: gram.y:660 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "valorile pentru „CHROOT” trebuie să înceapă cu un caracter: „/”, „~”, sau „*”" -#: gram.y:667 +#: gram.y:666 msgid "\"CHROOT\" path too long" -msgstr "calea „CHROOT” este prea lungă" +msgstr "ruta „CHROOT” este prea lungă" -#: gram.y:802 +#: gram.y:801 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "eroare de sintaxă, cuvântul rezervat %s utilizat ca nume de alias" -#: gram.y:825 +#: gram.y:824 msgid "invalid notbefore value" msgstr "valoare „notbefore” nevalidă" -#: gram.y:834 +#: gram.y:833 msgid "invalid notafter value" msgstr "valoare „notafter” nevalidă" -#: gram.y:844 plugins/sudoers/policy.c:385 +#: gram.y:843 plugins/sudoers/policy.c:381 msgid "timeout value too large" msgstr "limită de timp prea mare" -#: gram.y:846 plugins/sudoers/policy.c:387 +#: gram.y:845 plugins/sudoers/policy.c:383 msgid "invalid timeout value" msgstr "valoare de limită de timp nevalidă" -#: gram.y:967 plugins/sudoers/sudoers.c:1072 +#: gram.y:966 plugins/sudoers/sudoers.c:1192 msgid "command too long" msgstr "comandă prea lungă" -#: gram.y:1224 plugins/sudoers/check_aliases.c:96 -#: plugins/sudoers/defaults.c:1276 +#: gram.y:1000 +msgid "expected a fully-qualified path name" +msgstr "se aștepta un nume de rută complet calificat" + +#: gram.y:1244 plugins/sudoers/check_aliases.c:96 +#: plugins/sudoers/defaults.c:1275 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1278 +#: gram.y:1298 #, c-format msgid "Alias \"%s\" already defined" msgstr "Aliasul „%s” este deja definit" -#: gram.y:1777 gram.y:1827 lib/eventlog/eventlog.c:235 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:830 -#: lib/eventlog/eventlog.c:833 lib/eventlog/eventlog.c:1135 -#: lib/iolog/iolog_filter.c:142 lib/iolog/iolog_filter.c:202 -#: lib/iolog/iolog_filter.c:232 lib/iolog/iolog_json.c:150 -#: lib/iolog/iolog_json.c:381 lib/iolog/iolog_json.c:412 +#: gram.y:1808 gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:755 lib/eventlog/eventlog.c:828 +#: lib/eventlog/eventlog.c:831 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:471 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 +#: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:232 #: 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 @@ -288,55 +301,56 @@ #: logsrvd/iolog_writer.c:316 logsrvd/iolog_writer.c:328 #: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 #: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 -#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 -#: logsrvd/logsrvd.c:310 logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:490 -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:611 -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:732 -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1439 logsrvd/logsrvd.c:1446 -#: logsrvd/logsrvd.c:1582 logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 -#: logsrvd/logsrvd.c:1988 logsrvd/logsrvd_conf.c:357 -#: logsrvd/logsrvd_conf.c:370 logsrvd/logsrvd_conf.c:511 -#: logsrvd/logsrvd_conf.c:534 logsrvd/logsrvd_conf.c:538 -#: logsrvd/logsrvd_conf.c:556 logsrvd/logsrvd_conf.c:626 -#: logsrvd/logsrvd_conf.c:649 logsrvd/logsrvd_conf.c:678 -#: logsrvd/logsrvd_conf.c:692 logsrvd/logsrvd_conf.c:706 -#: logsrvd/logsrvd_conf.c:720 logsrvd/logsrvd_conf.c:734 -#: logsrvd/logsrvd_conf.c:748 logsrvd/logsrvd_conf.c:829 -#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1053 -#: logsrvd/logsrvd_conf.c:1448 logsrvd/logsrvd_conf.c:1595 -#: logsrvd/logsrvd_conf.c:1621 logsrvd/logsrvd_conf.c:1633 -#: logsrvd/logsrvd_conf.c:1640 logsrvd/logsrvd_conf.c:1646 -#: logsrvd/logsrvd_conf.c:1742 logsrvd/logsrvd_journal.c:76 -#: logsrvd/logsrvd_journal.c:125 logsrvd/logsrvd_journal.c:216 -#: logsrvd/logsrvd_journal.c:246 logsrvd/logsrvd_journal.c:250 -#: logsrvd/logsrvd_journal.c:258 logsrvd/logsrvd_journal.c:281 -#: logsrvd/logsrvd_journal.c:285 logsrvd/logsrvd_journal.c:433 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:278 -#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:491 logsrvd/logsrvd_queue.c:158 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:291 -#: logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 logsrvd/sendlog.c:1503 -#: logsrvd/sendlog.c:1510 logsrvd/sendlog.c:1733 logsrvd/sendlog.c:1801 -#: logsrvd/tls_init.c:305 logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 -#: plugins/sudoers/audit.c:116 plugins/sudoers/auth/pam.c:502 -#: plugins/sudoers/auth/pam.c:687 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:174 plugins/sudoers/cvtsudoers.c:191 -#: plugins/sudoers/cvtsudoers.c:202 plugins/sudoers/cvtsudoers.c:332 -#: plugins/sudoers/cvtsudoers.c:536 plugins/sudoers/cvtsudoers.c:669 -#: plugins/sudoers/cvtsudoers.c:687 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:869 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:182 plugins/sudoers/cvtsudoers_csv.c:245 -#: 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:375 -#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:437 -#: plugins/sudoers/cvtsudoers_ldif.c:448 plugins/sudoers/cvtsudoers_ldif.c:455 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:480 -#: plugins/sudoers/cvtsudoers_ldif.c:488 plugins/sudoers/cvtsudoers_ldif.c:635 -#: plugins/sudoers/cvtsudoers_merge.c:47 plugins/sudoers/cvtsudoers_merge.c:51 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:530 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:668 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:1132 +#: logsrvd/logsrvd.c:1447 logsrvd/logsrvd.c:1454 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 +#: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 +#: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 +#: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 +#: logsrvd/logsrvd_conf.c:626 logsrvd/logsrvd_conf.c:649 +#: logsrvd/logsrvd_conf.c:678 logsrvd/logsrvd_conf.c:692 +#: logsrvd/logsrvd_conf.c:706 logsrvd/logsrvd_conf.c:720 +#: logsrvd/logsrvd_conf.c:734 logsrvd/logsrvd_conf.c:748 +#: logsrvd/logsrvd_conf.c:829 logsrvd/logsrvd_conf.c:1036 +#: logsrvd/logsrvd_conf.c:1053 logsrvd/logsrvd_conf.c:1448 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1621 +#: logsrvd/logsrvd_conf.c:1633 logsrvd/logsrvd_conf.c:1640 +#: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1742 +#: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:125 +#: logsrvd/logsrvd_journal.c:216 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:250 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:290 +#: logsrvd/logsrvd_journal.c:438 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:466 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:491 +#: logsrvd/logsrvd_queue.c:158 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 +#: logsrvd/sendlog.c:292 logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 +#: logsrvd/sendlog.c:624 logsrvd/sendlog.c:1512 logsrvd/sendlog.c:1519 +#: logsrvd/sendlog.c:1742 logsrvd/sendlog.c:1810 logsrvd/tls_init.c:305 +#: logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/pam.c:502 plugins/sudoers/auth/pam.c:687 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/canon_path.c:129 +#: plugins/sudoers/canon_path.c:160 plugins/sudoers/check_aliases.c:168 +#: plugins/sudoers/cvtsudoers.c:132 plugins/sudoers/cvtsudoers.c:175 +#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:203 +#: plugins/sudoers/cvtsudoers.c:333 plugins/sudoers/cvtsudoers.c:537 +#: plugins/sudoers/cvtsudoers.c:690 plugins/sudoers/cvtsudoers.c:708 +#: plugins/sudoers/cvtsudoers.c:883 plugins/sudoers/cvtsudoers.c:890 +#: plugins/sudoers/cvtsudoers.c:1386 plugins/sudoers/cvtsudoers.c:1390 +#: plugins/sudoers/cvtsudoers.c:1492 plugins/sudoers/cvtsudoers_csv.c:182 +#: plugins/sudoers/cvtsudoers_csv.c:246 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:375 plugins/sudoers/cvtsudoers_ldif.c:429 +#: plugins/sudoers/cvtsudoers_ldif.c:437 plugins/sudoers/cvtsudoers_ldif.c:448 +#: plugins/sudoers/cvtsudoers_ldif.c:455 plugins/sudoers/cvtsudoers_ldif.c:467 +#: plugins/sudoers/cvtsudoers_ldif.c:480 plugins/sudoers/cvtsudoers_ldif.c:488 +#: plugins/sudoers/cvtsudoers_ldif.c:635 plugins/sudoers/cvtsudoers_merge.c:47 +#: plugins/sudoers/cvtsudoers_merge.c:51 #: plugins/sudoers/cvtsudoers_merge.c:353 #: plugins/sudoers/cvtsudoers_merge.c:399 #: plugins/sudoers/cvtsudoers_merge.c:445 @@ -348,42 +362,43 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1157 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:211 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:688 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:690 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:293 plugins/sudoers/ldap_util.c:300 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:228 #: plugins/sudoers/log_client.c:250 plugins/sudoers/log_client.c:264 -#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:715 -#: plugins/sudoers/log_client.c:736 plugins/sudoers/log_client.c:1415 -#: plugins/sudoers/log_client.c:1536 plugins/sudoers/log_client.c:1636 -#: plugins/sudoers/log_client.c:1972 plugins/sudoers/log_client.c:2031 -#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:188 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/logging.c:880 plugins/sudoers/logging.c:892 -#: plugins/sudoers/match_command.c:334 plugins/sudoers/match_command.c:602 -#: plugins/sudoers/match_command.c:653 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:775 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:266 plugins/sudoers/parse.c:283 -#: plugins/sudoers/parse.c:302 plugins/sudoers/parse.c:321 -#: plugins/sudoers/parse.c:338 plugins/sudoers/parse.c:361 -#: plugins/sudoers/parse.c:372 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:717 +#: plugins/sudoers/log_client.c:739 plugins/sudoers/log_client.c:744 +#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1544 +#: plugins/sudoers/log_client.c:1667 plugins/sudoers/log_client.c:1986 +#: plugins/sudoers/log_client.c:2045 plugins/sudoers/logging.c:110 +#: plugins/sudoers/logging.c:188 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:734 plugins/sudoers/logging.c:846 +#: plugins/sudoers/logging.c:899 plugins/sudoers/logging.c:906 +#: plugins/sudoers/match_command.c:294 plugins/sudoers/match_command.c:562 +#: plugins/sudoers/match_command.c:628 plugins/sudoers/match_command.c:724 +#: plugins/sudoers/match_command.c:769 plugins/sudoers/match_digest.c:82 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:295 +#: plugins/sudoers/parse.c:314 plugins/sudoers/parse.c:333 +#: plugins/sudoers/parse.c:350 plugins/sudoers/parse.c:373 +#: plugins/sudoers/parse.c:384 plugins/sudoers/parse_ldif.c:152 #: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 #: plugins/sudoers/parse_ldif.c:260 plugins/sudoers/parse_ldif.c:265 #: plugins/sudoers/parse_ldif.c:341 plugins/sudoers/parse_ldif.c:352 @@ -393,56 +408,60 @@ #: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:627 #: plugins/sudoers/parse_ldif.c:652 plugins/sudoers/parse_ldif.c:710 #: plugins/sudoers/parse_ldif.c:727 plugins/sudoers/parse_ldif.c:755 -#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:154 -#: plugins/sudoers/policy.c:163 plugins/sudoers/policy.c:172 -#: plugins/sudoers/policy.c:201 plugins/sudoers/policy.c:370 -#: plugins/sudoers/policy.c:385 plugins/sudoers/policy.c:387 -#: plugins/sudoers/policy.c:425 plugins/sudoers/policy.c:434 -#: plugins/sudoers/policy.c:482 plugins/sudoers/policy.c:492 -#: plugins/sudoers/policy.c:501 plugins/sudoers/policy.c:510 -#: plugins/sudoers/policy.c:519 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:166 +#: plugins/sudoers/policy.c:196 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:381 plugins/sudoers/policy.c:383 +#: plugins/sudoers/policy.c:421 plugins/sudoers/policy.c:430 +#: plugins/sudoers/policy.c:478 plugins/sudoers/policy.c:488 +#: plugins/sudoers/policy.c:497 plugins/sudoers/policy.c:506 +#: plugins/sudoers/policy.c:515 plugins/sudoers/policy.c:622 +#: plugins/sudoers/policy.c:1050 plugins/sudoers/prompt.c:93 #: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 #: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 #: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 #: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 #: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 plugins/sudoers/sssd.c:144 #: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 #: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 -#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:761 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:112 -#: plugins/sudoers/stubs.c:120 plugins/sudoers/sudoers.c:354 -#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:447 -#: plugins/sudoers/sudoers.c:464 plugins/sudoers/sudoers.c:505 -#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:902 -#: plugins/sudoers/sudoers.c:1054 plugins/sudoers/sudoers.c:1114 -#: plugins/sudoers/sudoers.c:1369 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:562 plugins/sudoers/sudoreplay.c:1278 -#: plugins/sudoers/sudoreplay.c:1334 plugins/sudoers/sudoreplay.c:1530 -#: plugins/sudoers/sudoreplay.c:1534 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:588 plugins/sudoers/timestamp.c:451 -#: plugins/sudoers/timestamp.c:495 plugins/sudoers/timestamp.c:1017 -#: plugins/sudoers/timestamp.c:1146 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1324 plugins/sudoers/sudoers.c:1513 +#: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 +#: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 #: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 #: plugins/sudoers/toke_util.c:160 plugins/sudoers/toke_util.c:200 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:150 -#: plugins/sudoers/visudo.c:385 plugins/sudoers/visudo.c:391 -#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:1056 toke.l:1031 -#: toke.l:1163 toke.l:1226 toke.l:1234 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1086 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1288 toke.l:1299 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:303 +#: lib/eventlog/eventlog.c:304 #, c-format msgid "unable to dup stdin: %m" msgstr "nu se poate duplica stdin: %m" -#: lib/eventlog/eventlog.c:345 +#: lib/eventlog/eventlog.c:346 #, c-format msgid "unable to execute %s: %m" msgstr "nu se poate executa %s: %m" @@ -461,96 +480,96 @@ msgid "unable to open pipe: %m" msgstr "nu se poate deschide linia de legătură: %m" -#: lib/eventlog/eventlog.c:960 +#: lib/eventlog/eventlog.c:958 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:989 +#: lib/eventlog/eventlog.c:987 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (comandă continuată) %s" -#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1242 -#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 -#, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "expresie regulată nevalidă „%s”: %s" - -#: lib/iolog/iolog_json.c:140 +#: lib/eventlog/parse_json.c:175 #, c-format msgid "expected JSON_STRING, got %d" msgstr "se aștepta JSON_STRING, s-a obținut %d" -#: lib/iolog/iolog_json.c:145 +#: lib/eventlog/parse_json.c:180 msgid "JSON_ARRAY too large" msgstr "JSON_ARRAY este prea mare" -#: lib/iolog/iolog_json.c:404 +#: lib/eventlog/parse_json.c:494 msgid "missing double quote in name" msgstr "lipsesc ghilimelele duble din nume" -#: lib/iolog/iolog_json.c:511 +#: lib/eventlog/parse_json.c:612 msgid "missing JSON_OBJECT" msgstr "JSON_OBJECT lipsește" -#: lib/iolog/iolog_json.c:515 +#: lib/eventlog/parse_json.c:616 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "s-a așteptat JSON_OBJECT, s-a obținut %d" -#: lib/iolog/iolog_json.c:632 +#: lib/eventlog/parse_json.c:750 #, c-format msgid "json stack exhausted (max %u frames)" msgstr "stiva json a fost epuizată (maxim %u cadre)" -#: lib/iolog/iolog_json.c:706 +#: lib/eventlog/parse_json.c:828 msgid "objects must consist of name:value pairs" msgstr "obiectele trebuie să fie formate din perechi nume:valoare" -#: lib/iolog/iolog_json.c:711 lib/iolog/iolog_json.c:742 -#: lib/iolog/iolog_json.c:786 lib/iolog/iolog_json.c:808 -#: lib/iolog/iolog_json.c:830 lib/iolog/iolog_json.c:852 -#: lib/iolog/iolog_json.c:874 +#: lib/eventlog/parse_json.c:833 lib/eventlog/parse_json.c:864 +#: lib/eventlog/parse_json.c:908 lib/eventlog/parse_json.c:930 +#: lib/eventlog/parse_json.c:952 lib/eventlog/parse_json.c:974 +#: lib/eventlog/parse_json.c:996 msgid "missing separator between values" msgstr "lipsește separatorul dintre valori" -#: lib/iolog/iolog_json.c:726 lib/iolog/iolog_json.c:900 +#: lib/eventlog/parse_json.c:848 lib/eventlog/parse_json.c:1022 msgid "unmatched close brace" msgstr "acoladă de închidere desperecheată" -#: lib/iolog/iolog_json.c:737 +#: lib/eventlog/parse_json.c:859 msgid "unexpected array" msgstr "matrice neașteptată" -#: lib/iolog/iolog_json.c:757 lib/iolog/iolog_json.c:903 +#: lib/eventlog/parse_json.c:879 lib/eventlog/parse_json.c:1025 msgid "unmatched close bracket" msgstr "paranteză dreaptă închisă desperecheată" -#: lib/iolog/iolog_json.c:768 +#: lib/eventlog/parse_json.c:890 msgid "unexpected string" msgstr "șir neașteptat" -#: lib/iolog/iolog_json.c:779 +#: lib/eventlog/parse_json.c:901 msgid "missing colon after name" msgstr "lipsesc două puncte „:” după nume" -#: lib/iolog/iolog_json.c:800 lib/iolog/iolog_json.c:822 +#: lib/eventlog/parse_json.c:922 lib/eventlog/parse_json.c:944 msgid "unexpected boolean" msgstr "valoare boleană neașteptată" -#: lib/iolog/iolog_json.c:844 +#: lib/eventlog/parse_json.c:966 msgid "unexpected null" msgstr "valoare null neașteptată" -#: lib/iolog/iolog_json.c:865 +#: lib/eventlog/parse_json.c:987 msgid "unexpected number" msgstr "număr neașteptat" -#: lib/iolog/iolog_json.c:912 +#: lib/eventlog/parse_json.c:1033 msgid "parse error" msgstr "eroare de analizare" +#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1241 +#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "expresie regulată nevalidă „%s”: %s" + #: lib/iolog/iolog_legacy.c:65 #, c-format msgid "%s: invalid log file" @@ -587,13 +606,13 @@ msgstr "%s există dar nu este un director (0%o)" #: lib/iolog/iolog_mkdirs.c:123 lib/iolog/iolog_mkdtemp.c:79 -#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:209 +#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:234 #, c-format msgid "unable to mkdir %s" msgstr "nu s-a putut executa «mkdir», pentru a crea directorul %s" -#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:757 -#: plugins/sudoers/visudo.c:791 plugins/sudoers/visudo.c:797 +#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:760 +#: plugins/sudoers/visudo.c:794 plugins/sudoers/visudo.c:800 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "nu s-a putut modifica modul de acces de la %s la 0%o" @@ -625,8 +644,8 @@ msgid "%s: protocol error: NULL value found in %s" msgstr "%s: eroare de protocol: valoare nulă (NULL) găsită în %s" -#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:980 -#: plugins/sudoers/policy.c:593 +#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:993 +#: plugins/sudoers/policy.c:589 msgid "unable to generate UUID" msgstr "nu s-a putut genera UUID-ul" @@ -651,12 +670,12 @@ #: logsrvd/iolog_writer.c:538 logsrvd/iolog_writer.c:545 #, c-format msgid "unable to expand iolog path %s" -msgstr "nu se poate expanda calea către iolog %s" +msgstr "nu se poate expanda ruta către iolog %s" #: logsrvd/iolog_writer.c:563 #, c-format msgid "unable to create iolog path %s" -msgstr "nu se poate crea calea către iolog %s" +msgstr "nu se poate crea ruta către iolog %s" #: logsrvd/iolog_writer.c:593 #, c-format @@ -678,26 +697,26 @@ msgid "invalid I/O log %s: %s referenced but not present" msgstr "jurnal de In/Ieș nevalid %s: %s menționat, dar nu definit" -#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:385 +#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:390 #, c-format msgid "%s: unable to find resume point [%lld, %ld]" msgstr "%s: nu se poate găsi punctul de reluare [%lld, %ld]" -#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:428 +#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:433 #: logsrvd/logsrvd_queue.c:115 logsrvd/tls_init.c:256 -#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:730 -#: plugins/sudoers/cvtsudoers.c:751 plugins/sudoers/cvtsudoers.c:1431 -#: plugins/sudoers/cvtsudoers_csv.c:695 plugins/sudoers/cvtsudoers_json.c:898 -#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1152 -#: plugins/sudoers/sudoers.c:1182 plugins/sudoers/sudoreplay.c:1496 -#: plugins/sudoers/timestamp.c:460 plugins/sudoers/tsdump.c:128 -#: plugins/sudoers/visudo.c:975 +#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:751 +#: plugins/sudoers/cvtsudoers.c:772 plugins/sudoers/cvtsudoers.c:1452 +#: plugins/sudoers/cvtsudoers_csv.c:697 plugins/sudoers/cvtsudoers_json.c:902 +#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1310 +#: plugins/sudoers/sudoers.c:1334 plugins/sudoers/sudoreplay.c:1496 +#: plugins/sudoers/timestamp.c:485 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:982 #, c-format msgid "unable to open %s" msgstr "nu se poate deschide %s" -#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:105 -#: logsrvd/logsrv_util.c:112 plugins/sudoers/sudoreplay.c:355 +#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:111 +#: logsrvd/logsrv_util.c:118 plugins/sudoers/sudoreplay.c:355 #: plugins/sudoers/sudoreplay.c:361 #, c-format msgid "unable to open %s/%s" @@ -713,17 +732,17 @@ msgid "unable to rename %s to %s" msgstr "nu se poate redenumi %s în %s" -#: logsrvd/logsrv_util.c:147 logsrvd/logsrv_util.c:176 +#: logsrvd/logsrv_util.c:153 logsrvd/logsrv_util.c:182 #, c-format msgid "%s/%s: unable to find resume point [%lld, %ld]" msgstr "%s/%s: nu se poate găsi punctul de reluare [%lld, %ld]" -#: logsrvd/logsrv_util.c:159 +#: logsrvd/logsrv_util.c:165 #, c-format msgid "missing I/O log file %s/%s" msgstr "lipsește fișierul jurnal de In/Ieș %s/%s" -#: logsrvd/logsrv_util.c:166 +#: logsrvd/logsrv_util.c:172 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: nu se poate căuta mai departe %zu" @@ -732,31 +751,31 @@ msgid "unable to connect to relay" msgstr "nu se poate conecta la releu" -#: logsrvd/logsrvd.c:330 logsrvd/logsrvd_relay.c:842 +#: logsrvd/logsrvd.c:338 logsrvd/logsrvd_relay.c:844 #, c-format msgid "server message too large: %zu" msgstr "mesajul serverului este prea mare: %zu" -#: logsrvd/logsrvd.c:422 logsrvd/logsrvd.c:545 logsrvd/logsrvd.c:631 -#: logsrvd/logsrvd.c:873 logsrvd/logsrvd.c:887 logsrvd/logsrvd.c:1049 -#: logsrvd/logsrvd.c:1174 logsrvd/logsrvd.c:1347 logsrvd/logsrvd.c:1365 -#: logsrvd/logsrvd.c:1464 logsrvd/logsrvd.c:1589 logsrvd/logsrvd.c:1773 -#: logsrvd/logsrvd_journal.c:497 logsrvd/logsrvd_local.c:238 +#: logsrvd/logsrvd.c:430 logsrvd/logsrvd.c:553 logsrvd/logsrvd.c:639 +#: logsrvd/logsrvd.c:881 logsrvd/logsrvd.c:895 logsrvd/logsrvd.c:1057 +#: logsrvd/logsrvd.c:1182 logsrvd/logsrvd.c:1355 logsrvd/logsrvd.c:1373 +#: logsrvd/logsrvd.c:1472 logsrvd/logsrvd.c:1597 logsrvd/logsrvd.c:1784 +#: logsrvd/logsrvd_journal.c:502 logsrvd/logsrvd_local.c:238 #: logsrvd/logsrvd_queue.c:164 logsrvd/logsrvd_relay.c:172 #: logsrvd/logsrvd_relay.c:249 logsrvd/logsrvd_relay.c:253 -#: logsrvd/logsrvd_relay.c:389 logsrvd/logsrvd_relay.c:581 -#: logsrvd/logsrvd_relay.c:742 logsrvd/logsrvd_relay.c:1131 -#: logsrvd/sendlog.c:1291 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 -#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:278 -#: plugins/sudoers/iolog.c:1031 plugins/sudoers/iolog.c:1164 -#: plugins/sudoers/iolog.c:1262 plugins/sudoers/log_client.c:121 +#: logsrvd/logsrvd_relay.c:391 logsrvd/logsrvd_relay.c:583 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:1133 +#: logsrvd/sendlog.c:1300 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:277 +#: plugins/sudoers/iolog.c:1030 plugins/sudoers/iolog.c:1163 +#: plugins/sudoers/iolog.c:1261 plugins/sudoers/log_client.c:121 #: plugins/sudoers/log_client.c:343 plugins/sudoers/log_client.c:359 -#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:611 -#: plugins/sudoers/log_client.c:618 plugins/sudoers/log_client.c:1103 -#: plugins/sudoers/log_client.c:1384 plugins/sudoers/log_client.c:1425 -#: plugins/sudoers/log_client.c:1433 plugins/sudoers/log_client.c:1592 -#: plugins/sudoers/log_client.c:1710 plugins/sudoers/log_client.c:2039 -#: plugins/sudoers/log_client.c:2047 plugins/sudoers/logging.c:147 +#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:613 +#: plugins/sudoers/log_client.c:620 plugins/sudoers/log_client.c:1111 +#: plugins/sudoers/log_client.c:1392 plugins/sudoers/log_client.c:1433 +#: plugins/sudoers/log_client.c:1441 plugins/sudoers/log_client.c:1600 +#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:2053 +#: plugins/sudoers/log_client.c:2061 plugins/sudoers/logging.c:147 #: plugins/sudoers/logging.c:205 plugins/sudoers/sudoreplay.c:519 #: plugins/sudoers/sudoreplay.c:566 plugins/sudoers/sudoreplay.c:808 #: plugins/sudoers/sudoreplay.c:920 plugins/sudoers/sudoreplay.c:1011 @@ -766,189 +785,190 @@ msgid "unable to add event to queue" msgstr "nu se poate adăuga evenimentul la coadă" -#: logsrvd/logsrvd.c:446 logsrvd/logsrvd.c:483 logsrvd/logsrvd.c:515 -#: logsrvd/logsrvd.c:569 logsrvd/logsrvd.c:648 logsrvd/logsrvd.c:684 -#: logsrvd/logsrvd.c:720 logsrvd/logsrvd.c:756 logsrvd/logsrvd_relay.c:510 -#: logsrvd/logsrvd_relay.c:543 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:577 logsrvd/logsrvd.c:656 logsrvd/logsrvd.c:692 +#: logsrvd/logsrvd.c:728 logsrvd/logsrvd.c:764 logsrvd/logsrvd_relay.c:512 +#: logsrvd/logsrvd_relay.c:545 #, c-format msgid "unexpected state %d for %s" msgstr "stare neașteptată %d pentru %s" -#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 -#: logsrvd/logsrvd.c:570 logsrvd/logsrvd.c:649 logsrvd/logsrvd.c:685 -#: logsrvd/logsrvd.c:721 logsrvd/logsrvd.c:757 logsrvd/logsrvd_relay.c:512 -#: logsrvd/logsrvd_relay.c:545 +#: logsrvd/logsrvd.c:455 logsrvd/logsrvd.c:492 logsrvd/logsrvd.c:524 +#: logsrvd/logsrvd.c:578 logsrvd/logsrvd.c:657 logsrvd/logsrvd.c:693 +#: logsrvd/logsrvd.c:729 logsrvd/logsrvd.c:765 logsrvd/logsrvd_relay.c:514 +#: logsrvd/logsrvd_relay.c:547 msgid "state machine error" msgstr "eroare de stare a mașinii" -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:454 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:462 msgid "invalid AcceptMessage" msgstr "AcceptMessage nevalid" -#: logsrvd/logsrvd.c:490 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:499 msgid "invalid RejectMessage" msgstr "RejectMessage nevalid" -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:530 logsrvd/logsrvd.c:531 msgid "invalid ExitMessage" msgstr "ExitMessage nevalid" -#: logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:577 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:585 msgid "invalid RestartMessage" msgstr "RestartMessage nevalid" -#: logsrvd/logsrvd.c:611 logsrvd/logsrvd.c:612 +#: logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:620 msgid "invalid AlertMessage" msgstr "AlertMessage nevalid" -#: logsrvd/logsrvd.c:653 logsrvd/logsrvd.c:689 logsrvd/logsrvd.c:725 +#: logsrvd/logsrvd.c:661 logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:733 #, c-format msgid "%s: unexpected IoBuffer" msgstr "%s: IoBuffer neașteptat" -#: logsrvd/logsrvd.c:654 logsrvd/logsrvd.c:690 logsrvd/logsrvd.c:726 +#: logsrvd/logsrvd.c:662 logsrvd/logsrvd.c:698 logsrvd/logsrvd.c:734 msgid "protocol error" msgstr "eroare de protocol" -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:661 +#: logsrvd/logsrvd.c:668 logsrvd/logsrvd.c:669 msgid "invalid IoBuffer" msgstr "IoBuffer nevalid" -#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:697 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:705 msgid "invalid ChangeWindowSize" msgstr "ChangeWindowSize nevalid" -#: logsrvd/logsrvd.c:732 logsrvd/logsrvd.c:733 +#: logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:741 msgid "invalid CommandSuspend" msgstr "CommandSuspend nevalid" -#: logsrvd/logsrvd.c:782 logsrvd/logsrvd_journal.c:296 -#: logsrvd/logsrvd_relay.c:652 logsrvd/sendlog.c:1192 -#: plugins/sudoers/log_client.c:1582 +#: logsrvd/logsrvd.c:790 logsrvd/logsrvd_journal.c:301 +#: logsrvd/logsrvd_relay.c:654 logsrvd/sendlog.c:1201 +#: plugins/sudoers/log_client.c:1590 #, c-format msgid "unable to unpack %s size %zu" msgstr "nu se poate despacheta %s cu dimensiunea %zu" -#: logsrvd/logsrvd.c:827 logsrvd/logsrvd_journal.c:370 -#: logsrvd/logsrvd_relay.c:676 +#: logsrvd/logsrvd.c:835 logsrvd/logsrvd_journal.c:375 +#: logsrvd/logsrvd_relay.c:678 #, c-format msgid "unexpected type_case value %d in %s from %s" msgstr "valoare type_case %d neașteptată în %s din %s" -#: logsrvd/logsrvd.c:829 +#: logsrvd/logsrvd.c:837 msgid "unrecognized ClientMessage type" msgstr "tip de ClientMessage nerecunoscut" -#: logsrvd/logsrvd.c:919 +#: logsrvd/logsrvd.c:927 #, c-format msgid "timed out writing to client %s" msgstr "a expirat timpul de scriere la clientul %s" -#: logsrvd/logsrvd.c:924 logsrvd/logsrvd_relay.c:914 logsrvd/sendlog.c:1395 +#: logsrvd/logsrvd.c:932 logsrvd/logsrvd_relay.c:916 logsrvd/sendlog.c:1404 #, c-format msgid "missing write buffer for client %s" msgstr "lipsește memoria tampon de scriere pentru clientul %s" -#: logsrvd/logsrvd.c:1020 +#: logsrvd/logsrvd.c:1028 #, c-format msgid "timed out reading from client %s" msgstr "a expirat timpul de citire de la clientul %s" -#: logsrvd/logsrvd.c:1061 logsrvd/logsrvd_relay.c:777 +#: logsrvd/logsrvd.c:1069 logsrvd/logsrvd_relay.c:779 #, c-format msgid "EOF from %s without proper TLS shutdown" msgstr "sfârșit de fișier de la %s fără închiderea corectă a TLS" -#: logsrvd/logsrvd.c:1105 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:322 -#: plugins/sudoers/log_client.c:721 +#: logsrvd/logsrvd.c:1113 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:331 +#: plugins/sudoers/log_client.c:723 #, c-format msgid "client message too large: %zu" msgstr "mesajul clientului este prea mare: %zu" -#: logsrvd/logsrvd.c:1106 logsrvd/logsrvd_journal.c:259 +#: logsrvd/logsrvd.c:1114 logsrvd/logsrvd_journal.c:259 #: logsrvd/logsrvd_journal.c:260 msgid "client message too large" msgstr "mesajul clientului este prea mare" -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1125 +#: logsrvd/logsrvd.c:1132 logsrvd/logsrvd.c:1133 msgid "invalid ClientMessage" msgstr "ClientMessage nevalid" -#: logsrvd/logsrvd.c:1425 +#: logsrvd/logsrvd.c:1433 msgid "unable to get remote IP addr" msgstr "nu se poate obține adresa IP de la distanță" -#: logsrvd/logsrvd.c:1456 logsrvd/tls_client.c:203 +#: logsrvd/logsrvd.c:1464 logsrvd/tls_client.c:203 #: plugins/sudoers/log_client.c:281 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Nu se pot atașa datele utilizatorului la obiectul ssl: %s" -#: logsrvd/logsrvd.c:1639 logsrvd/logsrvd.c:1992 +#: logsrvd/logsrvd.c:1647 logsrvd/logsrvd.c:2003 msgid "unable to setup listen socket" msgstr "nu se poate configura soclul de ascultare" -#: logsrvd/logsrvd.c:1756 +#: logsrvd/logsrvd.c:1767 #, c-format msgid "unexpected signal %d" msgstr "semnal neașteptat %d" -#: logsrvd/logsrvd.c:1894 +#: logsrvd/logsrvd.c:1905 msgid "sudo log server" msgstr "server de jurnal al sudo" -#: logsrvd/logsrvd.c:1896 logsrvd/sendlog.c:121 +#: logsrvd/logsrvd.c:1907 logsrvd/sendlog.c:121 msgid "Options:" msgstr "Opțiuni:" -#: logsrvd/logsrvd.c:1898 +#: logsrvd/logsrvd.c:1909 msgid "path to configuration file" -msgstr "calea către fișierul de configurare" +msgstr "ruta către fișierul de configurare" -#: logsrvd/logsrvd.c:1900 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1911 logsrvd/sendlog.c:123 msgid "display help message and exit" msgstr "afișează mesajul de ajutor și iese" -#: logsrvd/logsrvd.c:1902 +#: logsrvd/logsrvd.c:1913 msgid "do not fork, run in the foreground" msgstr "nu se bifurcă, rulează în prim-plan" -#: logsrvd/logsrvd.c:1904 +#: logsrvd/logsrvd.c:1915 msgid "percent chance connections will drop" msgstr "șansele procentuale de conexiuni vor scădea" -#: logsrvd/logsrvd.c:1906 logsrvd/sendlog.c:153 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:153 msgid "display version information and exit" msgstr "afișează informațiile despre versiune și iese" -#: logsrvd/logsrvd.c:1956 logsrvd/sendlog.c:1702 +#: logsrvd/logsrvd.c:1967 logsrvd/sendlog.c:1711 msgid "Protobuf-C version 1.3 or higher required" msgstr "Este necesară versiunea Protobuf-C 1.3 sau mai mare" -#: logsrvd/logsrvd.c:1972 +#: logsrvd/logsrvd.c:1983 #, c-format msgid "invalid random drop value: %s" msgstr "valoare nevalidă a probabilității de pierdere: %s" -#: logsrvd/logsrvd.c:1975 logsrvd/sendlog.c:1756 -#: plugins/sudoers/cvtsudoers.c:246 plugins/sudoers/sudoreplay.c:294 -#: plugins/sudoers/visudo.c:182 +#: logsrvd/logsrvd.c:1986 logsrvd/sendlog.c:1765 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/sudoreplay.c:294 +#: plugins/sudoers/visudo.c:186 #, c-format msgid "%s version %s\n" msgstr "%s versiunea %s\n" #: logsrvd/logsrvd_conf.c:422 plugins/sudoers/check.c:358 #: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:122 -#: plugins/sudoers/policy.c:1271 plugins/sudoers/sudoers.c:512 -#: plugins/sudoers/sudoers.c:1411 plugins/sudoers/testsudoers.c:215 -#: plugins/sudoers/testsudoers.c:382 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:939 +#: plugins/sudoers/sudoers.c:1041 plugins/sudoers/sudoers.c:1062 +#: plugins/sudoers/sudoers.c:1555 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:393 #, c-format msgid "unknown user %s" msgstr "utilizator necunoscut %s" #: logsrvd/logsrvd_conf.c:439 plugins/sudoers/iolog.c:148 -#: plugins/sudoers/sudoers.c:517 plugins/sudoers/sudoers.c:1445 -#: plugins/sudoers/testsudoers.c:406 +#: plugins/sudoers/sudoers.c:453 plugins/sudoers/sudoers.c:1589 +#: plugins/sudoers/testsudoers.c:417 #, c-format msgid "unknown group %s" msgstr "grup necunoscut %s" @@ -975,7 +995,7 @@ #: logsrvd/logsrvd_conf.c:622 logsrvd/logsrvd_conf.c:1032 #, c-format msgid "%s: not a fully qualified path" -msgstr "%s: nu este o cale complet calificată" +msgstr "%s: nu este o rută complet calificată" #: logsrvd/logsrvd_conf.c:951 logsrvd/logsrvd_conf.c:967 #: logsrvd/logsrvd_conf.c:1676 @@ -1020,8 +1040,8 @@ msgid "%s:%d [%s] illegal key: %s" msgstr "%s:%d [%s] cheie ilegală: %s" -#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:268 -#: plugins/sudoers/logging.c:1033 +#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:269 +#: plugins/sudoers/logging.c:1046 #, c-format msgid "unable to open log file %s" msgstr "nu se poate deschide fișierul de jurnal: %s" @@ -1034,13 +1054,13 @@ msgid "unable to initialize relay TLS context" msgstr "nu se poate inițializa contextul TLS al releului" -#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:424 -#: logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:434 msgid "unable to create journal file" msgstr "nu se poate crea fișierul de jurnal" #: logsrvd/logsrvd_journal.c:153 logsrvd/logsrvd_queue.c:109 -#: plugins/sudoers/visudo.c:1028 +#: plugins/sudoers/visudo.c:1038 #, c-format msgid "unable to lock %s" msgstr "nu se poate bloca %s" @@ -1053,8 +1073,8 @@ msgid "unable to open journal file" msgstr "nu se poate deschide fișierul de jurnal" -#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:460 -#: logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:470 msgid "unable to write journal file" msgstr "nu se poate scrie fișierul de jurnal" @@ -1063,20 +1083,20 @@ msgstr "nu se poate redenumi fișierul de jurnal" #: logsrvd/logsrvd_journal.c:247 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:282 logsrvd/logsrvd_journal.c:283 +#: logsrvd/logsrvd_journal.c:287 logsrvd/logsrvd_journal.c:288 msgid "unexpected EOF reading journal file" msgstr "sfârșit de fișier neașteptat la citirea fișierului de jurnal" #: logsrvd/logsrvd_journal.c:251 logsrvd/logsrvd_journal.c:252 -#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:287 +#: logsrvd/logsrvd_journal.c:291 logsrvd/logsrvd_journal.c:292 msgid "error reading journal file" msgstr "eroare la citirea fișierului de jurnal" -#: logsrvd/logsrvd_journal.c:298 logsrvd/logsrvd_journal.c:384 +#: logsrvd/logsrvd_journal.c:303 logsrvd/logsrvd_journal.c:389 msgid "invalid journal file, unable to restart" msgstr "fișier de jurnal nevalid, nu se poate reporni" -#: logsrvd/logsrvd_journal.c:443 +#: logsrvd/logsrvd_journal.c:448 #, c-format msgid "unable to seek to [%lld, %ld] in journal file %s" msgstr "nu se poate ajunge la poziția [%lld, %ld] din fișierul de jurnal %s" @@ -1134,7 +1154,7 @@ #: logsrvd/logsrvd_local.c:599 logsrvd/logsrvd_local.c:607 #: logsrvd/logsrvd_local.c:655 logsrvd/logsrvd_local.c:690 -#: plugins/sudoers/sudoreplay.c:344 +#: plugins/sudoers/sudoreplay.c:344 toke.l:982 toke.l:985 #, c-format msgid "%s/%s: %s" msgstr "%s/%s: %s" @@ -1155,11 +1175,11 @@ msgid "error writing CommandSuspend" msgstr "eroare la scrierea CommandSuspend" -#: logsrvd/logsrvd_relay.c:435 +#: logsrvd/logsrvd_relay.c:437 msgid "TLS handshake with relay host failed" msgstr "negocierea TLS cu gazda releu a eșuat" -#: logsrvd/logsrvd_relay.c:463 +#: logsrvd/logsrvd_relay.c:465 msgid "unable to connect to relay host" msgstr "nu se poate conecta la gazda releu" @@ -1168,61 +1188,61 @@ # «→ aici pare că lipsește un spațiu după cele două puncte.» # *** # corectare efectuată -#: logsrvd/logsrvd_relay.c:518 +#: logsrvd/logsrvd_relay.c:520 #, c-format msgid "%s: invalid ServerHello, missing server_id" msgstr "%s: ServerHello nevalid, server_id lipsește" -#: logsrvd/logsrvd_relay.c:520 logsrvd/sendlog.c:1096 -#: plugins/sudoers/log_client.c:1468 +#: logsrvd/logsrvd_relay.c:522 logsrvd/sendlog.c:1105 +#: plugins/sudoers/log_client.c:1476 msgid "invalid ServerHello" msgstr "ServerHello nevalid" -#: logsrvd/logsrvd_relay.c:679 +#: logsrvd/logsrvd_relay.c:681 msgid "unrecognized ServerMessage type" msgstr "tip de ServerMessage nerecunoscut" -#: logsrvd/logsrvd_relay.c:708 +#: logsrvd/logsrvd_relay.c:710 #, c-format msgid "timed out reading from relay %s (%s)" msgstr "a expirat limita de timp de citire de la releu %s (%s)" -#: logsrvd/logsrvd_relay.c:710 +#: logsrvd/logsrvd_relay.c:712 msgid "timeout reading from relay" msgstr "a expirat limita de timp de citire de la releul" -#: logsrvd/logsrvd_relay.c:762 +#: logsrvd/logsrvd_relay.c:764 msgid "relay host name does not match certificate" msgstr "numele gazdei releului nu se potrivește cu certificatul" -#: logsrvd/logsrvd_relay.c:768 logsrvd/logsrvd_relay.c:782 -#: logsrvd/logsrvd_relay.c:789 +#: logsrvd/logsrvd_relay.c:770 logsrvd/logsrvd_relay.c:784 +#: logsrvd/logsrvd_relay.c:791 msgid "error reading from relay" msgstr "eroare la citirea de la releu" -#: logsrvd/logsrvd_relay.c:810 +#: logsrvd/logsrvd_relay.c:812 msgid "unable to read from relay" msgstr "nu se poate citi de la releu" -#: logsrvd/logsrvd_relay.c:825 logsrvd/logsrvd_relay.c:943 +#: logsrvd/logsrvd_relay.c:827 logsrvd/logsrvd_relay.c:945 msgid "relay server closed connection" msgstr "conexiune închisă a serverului de releu" -#: logsrvd/logsrvd_relay.c:843 +#: logsrvd/logsrvd_relay.c:845 msgid "server message too large" msgstr "mesajul serverului este prea mare" -#: logsrvd/logsrvd_relay.c:907 +#: logsrvd/logsrvd_relay.c:909 #, c-format msgid "timed out writing to relay %s (%s)" msgstr "a expirat limita de timp la scrierea la releu %s (%s)" -#: logsrvd/logsrvd_relay.c:909 +#: logsrvd/logsrvd_relay.c:911 msgid "timeout writing to relay" msgstr "a expirat limita de timp de scriere la releu" -#: logsrvd/logsrvd_relay.c:962 logsrvd/logsrvd_relay.c:969 -#: logsrvd/logsrvd_relay.c:981 +#: logsrvd/logsrvd_relay.c:964 logsrvd/logsrvd_relay.c:971 +#: logsrvd/logsrvd_relay.c:983 msgid "error writing to relay" msgstr "eroare la scrierea la releu" @@ -1287,79 +1307,79 @@ msgid "unable to get server IP addr" msgstr "nu se poate obține adresa IP a serverului" -#: logsrvd/sendlog.c:300 plugins/sudoers/sudoreplay.c:868 +#: logsrvd/sendlog.c:309 plugins/sudoers/sudoreplay.c:868 #, c-format msgid "unable to read %s/%s: %s" msgstr "nu se poate citi %s/%s: %s" -#: logsrvd/sendlog.c:1020 plugins/sudoers/iolog.c:949 -#: plugins/sudoers/iolog.c:1024 +#: logsrvd/sendlog.c:1029 plugins/sudoers/iolog.c:948 +#: plugins/sudoers/iolog.c:1023 #, c-format msgid "unexpected I/O event %d" msgstr "eveniment de In/Ieș neașteptat %d" -#: logsrvd/sendlog.c:1073 logsrvd/sendlog.c:1090 logsrvd/sendlog.c:1124 -#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1394 -#: plugins/sudoers/log_client.c:1462 plugins/sudoers/log_client.c:1501 +#: logsrvd/sendlog.c:1082 logsrvd/sendlog.c:1099 logsrvd/sendlog.c:1133 +#: plugins/sudoers/log_client.c:1126 plugins/sudoers/log_client.c:1402 +#: plugins/sudoers/log_client.c:1470 plugins/sudoers/log_client.c:1509 #, c-format msgid "%s: unexpected state %d" msgstr "%s: stare neașteptată %d" -#: logsrvd/sendlog.c:1160 plugins/sudoers/log_client.c:1550 +#: logsrvd/sendlog.c:1169 plugins/sudoers/log_client.c:1558 #, c-format msgid "error message received from server: %s" msgstr "mesaj de eroare primit de la server: %s" -#: logsrvd/sendlog.c:1173 plugins/sudoers/log_client.c:1563 +#: logsrvd/sendlog.c:1182 plugins/sudoers/log_client.c:1571 #, c-format msgid "abort message received from server: %s" msgstr "mesaj de renunțare primit de la server: %s" -#: logsrvd/sendlog.c:1232 plugins/sudoers/log_client.c:1613 +#: logsrvd/sendlog.c:1241 plugins/sudoers/log_client.c:1621 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: valoare type_case neașteptată %d" -#: logsrvd/sendlog.c:1261 +#: logsrvd/sendlog.c:1270 msgid "timeout reading from server" msgstr "a expirat limita de timp de citire de la server" -#: logsrvd/sendlog.c:1310 plugins/sudoers/log_client.c:1729 +#: logsrvd/sendlog.c:1319 plugins/sudoers/log_client.c:1743 msgid "host name does not match certificate" msgstr "numele gazdei nu se potrivește cu certificatul" -#: logsrvd/sendlog.c:1343 +#: logsrvd/sendlog.c:1352 msgid "premature EOF" msgstr "sfârșit de fișier prematur" -#: logsrvd/sendlog.c:1356 plugins/sudoers/log_client.c:1776 +#: logsrvd/sendlog.c:1365 plugins/sudoers/log_client.c:1790 #, c-format msgid "server message too large: %u" msgstr "mesajul serverului este prea mare: %u" -#: logsrvd/sendlog.c:1412 +#: logsrvd/sendlog.c:1421 msgid "timeout writing to server" msgstr "a expirat limita de timp de scriere la server" -#: logsrvd/sendlog.c:1779 +#: logsrvd/sendlog.c:1788 msgid "both restart point and iolog ID must be specified" msgstr "trebuie să fie specificat atît ID-ul iolog cît și punctul de repornire" -#: logsrvd/sendlog.c:1783 +#: logsrvd/sendlog.c:1792 msgid "a restart point may not be set when no I/O is sent" msgstr "un punct de repornire poate să nu fie stabilit când nicio In/Ieș nu este stabilită" -#: logsrvd/sendlog.c:1859 +#: logsrvd/sendlog.c:1868 #, c-format msgid "exited prematurely with state %d" msgstr "a ieșit prematur cu starea %d" -#: logsrvd/sendlog.c:1860 +#: logsrvd/sendlog.c:1869 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "timpul scurs trimis la server [%lld, %ld]" -#: logsrvd/sendlog.c:1862 +#: logsrvd/sendlog.c:1871 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "punctul de consemnare primit de la server [%lld, %ld]" @@ -1430,12 +1450,12 @@ # din zi” nu prea are sens iar „orarul zilei” ar fi „the daily schedule”» # === # Ok, rămîne așa cum este -#: plugins/sudoers/audit.c:269 plugins/sudoers/audit.c:429 -#: plugins/sudoers/log_client.c:951 plugins/sudoers/log_client.c:1000 -#: plugins/sudoers/log_client.c:1049 plugins/sudoers/log_client.c:1174 -#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:693 -#: plugins/sudoers/logging.c:796 plugins/sudoers/logging.c:987 -#: plugins/sudoers/policy.c:125 +#: plugins/sudoers/audit.c:268 plugins/sudoers/audit.c:428 +#: plugins/sudoers/log_client.c:959 plugins/sudoers/log_client.c:1008 +#: plugins/sudoers/log_client.c:1057 plugins/sudoers/log_client.c:1182 +#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:711 +#: plugins/sudoers/logging.c:833 plugins/sudoers/logging.c:1000 +#: plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "nu se poate obține ora actuală" @@ -1444,28 +1464,28 @@ msgid "unable to change password for %s" msgstr "nu se poate schimba parola pentru %s" -#: plugins/sudoers/auth/bsdauth.c:74 +#: plugins/sudoers/auth/bsdauth.c:77 #, c-format msgid "unable to get login class for user %s" msgstr "nu se poate obține clasa de autentificare pentru utilizatorul %s" -#: plugins/sudoers/auth/bsdauth.c:79 -msgid "unable to begin bsd authentication" -msgstr "nu se poate începe autentificarea bsd" - -#: plugins/sudoers/auth/bsdauth.c:87 +#: plugins/sudoers/auth/bsdauth.c:84 msgid "invalid authentication type" msgstr "tip de autentificare nevalid" +#: plugins/sudoers/auth/bsdauth.c:89 +msgid "unable to begin BSD authentication" +msgstr "nu se poate începe autentificarea BSD" + #: plugins/sudoers/auth/bsdauth.c:96 msgid "unable to initialize BSD authentication" msgstr "nu se poate inițializa autentificarea BSD" -#: plugins/sudoers/auth/bsdauth.c:186 +#: plugins/sudoers/auth/bsdauth.c:188 msgid "your account has expired" msgstr "contul a expirat" -#: plugins/sudoers/auth/bsdauth.c:188 +#: plugins/sudoers/auth/bsdauth.c:190 msgid "approval failed" msgstr "aprobarea a eșuat" @@ -1685,13 +1705,12 @@ "\n" #: plugins/sudoers/check.c:353 plugins/sudoers/check.c:363 -#: plugins/sudoers/parse.c:82 plugins/sudoers/sudoers.c:945 -#: plugins/sudoers/sudoers.c:966 plugins/sudoers/tsdump.c:119 +#: plugins/sudoers/parse.c:80 plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid %u" msgstr "uid necunoscut %u" -#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1279 +#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1278 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" @@ -1706,84 +1725,84 @@ msgid "%s \"%s\" referenced but not defined" msgstr "%s „%s” menționat, dar nu definit" -#: plugins/sudoers/cvtsudoers.c:209 +#: plugins/sudoers/cvtsudoers.c:210 #, c-format msgid "order increment: %s: %s" msgstr "incrementarea de ordine: %s: %s" -#: plugins/sudoers/cvtsudoers.c:228 +#: plugins/sudoers/cvtsudoers.c:229 #, c-format msgid "starting order: %s: %s" msgstr "ordinea de pornire: %s: %s" -#: plugins/sudoers/cvtsudoers.c:238 +#: plugins/sudoers/cvtsudoers.c:239 #, c-format msgid "order padding: %s: %s" msgstr "completarea de ordine: %s: %s" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/visudo.c:184 +#: plugins/sudoers/cvtsudoers.c:249 plugins/sudoers/visudo.c:188 #, c-format msgid "%s grammar version %d\n" msgstr "%s versiune de gramatică %d\n" -#: plugins/sudoers/cvtsudoers.c:277 plugins/sudoers/testsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:278 plugins/sudoers/testsudoers.c:163 #, c-format msgid "unsupported input format %s" msgstr "format de intrare nesuportat %s" -#: plugins/sudoers/cvtsudoers.c:295 +#: plugins/sudoers/cvtsudoers.c:296 #, c-format msgid "unsupported output format %s" msgstr "format de ieșire nesuportat %s" -#: plugins/sudoers/cvtsudoers.c:385 +#: plugins/sudoers/cvtsudoers.c:386 #, c-format msgid "%s: input and output files must be different" msgstr "%s: fișierele de intrare și ieșire trebuie să fie diferite" -#: plugins/sudoers/cvtsudoers.c:399 plugins/sudoers/sudoers.c:166 -#: plugins/sudoers/sudoers.c:222 plugins/sudoers/testsudoers.c:254 -#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:654 +#: plugins/sudoers/cvtsudoers.c:400 plugins/sudoers/sudoers.c:163 +#: plugins/sudoers/sudoers.c:221 plugins/sudoers/testsudoers.c:263 +#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:657 msgid "unable to initialize sudoers default values" msgstr "nu se poate inițializa valorile implicite ale lui „sudoers”" -#: plugins/sudoers/cvtsudoers.c:525 plugins/sudoers/ldap_conf.c:434 +#: plugins/sudoers/cvtsudoers.c:526 plugins/sudoers/ldap_conf.c:431 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" -#: plugins/sudoers/cvtsudoers.c:584 +#: plugins/sudoers/cvtsudoers.c:605 #, c-format msgid "%s: unknown key word %s" msgstr "%s: cuvânt cheie necunoscut %s" -#: plugins/sudoers/cvtsudoers.c:630 +#: plugins/sudoers/cvtsudoers.c:651 #, c-format msgid "invalid defaults type: %s" msgstr "tip de valori implicite nevalid: %s" -#: plugins/sudoers/cvtsudoers.c:653 +#: plugins/sudoers/cvtsudoers.c:674 #, c-format msgid "invalid suppression type: %s" msgstr "tip de suprimare nevalid: %s" -#: plugins/sudoers/cvtsudoers.c:694 plugins/sudoers/cvtsudoers.c:710 +#: plugins/sudoers/cvtsudoers.c:715 plugins/sudoers/cvtsudoers.c:731 #, c-format msgid "invalid filter: %s" msgstr "filtru nevalid: %s" -#: plugins/sudoers/cvtsudoers.c:754 plugins/sudoers/visudo.c:982 +#: plugins/sudoers/cvtsudoers.c:775 plugins/sudoers/visudo.c:992 #, c-format msgid "failed to parse %s file, unknown error" msgstr "nu s-a putut analiza fișierul %s, eroare necunoscută" -#: plugins/sudoers/cvtsudoers.c:1478 plugins/sudoers/sudoreplay.c:1142 -#: plugins/sudoers/timestamp.c:343 plugins/sudoers/timestamp.c:346 +#: plugins/sudoers/cvtsudoers.c:1499 plugins/sudoers/sudoreplay.c:1142 +#: plugins/sudoers/timestamp.c:368 plugins/sudoers/timestamp.c:371 #, c-format msgid "unable to write to %s" msgstr "nu se poate scrie la %s" -#: plugins/sudoers/cvtsudoers.c:1506 +#: plugins/sudoers/cvtsudoers.c:1527 #, c-format msgid "" "%s - convert between sudoers file formats\n" @@ -1792,7 +1811,7 @@ "%s - convertește între formatele de fișier „sudoers”\n" "\n" -#: plugins/sudoers/cvtsudoers.c:1508 +#: plugins/sudoers/cvtsudoers.c:1529 msgid "" "\n" "Options:\n" @@ -1816,7 +1835,7 @@ "\n" "Opțiuni:\n" " -b, --base=dn baza DN pentru interogări LDAP «sudo»\n" -" -c, --config=fișier_conf calea către fișierul de configurare\n" +" -c, --config=fișier_conf ruta către fișierul de configurare\n" " -d, --defaults=tip_def convertește valorile implicite doar pentru tipurile specificate\n" " -e, --expand-aliases extinde numele de alias la conversie\n" " -f, --output-format=format stabilește formatul de ieșire: JSON, LDIF sau „sudoers”\n" @@ -1836,37 +1855,36 @@ #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 #: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:340 #: plugins/sudoers/env.c:347 plugins/sudoers/env.c:458 -#: plugins/sudoers/ldap.c:528 plugins/sudoers/ldap.c:761 -#: plugins/sudoers/ldap.c:1134 plugins/sudoers/ldap_conf.c:222 -#: plugins/sudoers/ldap_conf.c:313 plugins/sudoers/ldap_util.c:486 +#: plugins/sudoers/ldap.c:509 plugins/sudoers/ldap.c:626 +#: plugins/sudoers/ldap.c:999 plugins/sudoers/ldap_conf.c:219 +#: plugins/sudoers/ldap_conf.c:310 plugins/sudoers/ldap_util.c:486 #: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:461 -#: plugins/sudoers/logging.c:817 plugins/sudoers/logging.c:827 -#: plugins/sudoers/policy.c:807 plugins/sudoers/policy.c:818 +#: plugins/sudoers/policy.c:824 plugins/sudoers/policy.c:835 #: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 #: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/sudoreplay.c:1339 plugins/sudoers/sudoreplay.c:1345 -#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/toke_util.c:213 toke.l:995 toke.l:1197 +#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/toke_util.c:213 toke.l:996 toke.l:1259 #, c-format msgid "internal error, %s overflow" msgstr "eroare internă, depășire de %s" -#: plugins/sudoers/cvtsudoers_csv.c:452 plugins/sudoers/cvtsudoers_csv.c:466 -#: plugins/sudoers/cvtsudoers_json.c:657 plugins/sudoers/cvtsudoers_json.c:672 +#: plugins/sudoers/cvtsudoers_csv.c:454 plugins/sudoers/cvtsudoers_csv.c:468 +#: plugins/sudoers/cvtsudoers_json.c:661 plugins/sudoers/cvtsudoers_json.c:676 #: plugins/sudoers/cvtsudoers_ldif.c:347 plugins/sudoers/cvtsudoers_ldif.c:360 -#: plugins/sudoers/ldap.c:512 +#: plugins/sudoers/ldap.c:493 msgid "unable to get GMT time" msgstr "nu se poate obține ora GMT" -#: plugins/sudoers/cvtsudoers_csv.c:457 plugins/sudoers/cvtsudoers_csv.c:471 -#: plugins/sudoers/cvtsudoers_json.c:662 plugins/sudoers/cvtsudoers_json.c:677 +#: plugins/sudoers/cvtsudoers_csv.c:459 plugins/sudoers/cvtsudoers_csv.c:473 +#: plugins/sudoers/cvtsudoers_json.c:666 plugins/sudoers/cvtsudoers_json.c:681 #: plugins/sudoers/cvtsudoers_ldif.c:352 plugins/sudoers/cvtsudoers_ldif.c:365 -#: plugins/sudoers/ldap.c:520 +#: plugins/sudoers/ldap.c:501 msgid "unable to format timestamp" msgstr "nu se poate formata marcajul de timp" -#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:515 -#: plugins/sudoers/cvtsudoers_json.c:728 +#: plugins/sudoers/cvtsudoers_json.c:481 plugins/sudoers/cvtsudoers_json.c:516 +#: plugins/sudoers/cvtsudoers_json.c:732 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" msgstr "%s:%d:%d: intrare de valori implicite necunoscută „%s”" @@ -2095,12 +2113,12 @@ #: plugins/sudoers/def_data.c:208 #, c-format msgid "Path to log file: %s" -msgstr "Calea la fișierul de jurnal: %s" +msgstr "Ruta la fișierul de jurnal: %s" #: plugins/sudoers/def_data.c:212 #, c-format msgid "Path to mail program: %s" -msgstr "Calea la programul de mail: %s" +msgstr "Ruta la programul de poștă electronică: %s" #: plugins/sudoers/def_data.c:216 #, c-format @@ -2130,12 +2148,12 @@ #: plugins/sudoers/def_data.c:236 #, c-format msgid "Path to lecture status dir: %s" -msgstr "Calea către directorul de stare a instrucțiunilor de utilizare a «sudo»(utilizatorul, le-a primit sau nu): %s" +msgstr "Ruta către directorul de stare a instrucțiunilor de utilizare a «sudo»(utilizatorul, le-a primit sau nu): %s" #: plugins/sudoers/def_data.c:240 #, c-format msgid "Path to authentication timestamp dir: %s" -msgstr "Calea către directorul ce conține marcajele de timp ale autentificării: %s" +msgstr "Ruta către directorul ce conține marcajele de timp ale autentificării: %s" #: plugins/sudoers/def_data.c:244 #, c-format @@ -2164,12 +2182,12 @@ #: plugins/sudoers/def_data.c:264 #, c-format msgid "Value to override user's $PATH with: %s" -msgstr "Valoarea cu care să se suprascrie $PATH a utilizatorului: %s" +msgstr "Valoarea cu care să se suprascrie $PATH utilizatorului: %s" #: plugins/sudoers/def_data.c:268 #, c-format msgid "Path to the editor for use by visudo: %s" -msgstr "Calea către editorul ce va fi utilizat de către «visudo»: %s" +msgstr "Ruta către editorul ce va fi utilizat de către «visudo»: %s" #: plugins/sudoers/def_data.c:272 #, c-format @@ -2231,12 +2249,12 @@ #: plugins/sudoers/def_data.c:324 #, c-format msgid "Path to the sudo-specific environment file: %s" -msgstr "Calea către fișierul de mediu, propriu al «sudo»: %s" +msgstr "Ruta către fișierul de mediu, propriu al «sudo»: %s" #: plugins/sudoers/def_data.c:328 #, c-format msgid "Path to the restricted sudo-specific environment file: %s" -msgstr "Calea către fișierul restricționat de mediu, propriu al «sudo»: %s" +msgstr "Ruta către fișierul restricționat de mediu, propriu al «sudo»: %s" #: plugins/sudoers/def_data.c:332 #, c-format @@ -2474,7 +2492,7 @@ #: plugins/sudoers/def_data.c:500 #, c-format msgid "Execute commands by file descriptor instead of by path: %s" -msgstr "Execută comenzile după descriptorul fișierului în loc de, după calea de acces: %s" +msgstr "Execută comenzile după descriptorul fișierului în loc de, după ruta de acces: %s" #: plugins/sudoers/def_data.c:504 msgid "Ignore unknown Defaults entries in sudoers instead of producing a warning" @@ -2539,17 +2557,17 @@ #: plugins/sudoers/def_data.c:560 #, c-format msgid "Path to the audit server's CA bundle file: %s" -msgstr "Calea către fișierul pachet CA al serverului de auditare: %s" +msgstr "Ruta către fișierul pachet CA al serverului de auditare: %s" #: plugins/sudoers/def_data.c:564 #, c-format msgid "Path to the sudoers certificate file: %s" -msgstr "Calea către fișierul certificat „sudoers”: %s" +msgstr "Ruta către fișierul certificat „sudoers”: %s" #: plugins/sudoers/def_data.c:568 #, c-format msgid "Path to the sudoers private key file: %s" -msgstr "Calea către fișierul cheie privată „sudoers”: %s" +msgstr "Ruta către fișierul cheie privată „sudoers”: %s" #: plugins/sudoers/def_data.c:572 msgid "Verify that the log server's certificate is valid" @@ -2593,7 +2611,7 @@ #: plugins/sudoers/def_data.c:608 #, c-format msgid "Path to the file that is created the first time sudo is run: %s" -msgstr "Calea către fișierul care este creat prima dată când «sudo» este rulat: %s" +msgstr "Ruta către fișierul care este creat prima dată când «sudo» este rulat: %s" #: plugins/sudoers/def_data.c:612 msgid "Intercept further commands and apply sudoers restrictions to them" @@ -2734,18 +2752,18 @@ msgid "value \"%s\" is invalid for option \"%s\"" msgstr "valoarea „%s” nu este validă pentru opțiunea „%s”" -#: plugins/sudoers/defaults.c:1128 plugins/sudoers/policy.c:210 -#: plugins/sudoers/policy.c:219 +#: plugins/sudoers/defaults.c:1127 plugins/sudoers/policy.c:205 +#: plugins/sudoers/policy.c:214 #, c-format msgid "path name for \"%s\" too long" -msgstr "numele căii pentru „%s” este prea lung" +msgstr "numele rutei pentru „%s” este prea lung" -#: plugins/sudoers/defaults.c:1134 +#: plugins/sudoers/defaults.c:1133 #, c-format msgid "values for \"%s\" must start with a '/', '~', or '*'" msgstr "valorile pentru „%s” trebuie să înceapă cu un „/”, „~”, sau „*”" -#: plugins/sudoers/defaults.c:1141 +#: plugins/sudoers/defaults.c:1140 #, c-format msgid "values for \"%s\" must start with a '/'" msgstr "valorile pentru „%s” trebuie să înceapă cu un caracter „/”" @@ -2772,12 +2790,12 @@ msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "nu aveți permisiunea de a stabili următoarele variabile de mediu: %s" -#: plugins/sudoers/filedigest.c:49 +#: plugins/sudoers/filedigest.c:50 #, c-format -msgid "unsupported digest type %d for %s" -msgstr "tip de sumă de control nesuportată %d pentru %s" +msgid "unsupported digest type %u for %s" +msgstr "tip de sumă de control neacceptat %u pentru %s" -#: plugins/sudoers/filedigest.c:78 +#: plugins/sudoers/filedigest.c:79 #, c-format msgid "%s: read error" msgstr "%s: eroare de citire" @@ -2811,80 +2829,80 @@ msgid "Local IP address and netmask pairs:\n" msgstr "Perechile adresă de IP locală și mască de rețea:\n" -#: plugins/sudoers/iolog.c:685 +#: plugins/sudoers/iolog.c:684 msgid "unable to update sequence file" msgstr "nu se poate actualiza fișierul de secvență" -#: plugins/sudoers/iolog.c:719 plugins/sudoers/iolog.c:907 -#: plugins/sudoers/iolog.c:1069 plugins/sudoers/iolog.c:1076 -#: plugins/sudoers/iolog.c:1197 plugins/sudoers/iolog.c:1204 -#: plugins/sudoers/iolog.c:1303 plugins/sudoers/iolog.c:1310 +#: plugins/sudoers/iolog.c:718 plugins/sudoers/iolog.c:906 +#: plugins/sudoers/iolog.c:1068 plugins/sudoers/iolog.c:1075 +#: plugins/sudoers/iolog.c:1196 plugins/sudoers/iolog.c:1203 +#: plugins/sudoers/iolog.c:1302 plugins/sudoers/iolog.c:1309 #, c-format msgid "unable to write to I/O log file: %s" msgstr "nu se poate scrie în fișierul jurnal de In/Ieș: %s" -#: plugins/sudoers/iolog.c:727 +#: plugins/sudoers/iolog.c:726 #, c-format msgid "unable to create %s/%s" msgstr "nu se poate crea %s/%s" -#: plugins/sudoers/iolog.c:955 +#: plugins/sudoers/iolog.c:954 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: eroare internă, fișierul jurnal de In/Ieș pentru evenimentul %d nu este deschis" -#: plugins/sudoers/iolog.c:1054 plugins/sudoers/iolog.c:1182 -#: plugins/sudoers/iolog.c:1287 plugins/sudoers/timestamp.c:879 -#: plugins/sudoers/timestamp.c:971 plugins/sudoers/visudo.c:556 -#: plugins/sudoers/visudo.c:562 +#: plugins/sudoers/iolog.c:1053 plugins/sudoers/iolog.c:1181 +#: plugins/sudoers/iolog.c:1286 plugins/sudoers/timestamp.c:904 +#: plugins/sudoers/timestamp.c:996 plugins/sudoers/visudo.c:559 +#: plugins/sudoers/visudo.c:565 msgid "unable to read the clock" msgstr "nu se poate citi ceasul" -#: plugins/sudoers/iolog.c:1279 plugins/sudoers/log_client.c:1192 -#: plugins/sudoers/log_client.c:1202 plugins/sudoers/log_client.c:1206 +#: plugins/sudoers/iolog.c:1278 plugins/sudoers/log_client.c:1200 +#: plugins/sudoers/log_client.c:1210 plugins/sudoers/log_client.c:1214 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: eroare internă, semnal nevalid %d" -#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:292 +#: plugins/sudoers/ldap.c:154 plugins/sudoers/ldap_conf.c:289 msgid "starttls not supported when using ldaps" msgstr "starttls nu este acceptat când se utilizează ldaps" -#: plugins/sudoers/ldap.c:248 +#: plugins/sudoers/ldap.c:225 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "nu se poate inițializa certificatul SSL și baza de date a cheii: %s" -#: plugins/sudoers/ldap.c:251 +#: plugins/sudoers/ldap.c:228 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "trebuie să stabiliți TLS_CERT în %s pentru a utiliza SSL" -#: plugins/sudoers/ldap.c:1714 +#: plugins/sudoers/ldap.c:1587 #, c-format msgid "unable to initialize LDAP: %s" msgstr "nu se poate inițializa LDAP: %s" -#: plugins/sudoers/ldap.c:1751 +#: plugins/sudoers/ldap.c:1624 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "start_tls specificat, dar bibliotecile LDAP nu acceptă ldap_start_tls_s() sau ldap_start_tls_s_np()" -#: plugins/sudoers/ldap.c:1888 plugins/sudoers/parse_ldif.c:748 +#: plugins/sudoers/ldap.c:1761 plugins/sudoers/parse_ldif.c:748 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "atribut sudoOrder nevalid: %s" -#: plugins/sudoers/ldap_conf.c:200 +#: plugins/sudoers/ldap_conf.c:197 #, c-format msgid "%s: port too large" msgstr "%s: portul este prea mare" -#: plugins/sudoers/ldap_conf.c:261 +#: plugins/sudoers/ldap_conf.c:258 #, c-format msgid "unsupported LDAP uri type: %s" msgstr "tip de URI LDAP neacceptat: %s" -#: plugins/sudoers/ldap_conf.c:288 +#: plugins/sudoers/ldap_conf.c:285 msgid "unable to mix ldap and ldaps URIs" msgstr "nu se pot fuziona adrese URI, ldap și ldaps" @@ -2910,7 +2928,7 @@ msgstr "nu se poate trimite mesajul de auditare" #: plugins/sudoers/log_client.c:125 plugins/sudoers/log_client.c:412 -#: plugins/sudoers/log_client.c:1439 plugins/sudoers/log_client.c:2055 +#: plugins/sudoers/log_client.c:1447 plugins/sudoers/log_client.c:2069 msgid "error in event loop" msgstr "eroare în bucla de eveniment" @@ -2944,28 +2962,28 @@ msgid "TLS connection to %s:%s failed: %s" msgstr "Conexiunea TLS la %s:%s a eșuat: %s" -#: plugins/sudoers/log_client.c:543 +#: plugins/sudoers/log_client.c:545 msgid "TLS initialization was unsuccessful" msgstr "Inițializarea TLS nu a reușit" -#: plugins/sudoers/log_client.c:553 +#: plugins/sudoers/log_client.c:555 msgid "TLS handshake was unsuccessful" msgstr "Negocierea TLS nu a reușit" -#: plugins/sudoers/log_client.c:1210 +#: plugins/sudoers/log_client.c:1218 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: eroare internă, stare de ieșire nevalidă %d" -#: plugins/sudoers/log_client.c:1739 plugins/sudoers/log_client.c:1763 +#: plugins/sudoers/log_client.c:1753 plugins/sudoers/log_client.c:1777 msgid "lost connection to log server" msgstr "a fost pierdută conexiunea la serverul de înregistrare a jurnalului" -#: plugins/sudoers/log_client.c:1840 +#: plugins/sudoers/log_client.c:1854 msgid "missing write buffer" msgstr "lipsește memoria tampon de scriere" -#: plugins/sudoers/log_client.c:1994 +#: plugins/sudoers/log_client.c:2008 msgid "unable to connect to log server" msgstr "nu se poate conecta la serverul de înregistrare a jurnalului" @@ -2998,22 +3016,22 @@ #: plugins/sudoers/logging.c:324 #, c-format -msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" -msgstr "Utilizatorului %s nu îi este permis să execute „%s%s%s” ca %s%s%s pe %s.\n" +msgid "Sorry, user %s is not allowed to execute '%s%s%s%s' as %s%s%s on %s.\n" +msgstr "Utilizatorului %s nu îi este permis să execute „%s%s%s%s” ca %s%s%s pe %s.\n" #: plugins/sudoers/logging.c:334 msgid "This incident has been reported to the administrator.\n" msgstr "Acest incident a fost raportat administratorului.\n" -#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:657 plugins/sudoers/sudoers.c:659 -#: plugins/sudoers/sudoers.c:661 plugins/sudoers/sudoers.c:816 -#: plugins/sudoers/sudoers.c:818 +#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:566 +#: plugins/sudoers/sudoers.c:567 plugins/sudoers/sudoers.c:569 +#: plugins/sudoers/sudoers.c:570 plugins/sudoers/sudoers.c:791 +#: plugins/sudoers/sudoers.c:793 #, c-format msgid "%s: command not found" msgstr "%s: comanda nu a fost găsită" -#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:651 +#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:562 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -3039,31 +3057,31 @@ msgid "a password is required" msgstr "o parolă este necesară" -#: plugins/sudoers/logging.c:803 plugins/sudoers/logging.c:815 +#: plugins/sudoers/logging.c:855 msgid "problem parsing sudoers" msgstr "problemă la analizarea sintaxei lui „sudoers”" -#: plugins/sudoers/logging.c:877 plugins/sudoers/logging.c:889 +#: plugins/sudoers/logging.c:896 plugins/sudoers/logging.c:904 #, c-format msgid "%s:%d:%d: %s" msgstr "%s:%d:%d: %s" -#: plugins/sudoers/logging.c:1066 +#: plugins/sudoers/logging.c:1079 #, c-format msgid "unable to write log file: %s" msgstr "nu se poate scrie fișierul de jurnal: %s" -#: plugins/sudoers/match_digest.c:112 +#: plugins/sudoers/match_digest.c:101 #, c-format msgid "digest for %s (%s) bad length %zu, expected %zu" msgstr "suma de control pentru %s (%s) are lungimea greșită %zu, se aștepta %zu" -#: plugins/sudoers/match_digest.c:131 +#: plugins/sudoers/match_digest.c:120 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "suma de control pentru %s (%s) nu este în formatul %s" -#: plugins/sudoers/parse.c:631 +#: plugins/sudoers/parse.c:643 #, c-format msgid "" "\n" @@ -3072,7 +3090,7 @@ "\n" "Regula LDAP: %s\n" -#: plugins/sudoers/parse.c:634 +#: plugins/sudoers/parse.c:646 msgid "" "\n" "Sudoers entry:\n" @@ -3080,38 +3098,38 @@ "\n" "Intrare „sudoers”:\n" -#: plugins/sudoers/parse.c:636 +#: plugins/sudoers/parse.c:648 msgid " RunAsUsers: " msgstr " RuleazăCaUtilizatorii: " -#: plugins/sudoers/parse.c:651 +#: plugins/sudoers/parse.c:663 msgid " RunAsGroups: " msgstr " RuleazăCaGrupurile: " -#: plugins/sudoers/parse.c:661 +#: plugins/sudoers/parse.c:673 msgid " Options: " msgstr " Opțiuni: " -#: plugins/sudoers/parse.c:725 +#: plugins/sudoers/parse.c:737 msgid " Commands:\n" msgstr " Comenzi:\n" -#: plugins/sudoers/parse.c:916 +#: plugins/sudoers/parse.c:928 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Se potrivesc intrările Defaults pentru %s pe %s:\n" -#: plugins/sudoers/parse.c:934 +#: plugins/sudoers/parse.c:946 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Valori implicite specifice „Run_as” și comenzii pentru %s:\n" -#: plugins/sudoers/parse.c:952 +#: plugins/sudoers/parse.c:964 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "Utilizatorul %s poate să ruleze următoarele comenzi pe %s:\n" -#: plugins/sudoers/parse.c:967 +#: plugins/sudoers/parse.c:979 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "Utilizatorului %s nu îi este permis să ruleze «sudo» pe %s.\n" @@ -3126,93 +3144,101 @@ msgid "invalid LDIF attribute: %s" msgstr "atribut LDIF nevalid: %s" -#: plugins/sudoers/policy.c:82 plugins/sudoers/policy.c:113 +#: plugins/sudoers/pivot.c:74 +msgid "unable to restore root directory" +msgstr "nu se poate restabili directorul rădăcină" + +#: plugins/sudoers/pivot.c:82 +msgid "unable to restore current working directory" +msgstr "nu se poate restabili directorul de lucru actual" + +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "%.*s nevalid stabilit de interfața «sudo»" -#: plugins/sudoers/policy.c:360 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:356 plugins/sudoers/testsudoers.c:277 msgid "unable to parse network address list" msgstr "nu se poate analiza lista de adrese de rețea" -#: plugins/sudoers/policy.c:528 +#: plugins/sudoers/policy.c:524 msgid "user name not set by sudo front-end" msgstr "numele de utilizator nu este stabilit de interfața sudo" -#: plugins/sudoers/policy.c:532 +#: plugins/sudoers/policy.c:528 msgid "user-ID not set by sudo front-end" msgstr "ID-ul utilizatorului nu este stabilit de interfața «sudo»" -#: plugins/sudoers/policy.c:536 +#: plugins/sudoers/policy.c:532 msgid "group-ID not set by sudo front-end" msgstr "ID-ul grupului nu este stabilit de interfața «sudo»" -#: plugins/sudoers/policy.c:540 +#: plugins/sudoers/policy.c:536 msgid "host name not set by sudo front-end" msgstr "numele gazdei nu este stabilit de interfața sudo" -#: plugins/sudoers/policy.c:737 +#: plugins/sudoers/policy.c:754 #, c-format msgid "invalid working directory: %s" msgstr "director de lucru nevalid: %s" -#: plugins/sudoers/policy.c:921 +#: plugins/sudoers/policy.c:938 #, c-format msgid "invalid chroot directory: %s" msgstr "director „chroot” nevalid: %s" -#: plugins/sudoers/policy.c:1108 plugins/sudoers/visudo.c:259 -#: plugins/sudoers/visudo.c:906 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/visudo.c:910 +#: plugins/sudoers/visudo.c:1209 #, c-format msgid "unable to execute %s" msgstr "nu se poate executa %s" -#: plugins/sudoers/policy.c:1178 plugins/sudoers/policy.c:1215 -#: plugins/sudoers/policy.c:1237 plugins/sudoers/policy.c:1263 +#: plugins/sudoers/policy.c:1195 plugins/sudoers/policy.c:1230 +#: plugins/sudoers/policy.c:1252 plugins/sudoers/policy.c:1274 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s: indicatori de mod nevalizi în interfața «sudo»: 0x%x" -#: plugins/sudoers/policy.c:1299 +#: plugins/sudoers/policy.c:1294 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Versiunea modulului de politică „sudoers”, este %s\n" -#: plugins/sudoers/policy.c:1301 +#: plugins/sudoers/policy.c:1296 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Versiunea de gramatică a fișierului „sudoers”, este %d\n" -#: plugins/sudoers/policy.c:1305 +#: plugins/sudoers/policy.c:1300 #, c-format msgid "" "\n" "Sudoers path: %s\n" msgstr "" "\n" -"Cale „sudoers”: %s\n" +"Ruta „sudoers”: %s\n" -#: plugins/sudoers/policy.c:1308 +#: plugins/sudoers/policy.c:1303 #, c-format msgid "nsswitch path: %s\n" -msgstr "cale nsswitch: %s\n" +msgstr "ruta nsswitch: %s\n" -#: plugins/sudoers/policy.c:1310 +#: plugins/sudoers/policy.c:1305 #, c-format msgid "ldap.conf path: %s\n" -msgstr "cale ldap.conf: %s\n" +msgstr "ruta ldap.conf: %s\n" -#: plugins/sudoers/policy.c:1311 +#: plugins/sudoers/policy.c:1306 #, c-format msgid "ldap.secret path: %s\n" -msgstr "cale ldap.secret: %s\n" +msgstr "ruta ldap.secret: %s\n" -#: plugins/sudoers/policy.c:1344 +#: plugins/sudoers/policy.c:1339 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "nu se poate înregistra cârligul de tip %d (versiunea %d.%d)" -#: plugins/sudoers/policy.c:1362 +#: plugins/sudoers/policy.c:1357 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "nu se poate anula înregistrarea cârligului de tip %d (versiunea %d.%d)" @@ -3281,48 +3307,48 @@ msgid "unable to parse gids for %s" msgstr "nu se pot analiza gid-urile pentru %s" -#: 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 +#: plugins/sudoers/set_perms.c:115 plugins/sudoers/set_perms.c:451 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1178 +#: plugins/sudoers/set_perms.c:1481 msgid "perm stack overflow" msgstr "supraplin al stivei de permisiuni" -#: 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 +#: plugins/sudoers/set_perms.c:126 plugins/sudoers/set_perms.c:382 +#: plugins/sudoers/set_perms.c:462 plugins/sudoers/set_perms.c:730 +#: plugins/sudoers/set_perms.c:874 plugins/sudoers/set_perms.c:1102 +#: plugins/sudoers/set_perms.c:1189 plugins/sudoers/set_perms.c:1414 +#: plugins/sudoers/set_perms.c:1492 plugins/sudoers/set_perms.c:1583 msgid "perm stack underflow" msgstr "subnivel al stivei de permisiuni" -#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 -#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 +#: plugins/sudoers/set_perms.c:186 plugins/sudoers/set_perms.c:509 +#: plugins/sudoers/set_perms.c:1243 plugins/sudoers/set_perms.c:1526 msgid "unable to change to root gid" msgstr "nu se poate schimba la gid-ul root" -#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 -#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 +#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:606 +#: plugins/sudoers/set_perms.c:1006 plugins/sudoers/set_perms.c:1320 msgid "unable to change to runas gid" msgstr "nu se poate schimba la gid-ul „run as”" -#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 -#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 +#: plugins/sudoers/set_perms.c:282 plugins/sudoers/set_perms.c:611 +#: plugins/sudoers/set_perms.c:1011 plugins/sudoers/set_perms.c:1325 msgid "unable to set runas group vector" msgstr "nu se poate stabili vectorul de grup „run as”" -#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 -#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:293 plugins/sudoers/set_perms.c:622 +#: plugins/sudoers/set_perms.c:1020 plugins/sudoers/set_perms.c:1334 msgid "unable to change to runas uid" msgstr "nu se poate schimba uid-ul „run as”" -#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 -#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 +#: plugins/sudoers/set_perms.c:315 plugins/sudoers/set_perms.c:644 +#: plugins/sudoers/set_perms.c:1040 plugins/sudoers/set_perms.c:1354 msgid "unable to change to sudoers gid" msgstr "nu se poate schimba gid-ul „sudoers”" -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 msgid "too many processes" msgstr "prea multe procese" @@ -3333,12 +3359,12 @@ #: plugins/sudoers/solaris_audit.c:69 #, c-format msgid "truncated audit path user_cmnd: %s" -msgstr "cale de auditare trunchiată user_cmnd: %s" +msgstr "ruta de auditare trunchiată user_cmnd: %s" #: plugins/sudoers/solaris_audit.c:76 #, c-format msgid "truncated audit path argv[0]: %s" -msgstr "cale de auditare trunchiată argv[0]: %s" +msgstr "ruta de auditare trunchiată argv[0]: %s" #: plugins/sudoers/sssd.c:579 msgid "unable to initialize SSS source. Is SSSD installed on your machine?" @@ -3351,150 +3377,150 @@ msgid "unable to find symbol \"%s\" in %s" msgstr "nu se poate găsi simbolul „%s” în %s" -#: plugins/sudoers/sudoers.c:263 +#: plugins/sudoers/sudoers.c:261 #, c-format msgid "unable to get defaults from %s" msgstr "nu se pot obține valorile implicite de la %s" -#: plugins/sudoers/sudoers.c:270 +#: plugins/sudoers/sudoers.c:268 msgid "no valid sudoers sources found, quitting" msgstr "nicio sursă „sudoers” validă, se iese" -#: plugins/sudoers/sudoers.c:346 +#: plugins/sudoers/sudoers.c:344 #, c-format msgid "user not allowed to change root directory to %s" msgstr "utilizatorul nu are permisiunea de a schimba directorul rădăcină în %s" -#: plugins/sudoers/sudoers.c:348 +#: plugins/sudoers/sudoers.c:346 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "nu aveți permisiunea de a utiliza opțiunea „-R” cu %s" -#: plugins/sudoers/sudoers.c:373 +#: plugins/sudoers/sudoers.c:371 #, c-format msgid "user not allowed to change directory to %s" msgstr "utilizatorului nu îi este permis să schimbe directorul la %s" -#: plugins/sudoers/sudoers.c:374 +#: plugins/sudoers/sudoers.c:372 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "nu aveți permisiunea de a utiliza opțiunea „-D” cu %s" -#: plugins/sudoers/sudoers.c:401 -msgid "no command specified" -msgstr "nicio comandă specificată" - -#: plugins/sudoers/sudoers.c:426 +#: plugins/sudoers/sudoers.c:412 msgid "sudoers specifies that root is not allowed to sudo" msgstr "„sudoers” specifică că root nu are permisiunea să execute «sudo»" -#: plugins/sudoers/sudoers.c:483 +#: plugins/sudoers/sudoers.c:421 msgid "user not allowed to override closefrom limit" msgstr "utilizatorului nu îi este permis să suprascrie limita de closefrom" -#: plugins/sudoers/sudoers.c:484 +#: plugins/sudoers/sudoers.c:422 msgid "you are not permitted to use the -C option" msgstr "nu aveți permisiunea de a utiliza opțiunea „-C”" -#: plugins/sudoers/sudoers.c:544 -#, c-format -msgid "timestamp owner (%s): No such user" -msgstr "proprietar marcaj de timp (%s): Nu există un astfel de utilizator" - -#: plugins/sudoers/sudoers.c:559 +#: plugins/sudoers/sudoers.c:468 msgid "no tty" msgstr "fără tty" -#: plugins/sudoers/sudoers.c:560 +#: plugins/sudoers/sudoers.c:469 msgid "sorry, you must have a tty to run sudo" msgstr "trebuie să aveți un tty pentru a rula «sudo»" -#: plugins/sudoers/sudoers.c:567 +#: plugins/sudoers/sudoers.c:477 #, c-format msgid "invalid shell for user %s: %s" msgstr "shell nevalid pentru utilizatorul %s: %s" -#: plugins/sudoers/sudoers.c:650 +#: plugins/sudoers/sudoers.c:561 msgid "command in current directory" msgstr "comandă în directorul curent" -#: plugins/sudoers/sudoers.c:665 +#: plugins/sudoers/sudoers.c:574 msgid "\"cd\" is a shell built-in command, it cannot be run directly." msgstr "«cd» este o comandă încorporată în shell, nu poate fi rulată direct." -#: plugins/sudoers/sudoers.c:667 +#: plugins/sudoers/sudoers.c:576 msgid "the -s option may be used to run a privileged shell." msgstr "opțiunea „-s” poate fi utilizată pentru a rula un shell privilegiat." -#: plugins/sudoers/sudoers.c:669 +#: plugins/sudoers/sudoers.c:578 msgid "the -D option may be used to run a command in a specific directory." msgstr "opțiunea „-D” poate fi folosită pentru a rula o comandă într-un anumit director." -#: plugins/sudoers/sudoers.c:678 +#: plugins/sudoers/sudoers.c:587 msgid "user not allowed to set a command timeout" msgstr "utilizatorului nu îi este permis să stabilească o limită de timp a comenzii" -#: plugins/sudoers/sudoers.c:680 +#: plugins/sudoers/sudoers.c:589 msgid "sorry, you are not allowed set a command timeout" msgstr "nu aveți permisiunea de a stabili o limită de timp a comenzii" -#: plugins/sudoers/sudoers.c:688 +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to preserve the environment" msgstr "utilizatorului nu îi este permis să păstreze mediul" -#: plugins/sudoers/sudoers.c:690 +#: plugins/sudoers/sudoers.c:599 msgid "sorry, you are not allowed to preserve the environment" msgstr "nu aveți permisiunea să păstrați mediul" -#: plugins/sudoers/sudoers.c:799 +#: plugins/sudoers/sudoers.c:635 +msgid "no command specified" +msgstr "nicio comandă specificată" + +#: plugins/sudoers/sudoers.c:774 msgid "error setting user-specified environment variables" msgstr "eroare la stabilirea variabilelor de mediu specificate de utilizator" -#: plugins/sudoers/sudoers.c:1112 +#: plugins/sudoers/sudoers.c:1239 msgid "sudoedit doesn't need to be run via sudo" msgstr "«sudoedit» nu are nevoie să fie rulat via «sudo»" -#: plugins/sudoers/sudoers.c:1157 plugins/sudoers/sudoreplay.c:1612 +#: plugins/sudoers/sudoers.c:1314 plugins/sudoers/sudoreplay.c:1612 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "nu se poate citi %s" -#: plugins/sudoers/sudoers.c:1186 plugins/sudoers/visudo.c:1066 +#: plugins/sudoers/sudoers.c:1337 plugins/sudoers/visudo.c:1114 #, c-format msgid "%s is not a regular file" msgstr "%s nu este un fișier obișnuit" -#: plugins/sudoers/sudoers.c:1190 plugins/sudoers/timestamp.c:263 toke.l:1255 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/timestamp.c:288 toke.l:1325 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s este deținut de uid-ul %u, ar trebui să fie %u" -#: plugins/sudoers/sudoers.c:1194 plugins/sudoers/timestamp.c:270 toke.l:1260 +#: plugins/sudoers/sudoers.c:1345 plugins/sudoers/timestamp.c:295 toke.l:1330 #, c-format msgid "%s is world writable" msgstr "%s poate fi scris de oricine" -#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/timestamp.c:275 toke.l:1263 +#: plugins/sudoers/sudoers.c:1349 plugins/sudoers/timestamp.c:300 toke.l:1333 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s este deținut de gid-ul %u, ar trebui să fie %u" -#: plugins/sudoers/sudoers.c:1233 +#: plugins/sudoers/sudoers.c:1377 #, c-format msgid "only root can use \"-c %s\"" msgstr "doar root poate utiliza „-c %s”" -#: plugins/sudoers/sudoers.c:1252 +#: plugins/sudoers/sudoers.c:1396 #, c-format msgid "unknown login class %s" msgstr "clasă de autentificare necunoscută %s" -#: plugins/sudoers/sudoers.c:1339 plugins/sudoers/sudoers.c:1354 +#: plugins/sudoers/sudoers.c:1483 plugins/sudoers/sudoers.c:1498 #, c-format msgid "unable to resolve host %s" msgstr "nu se poate rezolva gazda %s" +#: plugins/sudoers/sudoers.c:1636 +#, c-format +msgid "%s:%d:%d timestampowner: unknown user %s" +msgstr "%s:%d:%d timestampowner: utilizator necunoscut %s" + #: plugins/sudoers/sudoreplay.c:252 #, c-format msgid "invalid filter option: %s" @@ -3635,11 +3661,11 @@ " -s, --speed=num accelerează sau încetinește ieșirea\n" " -V, --version afișează informațiile de versiune și iese" -#: plugins/sudoers/testsudoers.c:344 +#: plugins/sudoers/testsudoers.c:355 msgid "\thost unmatched" msgstr "\tgazda nu are nici o potrivire" -#: plugins/sudoers/testsudoers.c:347 +#: plugins/sudoers/testsudoers.c:358 msgid "" "\n" "Command allowed" @@ -3647,7 +3673,7 @@ "\n" "Comandă permisă" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command denied" @@ -3655,7 +3681,7 @@ "\n" "Comandă negată" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command unmatched" @@ -3663,122 +3689,114 @@ "\n" "Comanda nu se potrivește" -#: plugins/sudoers/timestamp.c:354 plugins/sudoers/timestamp.c:693 +#: plugins/sudoers/timestamp.c:379 plugins/sudoers/timestamp.c:718 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "nu se poate trunchia fișierul marcajelor de timp în %lld octeți" -#: plugins/sudoers/timestamp.c:890 +#: plugins/sudoers/timestamp.c:915 msgid "ignoring time stamp from the future" msgstr "se vor ignora marcajele de timp pe viitor" -#: plugins/sudoers/timestamp.c:913 +#: plugins/sudoers/timestamp.c:938 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "datarea este prea departe în viitor: %20.20s" -#: plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1067 #, c-format msgid "unable to lock time stamp file %s" msgstr "nu se poate bloca fișierul marcajelor de timp %s" #: plugins/sudoers/toke_util.c:156 msgid "sudoedit should not be specified with a path" -msgstr "«sudoedit» nu ar trebui să fie specificat cu o cale" +msgstr "«sudoedit» nu ar trebui să fie specificat cu o rută" -#: plugins/sudoers/visudo.c:254 -msgid "the -x option will be removed in a future release" -msgstr "opțiunea „-x” va fi eliminată într-o lansare viitoare" - -#: plugins/sudoers/visudo.c:256 -msgid "please consider using the cvtsudoers utility instead" -msgstr "luați în considerare utilizarea utilitarului «cvtsudoers» în schimb" - -#: plugins/sudoers/visudo.c:311 plugins/sudoers/visudo.c:702 +#: plugins/sudoers/visudo.c:314 plugins/sudoers/visudo.c:705 #, c-format msgid "press return to edit %s: " msgstr "apăsați „enter” pentru a edita %s: " -#: plugins/sudoers/visudo.c:326 +#: plugins/sudoers/visudo.c:329 #, c-format msgid "contents of edit session left in %s" msgstr "conținutul sesiunii de editare rămase în %s" -#: plugins/sudoers/visudo.c:403 +#: plugins/sudoers/visudo.c:406 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "editorul specificat (%s) nu există" -#: plugins/sudoers/visudo.c:408 +#: plugins/sudoers/visudo.c:411 #, c-format msgid "no editor found (editor path = %s)" -msgstr "nu s-a găsit niciun editor (cale editor = %s)" +msgstr "nu s-a găsit niciun editor (rută editor = %s)" -#: plugins/sudoers/visudo.c:495 plugins/sudoers/visudo.c:774 +#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:777 #, c-format msgid "unable to stat %s" msgstr "nu se poate stabili starea lui %s" -#: plugins/sudoers/visudo.c:515 plugins/sudoers/visudo.c:523 +#: plugins/sudoers/visudo.c:518 plugins/sudoers/visudo.c:526 msgid "write error" msgstr "eroare de scriere" -#: plugins/sudoers/visudo.c:569 +#: plugins/sudoers/visudo.c:572 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "nu se poate stabili starea fișierului temporar (%s), %s neschimbat" -#: plugins/sudoers/visudo.c:576 +#: plugins/sudoers/visudo.c:579 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "fișier temporar de lungime zero (%s), %s neschimbat" -#: plugins/sudoers/visudo.c:582 +#: plugins/sudoers/visudo.c:585 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "editorul (%s) a eșuat, %s neschimbat" -#: plugins/sudoers/visudo.c:604 +#: plugins/sudoers/visudo.c:607 #, c-format msgid "%s unchanged" msgstr "%s neschimbat" -#: plugins/sudoers/visudo.c:649 +#: plugins/sudoers/visudo.c:652 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "nu se poate redeschide fișierul temporar (%s), %s neschimbat." -#: plugins/sudoers/visudo.c:662 +#: plugins/sudoers/visudo.c:665 #, c-format msgid "unable to parse temporary file (%s), unknown error" msgstr "nu se poate analiza fișierul temporar (%s), eroare necunoscută" -#: plugins/sudoers/visudo.c:748 plugins/sudoers/visudo.c:778 -#: plugins/sudoers/visudo.c:785 +#: plugins/sudoers/visudo.c:751 plugins/sudoers/visudo.c:781 +#: plugins/sudoers/visudo.c:788 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "nu se poate stabili (uid, gid) de %s la (%u, %u)" -#: plugins/sudoers/visudo.c:813 +#: plugins/sudoers/visudo.c:816 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "%s și %s nu sunt pe același sistem de fișiere, se utilizează «mv» pentru a redenumi" -#: plugins/sudoers/visudo.c:824 +#: plugins/sudoers/visudo.c:827 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "comanda a eșuat: „%s %s %s”, %s neschimbat" -#: plugins/sudoers/visudo.c:831 +#: plugins/sudoers/visudo.c:834 #, c-format msgid "error renaming %s, %s unchanged" msgstr "eroare la redenumirea %s, %s neschimbat" -#: plugins/sudoers/visudo.c:851 +#: plugins/sudoers/visudo.c:855 msgid "What now? " msgstr "Acum ce? " -#: plugins/sudoers/visudo.c:865 +#: plugins/sudoers/visudo.c:869 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -3790,41 +3808,49 @@ " (x) - ieși fără a salva modificările în fișierul „sudoers”\n" " (Q) - ieși și salvează modificările în fișierul „sudoers” (PERICOL!)\n" -#: plugins/sudoers/visudo.c:911 +#: plugins/sudoers/visudo.c:915 #, c-format msgid "unable to run %s" msgstr "nu se poate rula %s" -#: plugins/sudoers/visudo.c:942 +#: plugins/sudoers/visudo.c:946 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s: proprietarul greșit (uid, gid) ar trebui să fie (%u, %u)n\n" -#: plugins/sudoers/visudo.c:953 +#: plugins/sudoers/visudo.c:957 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s: permisiuni proaste, ar trebui să fie modul 0%o\n" -#: plugins/sudoers/visudo.c:999 plugins/sudoers/visudo.c:1006 +#: plugins/sudoers/visudo.c:1009 plugins/sudoers/visudo.c:1016 #, c-format msgid "%s: parsed OK\n" msgstr "%s: analizat, OK\n" -#: plugins/sudoers/visudo.c:1025 +#: plugins/sudoers/visudo.c:1035 #, c-format msgid "%s busy, try again later" msgstr "%s ocupat, încercați din nou mai târziu" -#: plugins/sudoers/visudo.c:1029 +#: plugins/sudoers/visudo.c:1039 msgid "Edit anyway? [y/N]" msgstr "Editați oricum? [y/N]" -#: plugins/sudoers/visudo.c:1130 +#: plugins/sudoers/visudo.c:1197 +msgid "the -x option will be removed in a future release" +msgstr "opțiunea „-x” va fi eliminată într-o lansare viitoare" + +#: plugins/sudoers/visudo.c:1199 +msgid "please consider using the cvtsudoers utility instead" +msgstr "luați în considerare utilizarea utilitarului «cvtsudoers» în schimb" + +#: plugins/sudoers/visudo.c:1219 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Avertisment: %s:%d:%d: neutilizat %s „%s”" -#: plugins/sudoers/visudo.c:1242 +#: plugins/sudoers/visudo.c:1332 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3833,7 +3859,7 @@ "%s - editează în siguranță fișierul „sudoers”\n" "\n" -#: plugins/sudoers/visudo.c:1244 +#: plugins/sudoers/visudo.c:1334 msgid "" "\n" "Options:\n" @@ -3855,38 +3881,49 @@ " -s, --strict verificare strictă de sintaxă\n" " -V, --version afișează informațiile de versiune și iese\n" -#: toke.l:189 +#: toke.l:184 msgid "empty string" msgstr "șir gol" -#: toke.l:201 toke.l:571 +#: toke.l:196 toke.l:566 msgid "empty group" msgstr "grup gol" -#: toke.l:211 toke.l:569 +#: toke.l:206 toke.l:564 msgid "empty netgroup" msgstr "netgroup gol" -#: toke.l:289 +#: toke.l:284 msgid "unterminated regular expression" msgstr "expresie regulată nedeterminată" -#: toke.l:363 toke.l:375 toke.l:387 toke.l:403 toke.l:422 toke.l:462 +#: toke.l:358 toke.l:370 toke.l:382 toke.l:398 toke.l:417 toke.l:457 msgid "invalid line continuation" msgstr "continuarea liniei nevalidă" -#: toke.l:608 toke.l:620 +#: toke.l:603 toke.l:615 msgid "invalid IPv6 address" msgstr "adresă IPv6 invalidă" -#: toke.l:876 +#: toke.l:863 msgid "unexpected line break in string" msgstr "întrerupere de linie neașteptată în șir" -#: toke.l:1226 +#: toke.l:983 +msgid "ignoring editor backup file" +msgstr "se ignoră fișierul de copie de rezervă al editorului" + +#: toke.l:986 +msgid "ignoring file name containing '.'" +msgstr "se ignoră numele de fișier care conține „.”" + +#: toke.l:1289 msgid "too many levels of includes" msgstr "prea multe niveluri de includeri" +#~ msgid "timestamp owner (%s): No such user" +#~ msgstr "proprietar marcaj de timp (%s): Nu există un astfel de utilizator" + #~ msgid "%s must be owned by uid %d" #~ msgstr "%s trebuie să fie deținut de uid-ul %d" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/plugins/sudoers/po/ru.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/plugins/sudoers/po/ru.mo differ diff -Nru sudo-1.9.13p3/plugins/sudoers/po/ru.po sudo-1.9.14p2/plugins/sudoers/po/ru.po --- sudo-1.9.13p3/plugins/sudoers/po/ru.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/po/ru.po 2023-07-15 15:37:22.000000000 +0000 @@ -4,23 +4,24 @@ # # Artem Vorotnikov , 2015. # Pavel Maryanov , 2015, 2022. +# Kirill Isakov , 2023. msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.12b2\n" +"Project-Id-Version: sudoers 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2022-10-10 09:13-0600\n" -"PO-Revision-Date: 2022-11-04 15:15+0200\n" -"Last-Translator: Pavel Maryanov \n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-09 00:28+0600\n" +"Last-Translator: Kirill Isakov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "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.3.1\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" -#: confstr.sh:1 gram.y:1220 plugins/sudoers/logging.c:862 +#: confstr.sh:1 gram.y:1240 plugins/sudoers/logging.c:885 msgid "syntax error" msgstr "ошибка синтаксиса" @@ -44,19 +45,19 @@ msgid "Sorry, try again." msgstr "Попробуйте ещё раз." -#: gram.y:237 gram.y:304 gram.y:313 gram.y:322 gram.y:332 gram.y:342 -#: gram.y:366 gram.y:393 gram.y:402 gram.y:410 gram.y:419 gram.y:428 -#: gram.y:502 gram.y:512 gram.y:524 gram.y:572 gram.y:581 gram.y:590 -#: gram.y:599 gram.y:731 gram.y:739 gram.y:750 gram.y:762 gram.y:781 -#: gram.y:944 gram.y:949 gram.y:957 gram.y:971 gram.y:977 gram.y:1099 -#: gram.y:1108 gram.y:1116 gram.y:1125 gram.y:1134 gram.y:1163 gram.y:1172 -#: gram.y:1180 gram.y:1280 gram.y:1410 gram.y:1777 gram.y:1827 -#: lib/eventlog/eventlog.c:309 lib/eventlog/eventlog.c:382 -#: lib/eventlog/eventlog.c:827 lib/eventlog/eventlog.c:904 -#: lib/eventlog/eventlog.c:1204 lib/iolog/iolog_filter.c:142 +#: gram.y:236 gram.y:303 gram.y:312 gram.y:321 gram.y:331 gram.y:341 +#: gram.y:365 gram.y:392 gram.y:401 gram.y:409 gram.y:418 gram.y:427 +#: gram.y:501 gram.y:511 gram.y:523 gram.y:571 gram.y:580 gram.y:589 +#: gram.y:598 gram.y:730 gram.y:738 gram.y:749 gram.y:761 gram.y:780 +#: gram.y:943 gram.y:948 gram.y:956 gram.y:970 gram.y:976 gram.y:988 +#: gram.y:994 gram.y:1119 gram.y:1128 gram.y:1136 gram.y:1145 gram.y:1154 +#: gram.y:1183 gram.y:1192 gram.y:1200 gram.y:1300 gram.y:1430 gram.y:1808 +#: gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:313 lib/eventlog/eventlog.c:755 +#: lib/eventlog/eventlog.c:832 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:472 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 #: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:233 -#: lib/iolog/iolog_json.c:150 lib/iolog/iolog_json.c:382 -#: lib/iolog/iolog_json.c:412 lib/iolog/iolog_json.c:555 #: 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 @@ -69,55 +70,56 @@ #: logsrvd/iolog_writer.c:317 logsrvd/iolog_writer.c:329 #: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 #: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 -#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 -#: logsrvd/logsrvd.c:310 logsrvd/logsrvd.c:1050 logsrvd/logsrvd.c:1113 -#: logsrvd/logsrvd.c:1582 logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 -#: logsrvd/logsrvd.c:1988 logsrvd/logsrvd_conf.c:357 -#: logsrvd/logsrvd_conf.c:370 logsrvd/logsrvd_conf.c:511 -#: logsrvd/logsrvd_conf.c:534 logsrvd/logsrvd_conf.c:538 -#: logsrvd/logsrvd_conf.c:556 logsrvd/logsrvd_conf.c:626 -#: logsrvd/logsrvd_conf.c:650 logsrvd/logsrvd_conf.c:678 -#: logsrvd/logsrvd_conf.c:692 logsrvd/logsrvd_conf.c:706 -#: logsrvd/logsrvd_conf.c:720 logsrvd/logsrvd_conf.c:734 -#: logsrvd/logsrvd_conf.c:748 logsrvd/logsrvd_conf.c:829 -#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1053 -#: logsrvd/logsrvd_conf.c:1448 logsrvd/logsrvd_conf.c:1595 -#: logsrvd/logsrvd_conf.c:1621 logsrvd/logsrvd_conf.c:1633 -#: logsrvd/logsrvd_conf.c:1640 logsrvd/logsrvd_conf.c:1646 -#: logsrvd/logsrvd_conf.c:1743 logsrvd/logsrvd_journal.c:75 -#: logsrvd/logsrvd_journal.c:213 logsrvd/logsrvd_journal.c:214 -#: logsrvd/logsrvd_journal.c:270 logsrvd/logsrvd_journal.c:430 -#: logsrvd/logsrvd_journal.c:432 logsrvd/logsrvd_local.c:215 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:1058 logsrvd/logsrvd.c:1121 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 +#: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 +#: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 +#: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 +#: logsrvd/logsrvd_conf.c:626 logsrvd/logsrvd_conf.c:650 +#: logsrvd/logsrvd_conf.c:678 logsrvd/logsrvd_conf.c:692 +#: logsrvd/logsrvd_conf.c:706 logsrvd/logsrvd_conf.c:720 +#: logsrvd/logsrvd_conf.c:734 logsrvd/logsrvd_conf.c:748 +#: logsrvd/logsrvd_conf.c:829 logsrvd/logsrvd_conf.c:1036 +#: logsrvd/logsrvd_conf.c:1053 logsrvd/logsrvd_conf.c:1448 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1621 +#: logsrvd/logsrvd_conf.c:1633 logsrvd/logsrvd_conf.c:1640 +#: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1743 +#: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:216 +#: logsrvd/logsrvd_journal.c:217 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:278 logsrvd/logsrvd_journal.c:438 +#: logsrvd/logsrvd_journal.c:440 logsrvd/logsrvd_local.c:215 #: logsrvd/logsrvd_local.c:216 logsrvd/logsrvd_local.c:278 #: logsrvd/logsrvd_local.c:279 logsrvd/logsrvd_local.c:417 #: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:467 #: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:473 #: logsrvd/logsrvd_queue.c:159 logsrvd/logsrvd_queue.c:189 -#: logsrvd/logsrvd_queue.c:266 logsrvd/logsrvd_relay.c:444 -#: logsrvd/logsrvd_relay.c:743 logsrvd/logsrvd_relay.c:850 -#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:291 -#: logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 logsrvd/sendlog.c:1801 -#: plugins/sudoers/audit.c:116 plugins/sudoers/auth/bsdauth.c:150 -#: plugins/sudoers/auth/kerb5.c:121 plugins/sudoers/auth/kerb5.c:148 -#: plugins/sudoers/auth/pam.c:687 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:168 -#: plugins/sudoers/cvtsudoers.c:131 plugins/sudoers/cvtsudoers.c:175 -#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:203 -#: plugins/sudoers/cvtsudoers.c:333 plugins/sudoers/cvtsudoers.c:372 -#: plugins/sudoers/cvtsudoers.c:392 plugins/sudoers/cvtsudoers.c:537 -#: plugins/sudoers/cvtsudoers.c:670 plugins/sudoers/cvtsudoers.c:688 -#: plugins/sudoers/cvtsudoers.c:862 plugins/sudoers/cvtsudoers.c:870 -#: plugins/sudoers/cvtsudoers.c:1365 plugins/sudoers/cvtsudoers.c:1369 -#: plugins/sudoers/cvtsudoers.c:1471 plugins/sudoers/cvtsudoers_csv.c:183 -#: plugins/sudoers/cvtsudoers_csv.c:246 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:376 plugins/sudoers/cvtsudoers_ldif.c:430 -#: plugins/sudoers/cvtsudoers_ldif.c:438 plugins/sudoers/cvtsudoers_ldif.c:449 -#: plugins/sudoers/cvtsudoers_ldif.c:456 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:481 plugins/sudoers/cvtsudoers_ldif.c:489 -#: plugins/sudoers/cvtsudoers_ldif.c:636 plugins/sudoers/cvtsudoers_merge.c:47 -#: plugins/sudoers/cvtsudoers_merge.c:52 +#: logsrvd/logsrvd_queue.c:266 logsrvd/logsrvd_relay.c:446 +#: logsrvd/logsrvd_relay.c:745 logsrvd/logsrvd_relay.c:852 +#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:292 +#: logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 logsrvd/sendlog.c:624 +#: logsrvd/sendlog.c:1810 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/bsdauth.c:152 plugins/sudoers/auth/kerb5.c:121 +#: plugins/sudoers/auth/kerb5.c:148 plugins/sudoers/auth/pam.c:687 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 +#: plugins/sudoers/canon_path.c:129 plugins/sudoers/canon_path.c:160 +#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:132 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:193 +#: plugins/sudoers/cvtsudoers.c:204 plugins/sudoers/cvtsudoers.c:334 +#: plugins/sudoers/cvtsudoers.c:373 plugins/sudoers/cvtsudoers.c:393 +#: plugins/sudoers/cvtsudoers.c:538 plugins/sudoers/cvtsudoers.c:691 +#: plugins/sudoers/cvtsudoers.c:709 plugins/sudoers/cvtsudoers.c:883 +#: plugins/sudoers/cvtsudoers.c:891 plugins/sudoers/cvtsudoers.c:1386 +#: plugins/sudoers/cvtsudoers.c:1390 plugins/sudoers/cvtsudoers.c:1492 +#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:247 +#: 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:376 +#: plugins/sudoers/cvtsudoers_ldif.c:430 plugins/sudoers/cvtsudoers_ldif.c:438 +#: plugins/sudoers/cvtsudoers_ldif.c:449 plugins/sudoers/cvtsudoers_ldif.c:456 +#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:481 +#: plugins/sudoers/cvtsudoers_ldif.c:489 plugins/sudoers/cvtsudoers_ldif.c:636 +#: plugins/sudoers/cvtsudoers_merge.c:47 plugins/sudoers/cvtsudoers_merge.c:52 #: plugins/sudoers/cvtsudoers_merge.c:353 #: plugins/sudoers/cvtsudoers_merge.c:399 #: plugins/sudoers/cvtsudoers_merge.c:446 @@ -127,39 +129,39 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1158 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:188 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 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:228 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 +#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:212 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:464 -#: plugins/sudoers/ldap.c:755 plugins/sudoers/ldap.c:919 -#: plugins/sudoers/ldap.c:1335 plugins/sudoers/ldap.c:1761 -#: plugins/sudoers/ldap.c:1798 plugins/sudoers/ldap.c:1879 -#: plugins/sudoers/ldap.c:2014 plugins/sudoers/ldap.c:2115 -#: plugins/sudoers/ldap.c:2131 plugins/sudoers/ldap_conf.c:218 -#: plugins/sudoers/ldap_conf.c:250 plugins/sudoers/ldap_conf.c:302 -#: plugins/sudoers/ldap_conf.c:338 plugins/sudoers/ldap_conf.c:444 -#: plugins/sudoers/ldap_conf.c:459 plugins/sudoers/ldap_conf.c:564 -#: plugins/sudoers/ldap_conf.c:597 plugins/sudoers/ldap_conf.c:689 -#: plugins/sudoers/ldap_conf.c:771 plugins/sudoers/ldap_util.c:294 -#: plugins/sudoers/ldap_util.c:301 plugins/sudoers/ldap_util.c:614 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:117 -#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:715 -#: plugins/sudoers/log_client.c:736 plugins/sudoers/log_client.c:1416 -#: plugins/sudoers/log_client.c:1537 plugins/sudoers/log_client.c:1637 -#: plugins/sudoers/log_client.c:1973 plugins/sudoers/log_client.c:2032 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:691 plugins/sudoers/ldap_conf.c:773 +#: plugins/sudoers/ldap_util.c:294 plugins/sudoers/ldap_util.c:301 +#: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 +#: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:402 +#: plugins/sudoers/log_client.c:717 plugins/sudoers/log_client.c:739 +#: plugins/sudoers/log_client.c:744 plugins/sudoers/log_client.c:1423 +#: plugins/sudoers/log_client.c:1544 plugins/sudoers/log_client.c:1667 +#: plugins/sudoers/log_client.c:1986 plugins/sudoers/log_client.c:2045 #: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:189 -#: plugins/sudoers/logging.c:453 plugins/sudoers/logging.c:668 -#: plugins/sudoers/logging.c:805 plugins/sudoers/match_command.c:335 -#: plugins/sudoers/match_command.c:603 plugins/sudoers/match_command.c:654 -#: plugins/sudoers/match_command.c:728 plugins/sudoers/match_command.c:776 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:227 -#: plugins/sudoers/parse.c:244 plugins/sudoers/parse.c:263 -#: plugins/sudoers/parse.c:282 plugins/sudoers/parse.c:299 -#: plugins/sudoers/parse.c:322 plugins/sudoers/parse.c:333 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:846 plugins/sudoers/match_command.c:295 +#: plugins/sudoers/match_command.c:563 plugins/sudoers/match_command.c:629 +#: plugins/sudoers/match_command.c:724 plugins/sudoers/match_command.c:770 +#: plugins/sudoers/match_digest.c:82 plugins/sudoers/parse.c:279 +#: plugins/sudoers/parse.c:296 plugins/sudoers/parse.c:315 +#: plugins/sudoers/parse.c:334 plugins/sudoers/parse.c:351 +#: plugins/sudoers/parse.c:374 plugins/sudoers/parse.c:385 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:261 #: plugins/sudoers/parse_ldif.c:266 plugins/sudoers/parse_ldif.c:342 @@ -170,123 +172,129 @@ #: plugins/sudoers/parse_ldif.c:628 plugins/sudoers/parse_ldif.c:653 #: plugins/sudoers/parse_ldif.c:711 plugins/sudoers/parse_ldif.c:728 #: plugins/sudoers/parse_ldif.c:756 plugins/sudoers/parse_ldif.c:763 -#: plugins/sudoers/policy.c:624 plugins/sudoers/policy.c:1026 +#: plugins/sudoers/policy.c:622 plugins/sudoers/policy.c:1050 #: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:199 #: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 #: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:587 #: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:857 -#: plugins/sudoers/pwutil.c:913 plugins/sudoers/pwutil.c:957 -#: plugins/sudoers/pwutil.c:1014 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/pwutil.c:945 plugins/sudoers/pwutil.c:993 +#: plugins/sudoers/pwutil.c:1052 plugins/sudoers/sssd.c:145 #: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 #: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 -#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:761 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:112 -#: plugins/sudoers/stubs.c:120 plugins/sudoers/sudoers.c:354 -#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:448 -#: plugins/sudoers/sudoers.c:457 plugins/sudoers/sudoers.c:498 -#: plugins/sudoers/sudoers.c:827 plugins/sudoers/sudoers.c:877 -#: plugins/sudoers/sudoers.c:1015 plugins/sudoers/sudoers.c:1075 -#: plugins/sudoers/sudoers.c:1330 plugins/sudoers/sudoreplay.c:562 -#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1281 -#: plugins/sudoers/sudoreplay.c:1503 plugins/sudoers/sudoreplay.c:1507 -#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 -#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:588 -#: plugins/sudoers/timestamp.c:451 plugins/sudoers/timestamp.c:495 -#: plugins/sudoers/timestamp.c:1017 plugins/sudoers/timestamp.c:1146 -#: plugins/sudoers/toke_util.c:78 plugins/sudoers/toke_util.c:106 -#: plugins/sudoers/toke_util.c:131 plugins/sudoers/toke_util.c:161 -#: plugins/sudoers/toke_util.c:200 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:150 plugins/sudoers/visudo.c:385 -#: plugins/sudoers/visudo.c:391 plugins/sudoers/visudo.c:498 -#: plugins/sudoers/visudo.c:1054 toke.l:1023 toke.l:1155 toke.l:1226 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1325 plugins/sudoers/sudoers.c:1513 +#: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 +#: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 +#: plugins/sudoers/toke_util.c:161 plugins/sudoers/toke_util.c:200 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1087 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1299 msgid "unable to allocate memory" msgstr "не удаётся выделить память" -#: gram.y:623 +#: gram.y:622 msgid "a digest requires a path name" -msgstr "для дайджеста нужно указать полный путь" +msgstr "для контрольной суммы нужно указать полный путь" -#: gram.y:645 +#: gram.y:644 msgid "values for \"CWD\" must start with a '/', '~', or '*'" -msgstr "" +msgstr "значения «CWD» должны начинаться с «/», «~» или «*»" -#: gram.y:651 +#: gram.y:650 msgid "\"CWD\" path too long" -msgstr "" +msgstr "Слишком длинный путь «CWD»" -#: gram.y:661 +#: gram.y:660 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" -msgstr "" +msgstr "значения «CHROOT» должны начинаться с «/», «~» или «*»" -#: gram.y:667 +#: gram.y:666 msgid "\"CHROOT\" path too long" -msgstr "" +msgstr "Слишком длинный путь «CHROOT»" -#: gram.y:802 +#: gram.y:801 #, c-format msgid "syntax error, reserved word %s used as an alias name" -msgstr "" +msgstr "ошибка синтаксиса, зарезервированное слово %s используется в качестве псевдонима" -#: gram.y:825 +#: gram.y:824 msgid "invalid notbefore value" -msgstr "" +msgstr "некорректное значение notbefore" -#: gram.y:834 +#: gram.y:833 msgid "invalid notafter value" -msgstr "" +msgstr "некорректное значение notafter" -#: gram.y:844 plugins/sudoers/policy.c:383 +#: gram.y:843 plugins/sudoers/policy.c:381 msgid "timeout value too large" -msgstr "" +msgstr "время ожидания слишком велико" -#: gram.y:846 plugins/sudoers/policy.c:385 +#: gram.y:845 plugins/sudoers/policy.c:383 msgid "invalid timeout value" -msgstr "" +msgstr "некорректное время ожидания" -#: gram.y:967 plugins/sudoers/sudoers.c:1033 +#: gram.y:966 plugins/sudoers/sudoers.c:1192 msgid "command too long" -msgstr "" +msgstr "слишком длинная команда" -#: gram.y:1224 plugins/sudoers/check_aliases.c:96 -#: plugins/sudoers/defaults.c:1276 -#, fuzzy, c-format -#| msgid "%s: %s" +#: gram.y:1000 +msgid "expected a fully-qualified path name" +msgstr "ожидался полный путь" + +#: gram.y:1244 plugins/sudoers/check_aliases.c:96 +#: plugins/sudoers/defaults.c:1275 +#, c-format msgid "%s:%d:%d: %s\n" -msgstr "%s: %s" +msgstr "%s:%d:%d: %s\n" -#: gram.y:1278 -#, fuzzy, c-format -#| msgid "Alias `%s' already defined" +#: gram.y:1298 +#, c-format msgid "Alias \"%s\" already defined" msgstr "Псевдоним «%s» уже определён" -#: gram.y:1777 gram.y:1827 lib/eventlog/eventlog.c:309 -#: lib/eventlog/eventlog.c:827 lib/eventlog/eventlog.c:900 -#: lib/eventlog/eventlog.c:903 lib/eventlog/eventlog.c:1204 -#: lib/iolog/iolog_filter.c:142 lib/iolog/iolog_filter.c:202 -#: lib/iolog/iolog_filter.c:232 lib/iolog/iolog_json.c:150 -#: lib/iolog/iolog_json.c:381 lib/iolog/iolog_json.c:412 -#: lib/iolog/iolog_json.c:555 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:212 -#: logsrvd/iolog_writer.c:95 logsrvd/iolog_writer.c:100 -#: logsrvd/iolog_writer.c:134 logsrvd/iolog_writer.c:171 -#: logsrvd/iolog_writer.c:181 logsrvd/iolog_writer.c:194 -#: logsrvd/iolog_writer.c:214 logsrvd/iolog_writer.c:224 -#: logsrvd/iolog_writer.c:243 logsrvd/iolog_writer.c:253 -#: logsrvd/iolog_writer.c:264 logsrvd/iolog_writer.c:274 -#: logsrvd/iolog_writer.c:286 logsrvd/iolog_writer.c:296 -#: logsrvd/iolog_writer.c:306 logsrvd/iolog_writer.c:316 -#: logsrvd/iolog_writer.c:328 logsrvd/iolog_writer.c:364 -#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:377 -#: logsrvd/iolog_writer.c:383 logsrvd/iolog_writer.c:567 -#: logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 logsrvd/logsrvd.c:310 -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:490 logsrvd/logsrvd.c:522 -#: logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:611 logsrvd/logsrvd.c:660 -#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:732 logsrvd/logsrvd.c:1124 -#: logsrvd/logsrvd.c:1439 logsrvd/logsrvd.c:1446 logsrvd/logsrvd.c:1582 -#: logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 logsrvd/logsrvd.c:1988 +#: gram.y:1808 gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:755 lib/eventlog/eventlog.c:828 +#: lib/eventlog/eventlog.c:831 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:471 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 +#: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:232 +#: 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:212 logsrvd/iolog_writer.c:95 +#: logsrvd/iolog_writer.c:100 logsrvd/iolog_writer.c:134 +#: logsrvd/iolog_writer.c:171 logsrvd/iolog_writer.c:181 +#: logsrvd/iolog_writer.c:194 logsrvd/iolog_writer.c:214 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:243 +#: logsrvd/iolog_writer.c:253 logsrvd/iolog_writer.c:264 +#: logsrvd/iolog_writer.c:274 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:296 logsrvd/iolog_writer.c:306 +#: logsrvd/iolog_writer.c:316 logsrvd/iolog_writer.c:328 +#: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 +#: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:530 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:668 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:1132 +#: logsrvd/logsrvd.c:1447 logsrvd/logsrvd.c:1454 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 #: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 #: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 #: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 @@ -299,29 +307,30 @@ #: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1621 #: logsrvd/logsrvd_conf.c:1633 logsrvd/logsrvd_conf.c:1640 #: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1742 -#: logsrvd/logsrvd_journal.c:75 logsrvd/logsrvd_journal.c:122 -#: logsrvd/logsrvd_journal.c:213 logsrvd/logsrvd_journal.c:243 -#: logsrvd/logsrvd_journal.c:247 logsrvd/logsrvd_journal.c:255 -#: logsrvd/logsrvd_journal.c:278 logsrvd/logsrvd_journal.c:282 -#: logsrvd/logsrvd_journal.c:430 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:125 +#: logsrvd/logsrvd_journal.c:216 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:250 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:290 +#: logsrvd/logsrvd_journal.c:438 logsrvd/logsrvd_local.c:215 #: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:466 #: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:491 #: logsrvd/logsrvd_queue.c:158 logsrvd/logsrvd_queue.c:189 #: logsrvd/logsrvd_queue.c:266 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 -#: logsrvd/sendlog.c:291 logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 -#: logsrvd/sendlog.c:1503 logsrvd/sendlog.c:1510 logsrvd/sendlog.c:1733 -#: logsrvd/sendlog.c:1801 logsrvd/tls_init.c:305 logsrvd/tls_init.c:329 -#: logsrvd/tls_init.c:340 plugins/sudoers/audit.c:116 +#: logsrvd/sendlog.c:292 logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 +#: logsrvd/sendlog.c:624 logsrvd/sendlog.c:1512 logsrvd/sendlog.c:1519 +#: logsrvd/sendlog.c:1742 logsrvd/sendlog.c:1810 logsrvd/tls_init.c:305 +#: logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 plugins/sudoers/audit.c:116 #: plugins/sudoers/auth/pam.c:502 plugins/sudoers/auth/pam.c:687 -#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:168 -#: plugins/sudoers/cvtsudoers.c:131 plugins/sudoers/cvtsudoers.c:174 -#: plugins/sudoers/cvtsudoers.c:191 plugins/sudoers/cvtsudoers.c:202 -#: plugins/sudoers/cvtsudoers.c:332 plugins/sudoers/cvtsudoers.c:536 -#: plugins/sudoers/cvtsudoers.c:669 plugins/sudoers/cvtsudoers.c:687 -#: plugins/sudoers/cvtsudoers.c:862 plugins/sudoers/cvtsudoers.c:869 -#: plugins/sudoers/cvtsudoers.c:1365 plugins/sudoers/cvtsudoers.c:1369 -#: plugins/sudoers/cvtsudoers.c:1471 plugins/sudoers/cvtsudoers_csv.c:182 -#: plugins/sudoers/cvtsudoers_csv.c:245 plugins/sudoers/cvtsudoers_json.c:75 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/canon_path.c:129 +#: plugins/sudoers/canon_path.c:160 plugins/sudoers/check_aliases.c:168 +#: plugins/sudoers/cvtsudoers.c:132 plugins/sudoers/cvtsudoers.c:175 +#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:203 +#: plugins/sudoers/cvtsudoers.c:333 plugins/sudoers/cvtsudoers.c:537 +#: plugins/sudoers/cvtsudoers.c:690 plugins/sudoers/cvtsudoers.c:708 +#: plugins/sudoers/cvtsudoers.c:883 plugins/sudoers/cvtsudoers.c:890 +#: plugins/sudoers/cvtsudoers.c:1386 plugins/sudoers/cvtsudoers.c:1390 +#: plugins/sudoers/cvtsudoers.c:1492 plugins/sudoers/cvtsudoers_csv.c:182 +#: plugins/sudoers/cvtsudoers_csv.c:246 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:375 plugins/sudoers/cvtsudoers_ldif.c:429 @@ -341,1191 +350,1114 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1157 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:188 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 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:227 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 +#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:211 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:464 -#: plugins/sudoers/ldap.c:755 plugins/sudoers/ldap.c:919 -#: plugins/sudoers/ldap.c:1335 plugins/sudoers/ldap.c:1761 -#: plugins/sudoers/ldap.c:1798 plugins/sudoers/ldap.c:1879 -#: plugins/sudoers/ldap.c:2014 plugins/sudoers/ldap.c:2115 -#: plugins/sudoers/ldap.c:2131 plugins/sudoers/ldap_conf.c:218 -#: plugins/sudoers/ldap_conf.c:250 plugins/sudoers/ldap_conf.c:302 -#: plugins/sudoers/ldap_conf.c:338 plugins/sudoers/ldap_conf.c:444 -#: plugins/sudoers/ldap_conf.c:459 plugins/sudoers/ldap_conf.c:564 -#: plugins/sudoers/ldap_conf.c:597 plugins/sudoers/ldap_conf.c:688 -#: plugins/sudoers/ldap_conf.c:771 plugins/sudoers/ldap_util.c:293 -#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:614 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:117 -#: plugins/sudoers/log_client.c:228 plugins/sudoers/log_client.c:250 -#: plugins/sudoers/log_client.c:264 plugins/sudoers/log_client.c:402 -#: plugins/sudoers/log_client.c:715 plugins/sudoers/log_client.c:736 -#: plugins/sudoers/log_client.c:1416 plugins/sudoers/log_client.c:1537 -#: plugins/sudoers/log_client.c:1637 plugins/sudoers/log_client.c:1973 -#: plugins/sudoers/log_client.c:2032 plugins/sudoers/logging.c:110 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:690 plugins/sudoers/ldap_conf.c:773 +#: plugins/sudoers/ldap_util.c:293 plugins/sudoers/ldap_util.c:300 +#: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 +#: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:228 +#: plugins/sudoers/log_client.c:250 plugins/sudoers/log_client.c:264 +#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:717 +#: plugins/sudoers/log_client.c:739 plugins/sudoers/log_client.c:744 +#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1544 +#: plugins/sudoers/log_client.c:1667 plugins/sudoers/log_client.c:1986 +#: plugins/sudoers/log_client.c:2045 plugins/sudoers/logging.c:110 #: plugins/sudoers/logging.c:188 plugins/sudoers/logging.c:189 -#: plugins/sudoers/logging.c:453 plugins/sudoers/logging.c:668 -#: plugins/sudoers/logging.c:805 plugins/sudoers/logging.c:876 -#: plugins/sudoers/logging.c:888 plugins/sudoers/match_command.c:334 -#: plugins/sudoers/match_command.c:602 plugins/sudoers/match_command.c:653 -#: plugins/sudoers/match_command.c:728 plugins/sudoers/match_command.c:775 -#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:226 -#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:262 -#: plugins/sudoers/parse.c:281 plugins/sudoers/parse.c:298 -#: plugins/sudoers/parse.c:321 plugins/sudoers/parse.c:332 -#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 -#: plugins/sudoers/parse_ldif.c:252 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:484 plugins/sudoers/parse_ldif.c:598 -#: plugins/sudoers/parse_ldif.c:627 plugins/sudoers/parse_ldif.c:652 -#: plugins/sudoers/parse_ldif.c:710 plugins/sudoers/parse_ldif.c:727 -#: plugins/sudoers/parse_ldif.c:755 plugins/sudoers/parse_ldif.c:762 -#: plugins/sudoers/policy.c:153 plugins/sudoers/policy.c:162 -#: plugins/sudoers/policy.c:171 plugins/sudoers/policy.c:199 -#: plugins/sudoers/policy.c:368 plugins/sudoers/policy.c:383 -#: plugins/sudoers/policy.c:385 plugins/sudoers/policy.c:423 -#: plugins/sudoers/policy.c:432 plugins/sudoers/policy.c:480 -#: plugins/sudoers/policy.c:490 plugins/sudoers/policy.c:499 -#: plugins/sudoers/policy.c:508 plugins/sudoers/policy.c:517 -#: plugins/sudoers/policy.c:624 plugins/sudoers/policy.c:1026 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:199 -#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 -#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:587 -#: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:857 -#: plugins/sudoers/pwutil.c:913 plugins/sudoers/pwutil.c:957 -#: plugins/sudoers/pwutil.c:1014 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:185 -#: plugins/sudoers/sssd.c:414 plugins/sudoers/sssd.c:479 -#: plugins/sudoers/sssd.c:505 plugins/sudoers/sssd.c:568 -#: plugins/sudoers/sssd.c:761 plugins/sudoers/strvec_join.c:53 -#: plugins/sudoers/stubs.c:112 plugins/sudoers/stubs.c:120 -#: plugins/sudoers/sudoers.c:354 plugins/sudoers/sudoers.c:380 -#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:457 -#: plugins/sudoers/sudoers.c:498 plugins/sudoers/sudoers.c:827 -#: plugins/sudoers/sudoers.c:877 plugins/sudoers/sudoers.c:1015 -#: plugins/sudoers/sudoers.c:1075 plugins/sudoers/sudoers.c:1330 -#: plugins/sudoers/sudoreplay.c:562 plugins/sudoers/sudoreplay.c:565 -#: plugins/sudoers/sudoreplay.c:1281 plugins/sudoers/sudoreplay.c:1503 -#: plugins/sudoers/sudoreplay.c:1507 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:588 plugins/sudoers/timestamp.c:451 -#: plugins/sudoers/timestamp.c:495 plugins/sudoers/timestamp.c:1017 -#: plugins/sudoers/timestamp.c:1146 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:734 plugins/sudoers/logging.c:846 +#: plugins/sudoers/logging.c:899 plugins/sudoers/logging.c:906 +#: plugins/sudoers/match_command.c:294 plugins/sudoers/match_command.c:562 +#: plugins/sudoers/match_command.c:628 plugins/sudoers/match_command.c:724 +#: plugins/sudoers/match_command.c:769 plugins/sudoers/match_digest.c:82 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:295 +#: plugins/sudoers/parse.c:314 plugins/sudoers/parse.c:333 +#: plugins/sudoers/parse.c:350 plugins/sudoers/parse.c:373 +#: plugins/sudoers/parse.c:384 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 +#: 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:484 +#: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:627 +#: plugins/sudoers/parse_ldif.c:652 plugins/sudoers/parse_ldif.c:710 +#: plugins/sudoers/parse_ldif.c:727 plugins/sudoers/parse_ldif.c:755 +#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:166 +#: plugins/sudoers/policy.c:196 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:381 plugins/sudoers/policy.c:383 +#: plugins/sudoers/policy.c:421 plugins/sudoers/policy.c:430 +#: plugins/sudoers/policy.c:478 plugins/sudoers/policy.c:488 +#: plugins/sudoers/policy.c:497 plugins/sudoers/policy.c:506 +#: plugins/sudoers/policy.c:515 plugins/sudoers/policy.c:622 +#: plugins/sudoers/policy.c:1050 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 +#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 +#: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 +#: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 +#: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 +#: plugins/sudoers/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 +#: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1324 plugins/sudoers/sudoers.c:1513 +#: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 +#: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 #: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 #: plugins/sudoers/toke_util.c:160 plugins/sudoers/toke_util.c:200 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:150 -#: plugins/sudoers/visudo.c:385 plugins/sudoers/visudo.c:391 -#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:1054 toke.l:1023 -#: toke.l:1155 toke.l:1218 toke.l:1226 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1086 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1288 toke.l:1299 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:314 lib/iolog/iolog_json.c:562 -#: lib/iolog/iolog_json.c:568 lib/iolog/iolog_json.c:574 -#: plugins/sudoers/cvtsudoers_csv.c:192 plugins/sudoers/cvtsudoers_csv.c:199 -#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:340 -#: plugins/sudoers/env.c:347 plugins/sudoers/env.c:458 -#: plugins/sudoers/ldap.c:526 plugins/sudoers/ldap.c:759 -#: plugins/sudoers/ldap.c:1132 plugins/sudoers/ldap_conf.c:222 -#: plugins/sudoers/ldap_conf.c:313 plugins/sudoers/ldap_util.c:486 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:813 plugins/sudoers/logging.c:823 -#: plugins/sudoers/policy.c:800 plugins/sudoers/policy.c:811 -#: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 -#: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 -#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:213 -#: toke.l:987 toke.l:1189 -#, c-format -msgid "internal error, %s overflow" -msgstr "" - -#: lib/eventlog/eventlog.c:373 +#: lib/eventlog/eventlog.c:304 #, c-format msgid "unable to dup stdin: %m" -msgstr "" +msgstr "не удаётся дублировать стандартный ввод: %m" -#: lib/eventlog/eventlog.c:415 +#: lib/eventlog/eventlog.c:346 #, c-format msgid "unable to execute %s: %m" -msgstr "" +msgstr "не удаётся выполнить %s: %m" -#: lib/eventlog/eventlog.c:463 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:393 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" -msgstr "" +msgstr "не удаётся разветвить процесс" -#: lib/eventlog/eventlog.c:473 lib/eventlog/eventlog.c:538 +#: lib/eventlog/eventlog.c:403 lib/eventlog/eventlog.c:468 #, c-format msgid "unable to fork: %m" -msgstr "" +msgstr "не удаётся разветвить процесс: %m" -#: lib/eventlog/eventlog.c:528 +#: lib/eventlog/eventlog.c:458 #, c-format msgid "unable to open pipe: %m" -msgstr "" +msgstr "не удаётся открыть канал: %m" -#: lib/eventlog/eventlog.c:1030 +#: lib/eventlog/eventlog.c:958 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:1059 +#: lib/eventlog/eventlog.c:987 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (выполнение команды продолжено) %s" -#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1242 -#: plugins/sudoers/sudoreplay.c:1293 plugins/sudoers/sudoreplay.c:1558 -#, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "" - -#: lib/iolog/iolog_json.c:140 +#: lib/eventlog/parse_json.c:175 #, c-format msgid "expected JSON_STRING, got %d" -msgstr "" +msgstr "ожидался JSON_STRING, получен %d" -#: lib/iolog/iolog_json.c:145 +#: lib/eventlog/parse_json.c:180 msgid "JSON_ARRAY too large" -msgstr "" +msgstr "JSON_ARRAY слишком велик" -#: lib/iolog/iolog_json.c:404 +#: lib/eventlog/parse_json.c:494 msgid "missing double quote in name" -msgstr "" +msgstr "пропущены двойные кавычки в названии" -#: lib/iolog/iolog_json.c:501 +#: lib/eventlog/parse_json.c:612 msgid "missing JSON_OBJECT" -msgstr "" +msgstr "пропущен JSON_OBJECT" -#: lib/iolog/iolog_json.c:505 +#: lib/eventlog/parse_json.c:616 #, c-format msgid "expected JSON_OBJECT, got %d" -msgstr "" +msgstr "ожидался JSON_OBJECT, получен %d" -#: lib/iolog/iolog_json.c:661 +#: lib/eventlog/parse_json.c:750 #, c-format msgid "json stack exhausted (max %u frames)" -msgstr "" +msgstr "исчерпан стек json (не больше %u кадров)" -#: lib/iolog/iolog_json.c:735 +#: lib/eventlog/parse_json.c:828 msgid "objects must consist of name:value pairs" -msgstr "" +msgstr "объекты должны состоять из пар «название:значение»" -#: lib/iolog/iolog_json.c:740 lib/iolog/iolog_json.c:771 -#: lib/iolog/iolog_json.c:815 lib/iolog/iolog_json.c:837 -#: lib/iolog/iolog_json.c:859 lib/iolog/iolog_json.c:881 -#: lib/iolog/iolog_json.c:903 +#: lib/eventlog/parse_json.c:833 lib/eventlog/parse_json.c:864 +#: lib/eventlog/parse_json.c:908 lib/eventlog/parse_json.c:930 +#: lib/eventlog/parse_json.c:952 lib/eventlog/parse_json.c:974 +#: lib/eventlog/parse_json.c:996 msgid "missing separator between values" -msgstr "" +msgstr "пропущен разделитель между значениями" -#: lib/iolog/iolog_json.c:755 lib/iolog/iolog_json.c:929 +#: lib/eventlog/parse_json.c:848 lib/eventlog/parse_json.c:1022 msgid "unmatched close brace" -msgstr "" +msgstr "закрывающая фигурная скобка без открывающей" -#: lib/iolog/iolog_json.c:766 +#: lib/eventlog/parse_json.c:859 msgid "unexpected array" -msgstr "" +msgstr "неожиданный массив" -#: lib/iolog/iolog_json.c:786 lib/iolog/iolog_json.c:932 +#: lib/eventlog/parse_json.c:879 lib/eventlog/parse_json.c:1025 msgid "unmatched close bracket" -msgstr "" +msgstr "закрывающая скобка без открывающей" -#: lib/iolog/iolog_json.c:797 +#: lib/eventlog/parse_json.c:890 msgid "unexpected string" -msgstr "" +msgstr "неожиданная строка" -#: lib/iolog/iolog_json.c:808 +#: lib/eventlog/parse_json.c:901 msgid "missing colon after name" -msgstr "" +msgstr "пропущено двоеточие после названия" -#: lib/iolog/iolog_json.c:829 lib/iolog/iolog_json.c:851 +#: lib/eventlog/parse_json.c:922 lib/eventlog/parse_json.c:944 msgid "unexpected boolean" -msgstr "" +msgstr "неожиданное булево значение" -#: lib/iolog/iolog_json.c:873 +#: lib/eventlog/parse_json.c:966 msgid "unexpected null" -msgstr "" +msgstr "неожиданный null" -#: lib/iolog/iolog_json.c:894 +#: lib/eventlog/parse_json.c:987 msgid "unexpected number" -msgstr "" +msgstr "неожиданное число" -#: lib/iolog/iolog_json.c:941 -#, fuzzy -#| msgid "syntax error" +#: lib/eventlog/parse_json.c:1033 msgid "parse error" -msgstr "ошибка синтаксиса" +msgstr "ошибка разбора" + +#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1241 +#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "некорректное регулярное выражение «%s»: %s" #: lib/iolog/iolog_legacy.c:65 #, c-format msgid "%s: invalid log file" -msgstr "" +msgstr "%s: некорректный файл журнала" #: lib/iolog/iolog_legacy.c:83 #, c-format msgid "%s: time stamp field is missing" -msgstr "" +msgstr "%s: пропущена метка времени" #: lib/iolog/iolog_legacy.c:89 #, c-format msgid "%s: time stamp %s: %s" -msgstr "" +msgstr "%s: метка времени %s: %s" #: lib/iolog/iolog_legacy.c:96 #, c-format msgid "%s: user field is missing" -msgstr "" +msgstr "%s: не указано имя пользователя" #: lib/iolog/iolog_legacy.c:107 #, c-format msgid "%s: runas user field is missing" -msgstr "" +msgstr "%s: не указано имя пользователя, от которого производить выполнение (runas)" #: lib/iolog/iolog_legacy.c:118 #, c-format msgid "%s: runas group field is missing" -msgstr "" +msgstr "%s: не указано имя группы, от которой производить выполнение (runas)" #: lib/iolog/iolog_mkdirs.c:89 #, c-format msgid "%s exists but is not a directory (0%o)" -msgstr "" +msgstr "%s существует, но не является каталогом (0%o)" -#: lib/iolog/iolog_mkdirs.c:123 lib/iolog/iolog_mkdtemp.c:78 -#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:209 +#: lib/iolog/iolog_mkdirs.c:123 lib/iolog/iolog_mkdtemp.c:79 +#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:234 #, c-format msgid "unable to mkdir %s" -msgstr "" +msgstr "не удаётся создать каталог %s" -#: lib/iolog/iolog_mkdtemp.c:83 plugins/sudoers/visudo.c:753 -#: plugins/sudoers/visudo.c:787 plugins/sudoers/visudo.c:793 +#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:760 +#: plugins/sudoers/visudo.c:794 plugins/sudoers/visudo.c:800 #, c-format msgid "unable to change mode of %s to 0%o" -msgstr "" +msgstr "не удаётся изменить режим доступа к %s на 0%o" #: lib/iolog/iolog_timing.c:261 #, c-format msgid "error reading timing file: %s" -msgstr "" +msgstr "не удаётся прочитать файл временных меток: %s" #: lib/iolog/iolog_timing.c:268 #, c-format msgid "invalid timing file line: %s" -msgstr "" +msgstr "некорректная строка в файле временных меток: %s" #: logsrvd/iolog_writer.c:65 #, c-format msgid "%s: protocol error: NULL key" -msgstr "" +msgstr "%s: ошибка протокола: ключ NULL" #: logsrvd/iolog_writer.c:69 #, c-format msgid "%s: protocol error: wrong type for %s" -msgstr "" +msgstr "%s: ошибка протокола: некорректный тип для %s" #: logsrvd/iolog_writer.c:74 logsrvd/logsrvd_local.c:109 #: logsrvd/logsrvd_local.c:123 logsrvd/logsrvd_local.c:131 #: logsrvd/logsrvd_local.c:149 #, c-format msgid "%s: protocol error: NULL value found in %s" -msgstr "" +msgstr "%s: ошибка протокола: значение NULL встречено в %s" -#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:976 -#: plugins/sudoers/policy.c:591 -#, fuzzy -#| msgid "unable to read the clock" +#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:993 +#: plugins/sudoers/policy.c:589 msgid "unable to generate UUID" -msgstr "не удаётся прочитать часы" +msgstr "не удаётся создать UUID" #: logsrvd/iolog_writer.c:341 logsrvd/iolog_writer.c:346 #: logsrvd/iolog_writer.c:351 logsrvd/iolog_writer.c:356 #, c-format msgid "%s: protocol error: %s missing from AcceptMessage" -msgstr "" +msgstr "%s: ошибка протокола: %s отсутствует в AcceptMessage" #: logsrvd/iolog_writer.c:417 -#, fuzzy, c-format -#| msgid "%s: unable to allocate options: %s" +#, c-format msgid "%s: unable to format session id" -msgstr "%s: не удаётся выделить параметры: %s" +msgstr "%s: не удаётся выполнить форматирование идентификатора сеанса" #: logsrvd/iolog_writer.c:431 logsrvd/iolog_writer.c:445 #: logsrvd/iolog_writer.c:459 logsrvd/iolog_writer.c:474 #: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:502 #, c-format msgid "%s: %s is not set" -msgstr "" +msgstr "%s: %s не указан" #: logsrvd/iolog_writer.c:538 logsrvd/iolog_writer.c:545 -#, fuzzy, c-format -#| msgid "unable to open log file: %s: %s" +#, c-format msgid "unable to expand iolog path %s" -msgstr "не удаётся открыть файл журнала: %s: %s" +msgstr "не удаётся развернуть путь журнала ввода-вывода %s" #: logsrvd/iolog_writer.c:563 -#, fuzzy, c-format -#| msgid "unable to read the clock" +#, c-format msgid "unable to create iolog path %s" -msgstr "не удаётся прочитать часы" +msgstr "не удаётся создать путь к журналу ввода-вывода %s" #: logsrvd/iolog_writer.c:593 #, c-format msgid "invalid iofd %d" -msgstr "" +msgstr "некорректный дескриптор файла ввода-вывода %d" #: logsrvd/iolog_writer.c:613 #, c-format msgid "error closing iofd %d: %s" -msgstr "" +msgstr "ошибка при закрытии дескриптора файла ввода-вывода %d: %s" #: logsrvd/iolog_writer.c:633 #, c-format msgid "error flushing iofd %d: %s" -msgstr "" +msgstr "ошибка при сбросе дескриптора файла ввода-вывода %d: %s" #: logsrvd/iolog_writer.c:751 #, c-format msgid "invalid I/O log %s: %s referenced but not present" -msgstr "" +msgstr "некорректный журнал ввода-вывода %s: есть ссылки на %s, но сама запись отсутствует" -#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:382 -#, fuzzy, c-format -#| msgid "%s: unable to get credentials: %s" +#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:390 +#, c-format msgid "%s: unable to find resume point [%lld, %ld]" -msgstr "%s: не удаётся получить учётные данные: %s" +msgstr "%s: не удаётся найти точку восстановления [%lld, %ld]" -#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:425 +#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:433 #: logsrvd/logsrvd_queue.c:115 logsrvd/tls_init.c:256 -#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:730 -#: plugins/sudoers/cvtsudoers.c:751 plugins/sudoers/cvtsudoers.c:1431 -#: plugins/sudoers/cvtsudoers_csv.c:695 plugins/sudoers/cvtsudoers_json.c:898 -#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1113 -#: plugins/sudoers/sudoers.c:1143 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/timestamp.c:460 plugins/sudoers/tsdump.c:128 -#: plugins/sudoers/visudo.c:971 +#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:751 +#: plugins/sudoers/cvtsudoers.c:772 plugins/sudoers/cvtsudoers.c:1452 +#: plugins/sudoers/cvtsudoers_csv.c:697 plugins/sudoers/cvtsudoers_json.c:902 +#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1310 +#: plugins/sudoers/sudoers.c:1334 plugins/sudoers/sudoreplay.c:1496 +#: plugins/sudoers/timestamp.c:485 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:982 #, c-format msgid "unable to open %s" -msgstr "" +msgstr "не удаётся открыть %s" -#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:105 -#: logsrvd/logsrv_util.c:112 plugins/sudoers/sudoreplay.c:362 -#: plugins/sudoers/sudoreplay.c:368 -#, fuzzy, c-format -#| msgid "unable to open log file: %s: %s" +#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:111 +#: logsrvd/logsrv_util.c:118 plugins/sudoers/sudoreplay.c:355 +#: plugins/sudoers/sudoreplay.c:361 +#, c-format msgid "unable to open %s/%s" -msgstr "не удаётся открыть файл журнала: %s: %s" +msgstr "не удаётся открыть %s/%s" #: logsrvd/iolog_writer.c:810 -#, fuzzy, c-format -#| msgid "unable to open log file: %s: %s" +#, c-format msgid "unable to copy %s/%s to %s/%s: %s" -msgstr "не удаётся открыть файл журнала: %s: %s" +msgstr "не удаётся скопировать %s/%s в %s/%s: %s" -#: logsrvd/iolog_writer.c:839 logsrvd/logsrvd_journal.c:195 -#, fuzzy, c-format -#| msgid "%s: unable to parse '%s': %s" +#: logsrvd/iolog_writer.c:839 logsrvd/logsrvd_journal.c:198 +#, c-format msgid "unable to rename %s to %s" -msgstr "%s: не удаётся прочитать '%s': %s" +msgstr "не удаётся переименовать %s в %s" -#: logsrvd/logsrv_util.c:147 logsrvd/logsrv_util.c:176 +#: logsrvd/logsrv_util.c:153 logsrvd/logsrv_util.c:182 #, c-format msgid "%s/%s: unable to find resume point [%lld, %ld]" -msgstr "" +msgstr "%s/%s: не удаётся найти точку восстановления [%lld, %ld]" -#: logsrvd/logsrv_util.c:159 +#: logsrvd/logsrv_util.c:165 #, c-format msgid "missing I/O log file %s/%s" -msgstr "" +msgstr "отсутствует файл журнала ввода-вывода %s/%s" -#: logsrvd/logsrv_util.c:166 -#, fuzzy, c-format -#| msgid "%s: unable to parse '%s': %s" +#: logsrvd/logsrv_util.c:172 +#, c-format msgid "%s/%s: unable to seek forward %zu" -msgstr "%s: не удаётся прочитать '%s': %s" +msgstr "%s/%s: не удаётся изменить позицию вперёд на %zu" #: logsrvd/logsrvd.c:271 logsrvd/logsrvd_queue.c:135 -#, fuzzy -#| msgid "unable to connect to authentication server" msgid "unable to connect to relay" -msgstr "не удаётся связаться с сервером аутентификации" +msgstr "не удаётся связаться с ретранслятором" -#: logsrvd/logsrvd.c:330 logsrvd/logsrvd_relay.c:842 +#: logsrvd/logsrvd.c:338 logsrvd/logsrvd_relay.c:844 #, c-format msgid "server message too large: %zu" -msgstr "" +msgstr "сообщение сервера слишком велико: %zu" -#: logsrvd/logsrvd.c:422 logsrvd/logsrvd.c:545 logsrvd/logsrvd.c:631 -#: logsrvd/logsrvd.c:873 logsrvd/logsrvd.c:887 logsrvd/logsrvd.c:1049 -#: logsrvd/logsrvd.c:1174 logsrvd/logsrvd.c:1347 logsrvd/logsrvd.c:1365 -#: logsrvd/logsrvd.c:1464 logsrvd/logsrvd.c:1589 logsrvd/logsrvd.c:1773 -#: logsrvd/logsrvd_journal.c:494 logsrvd/logsrvd_local.c:238 +#: logsrvd/logsrvd.c:430 logsrvd/logsrvd.c:553 logsrvd/logsrvd.c:639 +#: logsrvd/logsrvd.c:881 logsrvd/logsrvd.c:895 logsrvd/logsrvd.c:1057 +#: logsrvd/logsrvd.c:1182 logsrvd/logsrvd.c:1355 logsrvd/logsrvd.c:1373 +#: logsrvd/logsrvd.c:1472 logsrvd/logsrvd.c:1597 logsrvd/logsrvd.c:1784 +#: logsrvd/logsrvd_journal.c:502 logsrvd/logsrvd_local.c:238 #: logsrvd/logsrvd_queue.c:164 logsrvd/logsrvd_relay.c:172 #: logsrvd/logsrvd_relay.c:249 logsrvd/logsrvd_relay.c:253 -#: logsrvd/logsrvd_relay.c:389 logsrvd/logsrvd_relay.c:581 -#: logsrvd/logsrvd_relay.c:742 logsrvd/logsrvd_relay.c:1131 -#: logsrvd/sendlog.c:1291 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 -#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:278 -#: plugins/sudoers/iolog.c:1033 plugins/sudoers/iolog.c:1166 -#: plugins/sudoers/iolog.c:1264 plugins/sudoers/log_client.c:121 +#: logsrvd/logsrvd_relay.c:391 logsrvd/logsrvd_relay.c:583 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:1133 +#: logsrvd/sendlog.c:1300 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:277 +#: plugins/sudoers/iolog.c:1030 plugins/sudoers/iolog.c:1163 +#: plugins/sudoers/iolog.c:1261 plugins/sudoers/log_client.c:121 #: plugins/sudoers/log_client.c:343 plugins/sudoers/log_client.c:359 -#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:611 -#: plugins/sudoers/log_client.c:618 plugins/sudoers/log_client.c:1103 -#: plugins/sudoers/log_client.c:1385 plugins/sudoers/log_client.c:1426 -#: plugins/sudoers/log_client.c:1434 plugins/sudoers/log_client.c:1593 -#: plugins/sudoers/log_client.c:1711 plugins/sudoers/log_client.c:2040 -#: plugins/sudoers/log_client.c:2048 plugins/sudoers/logging.c:147 -#: plugins/sudoers/logging.c:205 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 -#, fuzzy -#| msgid "unable to read the clock" +#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:613 +#: plugins/sudoers/log_client.c:620 plugins/sudoers/log_client.c:1111 +#: plugins/sudoers/log_client.c:1392 plugins/sudoers/log_client.c:1433 +#: plugins/sudoers/log_client.c:1441 plugins/sudoers/log_client.c:1600 +#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:2053 +#: plugins/sudoers/log_client.c:2061 plugins/sudoers/logging.c:147 +#: plugins/sudoers/logging.c:205 plugins/sudoers/sudoreplay.c:519 +#: plugins/sudoers/sudoreplay.c:566 plugins/sudoers/sudoreplay.c:808 +#: plugins/sudoers/sudoreplay.c:920 plugins/sudoers/sudoreplay.c:1011 +#: plugins/sudoers/sudoreplay.c:1026 plugins/sudoers/sudoreplay.c:1033 +#: plugins/sudoers/sudoreplay.c:1040 plugins/sudoers/sudoreplay.c:1047 +#: plugins/sudoers/sudoreplay.c:1054 plugins/sudoers/sudoreplay.c:1181 msgid "unable to add event to queue" -msgstr "не удаётся прочитать часы" +msgstr "не удаётся добавить событие в очередь" -#: logsrvd/logsrvd.c:446 logsrvd/logsrvd.c:483 logsrvd/logsrvd.c:515 -#: logsrvd/logsrvd.c:569 logsrvd/logsrvd.c:648 logsrvd/logsrvd.c:684 -#: logsrvd/logsrvd.c:720 logsrvd/logsrvd.c:756 logsrvd/logsrvd_relay.c:510 -#: logsrvd/logsrvd_relay.c:543 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:577 logsrvd/logsrvd.c:656 logsrvd/logsrvd.c:692 +#: logsrvd/logsrvd.c:728 logsrvd/logsrvd.c:764 logsrvd/logsrvd_relay.c:512 +#: logsrvd/logsrvd_relay.c:545 #, c-format msgid "unexpected state %d for %s" -msgstr "" +msgstr "неожиданный статус %d для %s" -#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 -#: logsrvd/logsrvd.c:570 logsrvd/logsrvd.c:649 logsrvd/logsrvd.c:685 -#: logsrvd/logsrvd.c:721 logsrvd/logsrvd.c:757 logsrvd/logsrvd_relay.c:512 -#: logsrvd/logsrvd_relay.c:545 +#: logsrvd/logsrvd.c:455 logsrvd/logsrvd.c:492 logsrvd/logsrvd.c:524 +#: logsrvd/logsrvd.c:578 logsrvd/logsrvd.c:657 logsrvd/logsrvd.c:693 +#: logsrvd/logsrvd.c:729 logsrvd/logsrvd.c:765 logsrvd/logsrvd_relay.c:514 +#: logsrvd/logsrvd_relay.c:547 msgid "state machine error" -msgstr "" +msgstr "ошибка конечного автомата" -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:454 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:462 msgid "invalid AcceptMessage" -msgstr "" +msgstr "некорректный AcceptMessage" -#: logsrvd/logsrvd.c:490 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:499 msgid "invalid RejectMessage" -msgstr "" +msgstr "некорректный RejectMessage" -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:530 logsrvd/logsrvd.c:531 msgid "invalid ExitMessage" -msgstr "" +msgstr "некорректный ExitMessage" -#: logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:577 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:585 msgid "invalid RestartMessage" -msgstr "" +msgstr "некорректный RestartMessage" -#: logsrvd/logsrvd.c:611 logsrvd/logsrvd.c:612 +#: logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:620 msgid "invalid AlertMessage" -msgstr "" +msgstr "некорректный AlertMessage" -#: logsrvd/logsrvd.c:653 logsrvd/logsrvd.c:689 logsrvd/logsrvd.c:725 +#: logsrvd/logsrvd.c:661 logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:733 #, c-format msgid "%s: unexpected IoBuffer" -msgstr "" +msgstr "%s: неожиданное значение IoBuffer" -#: logsrvd/logsrvd.c:654 logsrvd/logsrvd.c:690 logsrvd/logsrvd.c:726 +#: logsrvd/logsrvd.c:662 logsrvd/logsrvd.c:698 logsrvd/logsrvd.c:734 msgid "protocol error" -msgstr "" +msgstr "ошибка протокола" -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:661 +#: logsrvd/logsrvd.c:668 logsrvd/logsrvd.c:669 msgid "invalid IoBuffer" -msgstr "" +msgstr "некорректный IoBuffer" -#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:697 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:705 msgid "invalid ChangeWindowSize" -msgstr "" +msgstr "некорректный ChangeWindowSize" -#: logsrvd/logsrvd.c:732 logsrvd/logsrvd.c:733 +#: logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:741 msgid "invalid CommandSuspend" -msgstr "" +msgstr "некорректный CommandSuspend" -#: logsrvd/logsrvd.c:782 logsrvd/logsrvd_journal.c:293 -#: logsrvd/logsrvd_relay.c:652 logsrvd/sendlog.c:1192 -#: plugins/sudoers/log_client.c:1583 -#, fuzzy, c-format -#| msgid "unable to initialize PAM" +#: logsrvd/logsrvd.c:790 logsrvd/logsrvd_journal.c:301 +#: logsrvd/logsrvd_relay.c:654 logsrvd/sendlog.c:1201 +#: plugins/sudoers/log_client.c:1590 +#, c-format msgid "unable to unpack %s size %zu" -msgstr "не удаётся инициализировать PAM" +msgstr "не удаётся распаковать %s, размер %zu" -#: logsrvd/logsrvd.c:827 logsrvd/logsrvd_journal.c:367 -#: logsrvd/logsrvd_relay.c:676 +#: logsrvd/logsrvd.c:835 logsrvd/logsrvd_journal.c:375 +#: logsrvd/logsrvd_relay.c:678 #, c-format msgid "unexpected type_case value %d in %s from %s" -msgstr "" +msgstr "неожиданное значение type_case %d в %s из %s" -#: logsrvd/logsrvd.c:829 +#: logsrvd/logsrvd.c:837 msgid "unrecognized ClientMessage type" -msgstr "" +msgstr "неизвестный тип ClientMessage" -#: logsrvd/logsrvd.c:919 +#: logsrvd/logsrvd.c:927 #, c-format msgid "timed out writing to client %s" -msgstr "" +msgstr "истекло время ожидания записи клиенту %s" -#: logsrvd/logsrvd.c:924 logsrvd/logsrvd_relay.c:914 logsrvd/sendlog.c:1395 +#: logsrvd/logsrvd.c:932 logsrvd/logsrvd_relay.c:916 logsrvd/sendlog.c:1404 #, c-format msgid "missing write buffer for client %s" -msgstr "" +msgstr "пропущен буфер записи для клиента %s" -#: logsrvd/logsrvd.c:1020 +#: logsrvd/logsrvd.c:1028 #, c-format msgid "timed out reading from client %s" -msgstr "" +msgstr "истекло время ожидания от клиента %s" -#: logsrvd/logsrvd.c:1061 logsrvd/logsrvd_relay.c:777 +#: logsrvd/logsrvd.c:1069 logsrvd/logsrvd_relay.c:779 #, c-format msgid "EOF from %s without proper TLS shutdown" -msgstr "" +msgstr "EOF от %s без корректного завершения сеанса TLS" -#: logsrvd/logsrvd.c:1105 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:322 -#: plugins/sudoers/log_client.c:721 +#: logsrvd/logsrvd.c:1113 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:331 +#: plugins/sudoers/log_client.c:723 #, c-format msgid "client message too large: %zu" -msgstr "" +msgstr "сообщение клиента слишком велико: %zu" -#: logsrvd/logsrvd.c:1106 logsrvd/logsrvd_journal.c:256 -#: logsrvd/logsrvd_journal.c:257 +#: logsrvd/logsrvd.c:1114 logsrvd/logsrvd_journal.c:259 +#: logsrvd/logsrvd_journal.c:260 msgid "client message too large" -msgstr "" +msgstr "сообщение клиента слишком велико" -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1125 +#: logsrvd/logsrvd.c:1132 logsrvd/logsrvd.c:1133 msgid "invalid ClientMessage" -msgstr "" +msgstr "некорректный ClientMessage" -#: logsrvd/logsrvd.c:1425 -#, fuzzy -#| msgid "unable to allocate memory" +#: logsrvd/logsrvd.c:1433 msgid "unable to get remote IP addr" -msgstr "не удаётся выделить память" +msgstr "не удаётся получить удалённый IP-адрес" -#: logsrvd/logsrvd.c:1456 logsrvd/tls_client.c:203 +#: logsrvd/logsrvd.c:1464 logsrvd/tls_client.c:203 #: plugins/sudoers/log_client.c:281 #, c-format msgid "Unable to attach user data to the ssl object: %s" -msgstr "" +msgstr "Не удаётся присоединить данные пользователя к SSL-объекту: %s" -#: logsrvd/logsrvd.c:1639 logsrvd/logsrvd.c:1992 -#, fuzzy -#| msgid "unable to read the clock" +#: logsrvd/logsrvd.c:1647 logsrvd/logsrvd.c:2003 msgid "unable to setup listen socket" -msgstr "не удаётся прочитать часы" +msgstr "не удаётся настроить слушающий сокет" -#: logsrvd/logsrvd.c:1756 +#: logsrvd/logsrvd.c:1767 #, c-format msgid "unexpected signal %d" -msgstr "" +msgstr "неожиданный сигнал %d" -#: logsrvd/logsrvd.c:1894 +#: logsrvd/logsrvd.c:1905 msgid "sudo log server" -msgstr "" +msgstr "сервер журнала sudo" -#: logsrvd/logsrvd.c:1896 logsrvd/sendlog.c:121 +#: logsrvd/logsrvd.c:1907 logsrvd/sendlog.c:121 msgid "Options:" -msgstr "" +msgstr "Параметры:" -#: logsrvd/logsrvd.c:1898 +#: logsrvd/logsrvd.c:1909 msgid "path to configuration file" -msgstr "" +msgstr "путь к файлу конфигурации" -#: logsrvd/logsrvd.c:1900 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1911 logsrvd/sendlog.c:123 msgid "display help message and exit" -msgstr "" +msgstr "показать справку и выйти" -#: logsrvd/logsrvd.c:1902 +#: logsrvd/logsrvd.c:1913 msgid "do not fork, run in the foreground" -msgstr "" +msgstr "не переходить в фоновый режим" -#: logsrvd/logsrvd.c:1904 +#: logsrvd/logsrvd.c:1915 msgid "percent chance connections will drop" -msgstr "" +msgstr "вероятность разрыва подключений в процентах" -#: logsrvd/logsrvd.c:1906 logsrvd/sendlog.c:153 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:153 msgid "display version information and exit" -msgstr "" +msgstr "показать информацию о версии и выйти" -#: logsrvd/logsrvd.c:1956 logsrvd/sendlog.c:1702 +#: logsrvd/logsrvd.c:1967 logsrvd/sendlog.c:1711 msgid "Protobuf-C version 1.3 or higher required" -msgstr "" +msgstr "Требуется Protobuf-C версии 1.3 или выше" -#: logsrvd/logsrvd.c:1972 -#, fuzzy, c-format -#| msgid "invalid sudoOrder attribute: %s" +#: logsrvd/logsrvd.c:1983 +#, c-format msgid "invalid random drop value: %s" -msgstr "недопустимый атрибут sudoOrder: %s" +msgstr "некорректное значение вероятности сброса: %s" -#: logsrvd/logsrvd.c:1975 logsrvd/sendlog.c:1756 -#: plugins/sudoers/cvtsudoers.c:246 plugins/sudoers/sudoreplay.c:301 -#: plugins/sudoers/visudo.c:182 +#: logsrvd/logsrvd.c:1986 logsrvd/sendlog.c:1765 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/sudoreplay.c:294 +#: plugins/sudoers/visudo.c:186 #, c-format msgid "%s version %s\n" -msgstr "" +msgstr "%s версии %s\n" -#: logsrvd/logsrvd_conf.c:422 plugins/sudoers/check.c:353 +#: logsrvd/logsrvd_conf.c:422 plugins/sudoers/check.c:358 #: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:122 -#: plugins/sudoers/policy.c:1264 plugins/sudoers/sudoers.c:505 -#: plugins/sudoers/sudoers.c:1372 plugins/sudoers/testsudoers.c:215 -#: plugins/sudoers/testsudoers.c:382 -#, fuzzy, c-format -#| msgid "unknown user: %s" +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:939 +#: plugins/sudoers/sudoers.c:1041 plugins/sudoers/sudoers.c:1062 +#: plugins/sudoers/sudoers.c:1555 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:393 +#, c-format msgid "unknown user %s" -msgstr "неизвестный пользователь: %s" +msgstr "неизвестный пользователь %s" #: logsrvd/logsrvd_conf.c:439 plugins/sudoers/iolog.c:148 -#: plugins/sudoers/sudoers.c:510 plugins/sudoers/sudoers.c:1406 -#: plugins/sudoers/testsudoers.c:406 -#, fuzzy, c-format -#| msgid "unknown user: %s" +#: plugins/sudoers/sudoers.c:453 plugins/sudoers/sudoers.c:1589 +#: plugins/sudoers/testsudoers.c:417 +#, c-format msgid "unknown group %s" -msgstr "неизвестный пользователь: %s" +msgstr "неизвестная группа %s" #: logsrvd/logsrvd_conf.c:457 -#, fuzzy, c-format -#| msgid "unable to open log file: %s: %s" +#, c-format msgid "unable to parse iolog mode %s" -msgstr "не удаётся открыть файл журнала: %s: %s" +msgstr "не удаётся разобрать режим журнала ввода-вывода %s" #: logsrvd/logsrvd_conf.c:474 logsrvd/logsrvd_conf.c:1243 #, c-format msgid "invalid value for %s: %s" -msgstr "" +msgstr "некорректное значение для %s: %s" #: logsrvd/logsrvd_conf.c:527 msgid "TLS not supported" -msgstr "" +msgstr "TLS не поддерживается" #: logsrvd/logsrvd_conf.c:549 #, c-format msgid "%s:%s" -msgstr "" +msgstr "%s:%s" #: logsrvd/logsrvd_conf.c:622 logsrvd/logsrvd_conf.c:1032 #, c-format msgid "%s: not a fully qualified path" -msgstr "" +msgstr "%s: не является полным путём" #: logsrvd/logsrvd_conf.c:951 logsrvd/logsrvd_conf.c:967 #: logsrvd/logsrvd_conf.c:1676 #, c-format msgid "unknown syslog facility %s" -msgstr "" +msgstr "неизвестная возможность syslog %s" #: logsrvd/logsrvd_conf.c:983 logsrvd/logsrvd_conf.c:999 #: logsrvd/logsrvd_conf.c:1015 logsrvd/logsrvd_conf.c:1680 #: logsrvd/logsrvd_conf.c:1684 logsrvd/logsrvd_conf.c:1688 -#, fuzzy, c-format -#| msgid "unknown user: %s" +#, c-format msgid "unknown syslog priority %s" -msgstr "неизвестный пользователь: %s" +msgstr "неизвестный приоритет syslog %s" #: logsrvd/logsrvd_conf.c:1197 -#, fuzzy, c-format -#| msgid "%s: unable to parse '%s': %s" +#, c-format msgid "%s:%d unmatched '[': %s" -msgstr "%s: не удаётся прочитать '%s': %s" +msgstr "%s:%d «[» без парной скобки: %s" #: logsrvd/logsrvd_conf.c:1203 -#, fuzzy, c-format -#| msgid "%s: unable to parse '%s': %s" +#, c-format msgid "%s:%d garbage after ']': %s" -msgstr "%s: не удаётся прочитать '%s': %s" +msgstr "%s:%d мусор после «]»: %s" #: logsrvd/logsrvd_conf.c:1215 #, c-format msgid "%s:%d invalid config section: %s" -msgstr "" +msgstr "%s:%d некорректный раздел настроек: %s" #: logsrvd/logsrvd_conf.c:1223 #, c-format msgid "%s:%d invalid configuration line: %s" -msgstr "" +msgstr "%s:%d некорректная строка настроек: %s" #: logsrvd/logsrvd_conf.c:1229 #, c-format msgid "%s:%d expected section name: %s" -msgstr "" +msgstr "%s:%d ожидалось имя раздела: %s" #: logsrvd/logsrvd_conf.c:1251 #, c-format msgid "%s:%d [%s] illegal key: %s" -msgstr "" +msgstr "%s:%d [%s] недопустимый ключ: %s" -#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:268 -#: plugins/sudoers/logging.c:1029 -#, fuzzy, c-format -#| msgid "unable to open log file: %s: %s" +#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:269 +#: plugins/sudoers/logging.c:1046 +#, c-format msgid "unable to open log file %s" -msgstr "не удаётся открыть файл журнала: %s: %s" +msgstr "не удаётся открыть файл журнала %s" #: logsrvd/logsrvd_conf.c:1763 -#, fuzzy -#| msgid "unable to initialize SIA session" msgid "unable to initialize server TLS context" -msgstr "не удаётся инициализировать сеанс SIA" +msgstr "не удаётся инициализировать контекст сервера TLS" #: logsrvd/logsrvd_conf.c:1783 -#, fuzzy -#| msgid "unable to initialize SIA session" msgid "unable to initialize relay TLS context" -msgstr "не удаётся инициализировать сеанс SIA" +msgstr "не удаётся инициализировать контекст ретранслятора TLS" -#: logsrvd/logsrvd_journal.c:146 logsrvd/logsrvd_journal.c:421 -#: logsrvd/logsrvd_journal.c:426 -#, fuzzy -#| msgid "unable to read fwtk config" +#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:434 msgid "unable to create journal file" -msgstr "не удаётся прочитать конфигурацию ftwk" +msgstr "не удаётся создать файл журнала" -#: logsrvd/logsrvd_journal.c:150 logsrvd/logsrvd_queue.c:109 -#: plugins/sudoers/visudo.c:1026 -#, fuzzy, c-format -#| msgid "unable to lock log file: %s: %s" +#: logsrvd/logsrvd_journal.c:153 logsrvd/logsrvd_queue.c:109 +#: plugins/sudoers/visudo.c:1038 +#, c-format msgid "unable to lock %s" -msgstr "не удаётся заблокировать файл журнала: %s: %s" +msgstr "не удаётся заблокировать %s" -#: logsrvd/logsrvd_journal.c:153 -#, fuzzy -#| msgid "unable to lock log file: %s: %s" +#: logsrvd/logsrvd_journal.c:156 msgid "unable to lock journal file" -msgstr "не удаётся заблокировать файл журнала: %s: %s" +msgstr "не удаётся заблокировать файл журнала" -#: logsrvd/logsrvd_journal.c:161 -#, fuzzy -#| msgid "unable to open log file: %s: %s" +#: logsrvd/logsrvd_journal.c:164 msgid "unable to open journal file" -msgstr "не удаётся открыть файл журнала: %s: %s" +msgstr "не удаётся открыть файл журнала" -#: logsrvd/logsrvd_journal.c:182 logsrvd/logsrvd_journal.c:457 -#: logsrvd/logsrvd_journal.c:462 -#, fuzzy -#| msgid "unable to read fwtk config" +#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:470 msgid "unable to write journal file" -msgstr "не удаётся прочитать конфигурацию ftwk" +msgstr "не удаётся записать файл журнала" -#: logsrvd/logsrvd_journal.c:190 logsrvd/logsrvd_journal.c:197 -#, fuzzy -#| msgid "unable to read fwtk config" +#: logsrvd/logsrvd_journal.c:193 logsrvd/logsrvd_journal.c:200 msgid "unable to rename journal file" -msgstr "не удаётся прочитать конфигурацию ftwk" +msgstr "не удаётся переименовать файл журнала" -#: logsrvd/logsrvd_journal.c:244 logsrvd/logsrvd_journal.c:245 -#: logsrvd/logsrvd_journal.c:279 logsrvd/logsrvd_journal.c:280 +#: logsrvd/logsrvd_journal.c:247 logsrvd/logsrvd_journal.c:248 +#: logsrvd/logsrvd_journal.c:287 logsrvd/logsrvd_journal.c:288 msgid "unexpected EOF reading journal file" -msgstr "" +msgstr "неожиданный EOF в процессе чтения файла журнала" -#: logsrvd/logsrvd_journal.c:248 logsrvd/logsrvd_journal.c:249 -#: logsrvd/logsrvd_journal.c:283 logsrvd/logsrvd_journal.c:284 +#: logsrvd/logsrvd_journal.c:251 logsrvd/logsrvd_journal.c:252 +#: logsrvd/logsrvd_journal.c:291 logsrvd/logsrvd_journal.c:292 msgid "error reading journal file" -msgstr "" +msgstr "ошибка чтения файла журнала" -#: logsrvd/logsrvd_journal.c:295 logsrvd/logsrvd_journal.c:381 +#: logsrvd/logsrvd_journal.c:303 logsrvd/logsrvd_journal.c:389 msgid "invalid journal file, unable to restart" -msgstr "" +msgstr "некорректный файл журнала, не удаётся перезапустить" -#: logsrvd/logsrvd_journal.c:440 +#: logsrvd/logsrvd_journal.c:448 #, c-format msgid "unable to seek to [%lld, %ld] in journal file %s" -msgstr "" +msgstr "невозможно найти [%lld, %ld] в файле журнала %s" #: logsrvd/logsrvd_local.c:166 #, c-format msgid "unexpected value_case %d in %s from %s" -msgstr "" +msgstr "неожиданное значение value_case %d в %s из %s" #: logsrvd/logsrvd_local.c:194 msgid "error parsing AcceptMessage" -msgstr "" +msgstr "ошибка разбора AcceptMessage" #: logsrvd/logsrvd_local.c:205 msgid "error creating I/O log" -msgstr "" +msgstr "ошибка создания журнала ввода-вывода" #: logsrvd/logsrvd_local.c:228 msgid "error logging accept event" -msgstr "" +msgstr "ошибка при записи события подтверждения в журнал" #: logsrvd/logsrvd_local.c:267 msgid "error parsing RejectMessage" -msgstr "" +msgstr "ошибка разбора RejectMessage" #: logsrvd/logsrvd_local.c:291 msgid "error logging reject event" -msgstr "" +msgstr "ошибка при записи события отклонения в журнал" #: logsrvd/logsrvd_local.c:427 logsrvd/logsrvd_local.c:435 msgid "error logging exit event" -msgstr "" +msgstr "ошибка при записи события выхода в журнал" #: logsrvd/logsrvd_local.c:492 logsrvd/logsrvd_local.c:493 msgid "log is already complete, cannot be restarted" -msgstr "" +msgstr "журнал уже завершён и не может быть перезапущен" #: logsrvd/logsrvd_local.c:523 -#, fuzzy -#| msgid "unable to read the clock" msgid "unable to restart log" -msgstr "не удаётся прочитать часы" +msgstr "не удаётся перезапустить журнал" #: logsrvd/logsrvd_local.c:539 msgid "error parsing AlertMessage" -msgstr "" +msgstr "ошибка разбора AlertMessage" #: logsrvd/logsrvd_local.c:549 msgid "error logging alert event" -msgstr "" +msgstr "ошибка при записи события критического уведомления в журнал" #: logsrvd/logsrvd_local.c:585 logsrvd/logsrvd_local.c:648 #: logsrvd/logsrvd_local.c:683 #, c-format msgid "unable to format timing buffer, length %d" -msgstr "" +msgstr "невозможно отформатировать буфер часовых отметок, длина %d" #: logsrvd/logsrvd_local.c:599 logsrvd/logsrvd_local.c:607 #: logsrvd/logsrvd_local.c:655 logsrvd/logsrvd_local.c:690 -#: plugins/sudoers/sudoreplay.c:351 -#, fuzzy, c-format -#| msgid "%s: %s" +#: plugins/sudoers/sudoreplay.c:344 toke.l:982 toke.l:985 +#, c-format msgid "%s/%s: %s" -msgstr "%s: %s" +msgstr "%s/%s: %s" #: logsrvd/logsrvd_local.c:618 msgid "randomly dropping connection" -msgstr "" +msgstr "случайный сброс соединения" #: logsrvd/logsrvd_local.c:630 msgid "error writing IoBuffer" -msgstr "" +msgstr "ошибка записи IoBuffer" #: logsrvd/logsrvd_local.c:665 msgid "error writing ChangeWindowSize" -msgstr "" +msgstr "ошибка записи ChangeWindowSize" #: logsrvd/logsrvd_local.c:700 msgid "error writing CommandSuspend" -msgstr "" +msgstr "ошибка записи CommandSuspend" -#: logsrvd/logsrvd_relay.c:435 +#: logsrvd/logsrvd_relay.c:437 msgid "TLS handshake with relay host failed" -msgstr "" +msgstr "Не удаётся согласовать TLS-подключение с узлом ретранслятора" -#: logsrvd/logsrvd_relay.c:463 -#, fuzzy -#| msgid "unable to connect to authentication server" +#: logsrvd/logsrvd_relay.c:465 msgid "unable to connect to relay host" -msgstr "не удаётся связаться с сервером аутентификации" +msgstr "не удаётся связаться с узлом ретранслятора" -#: logsrvd/logsrvd_relay.c:518 +#: logsrvd/logsrvd_relay.c:520 #, c-format msgid "%s: invalid ServerHello, missing server_id" -msgstr "" +msgstr "%s: некорректный ServerHello, отсутствует server_id" -#: logsrvd/logsrvd_relay.c:520 logsrvd/sendlog.c:1096 -#: plugins/sudoers/log_client.c:1469 +#: logsrvd/logsrvd_relay.c:522 logsrvd/sendlog.c:1105 +#: plugins/sudoers/log_client.c:1476 msgid "invalid ServerHello" -msgstr "" +msgstr "некорректный ServerHello" -#: logsrvd/logsrvd_relay.c:679 +#: logsrvd/logsrvd_relay.c:681 msgid "unrecognized ServerMessage type" -msgstr "" +msgstr "нераспознанный тип ServerMessage" -#: logsrvd/logsrvd_relay.c:708 +#: logsrvd/logsrvd_relay.c:710 #, c-format msgid "timed out reading from relay %s (%s)" -msgstr "" +msgstr "превышено время ожидания чтения от ретранслятора %s (%s)" -#: logsrvd/logsrvd_relay.c:710 +#: logsrvd/logsrvd_relay.c:712 msgid "timeout reading from relay" -msgstr "" +msgstr "превышено время ожидания чтения от ретранслятора" -#: logsrvd/logsrvd_relay.c:762 +#: logsrvd/logsrvd_relay.c:764 msgid "relay host name does not match certificate" -msgstr "" +msgstr "имя узла ретранслятора не соответствует сертификату" -#: logsrvd/logsrvd_relay.c:768 logsrvd/logsrvd_relay.c:782 -#: logsrvd/logsrvd_relay.c:789 +#: logsrvd/logsrvd_relay.c:770 logsrvd/logsrvd_relay.c:784 +#: logsrvd/logsrvd_relay.c:791 msgid "error reading from relay" -msgstr "" +msgstr "ошибка чтения от ретранслятора" -#: logsrvd/logsrvd_relay.c:810 -#, fuzzy -#| msgid "unable to read the clock" +#: logsrvd/logsrvd_relay.c:812 msgid "unable to read from relay" -msgstr "не удаётся прочитать часы" +msgstr "не удаётся прочитать данные от ретранслятора" -#: logsrvd/logsrvd_relay.c:825 logsrvd/logsrvd_relay.c:943 +#: logsrvd/logsrvd_relay.c:827 logsrvd/logsrvd_relay.c:945 msgid "relay server closed connection" -msgstr "" +msgstr "сервер ретранслятора закрыл подключение" -#: logsrvd/logsrvd_relay.c:843 +#: logsrvd/logsrvd_relay.c:845 msgid "server message too large" -msgstr "" +msgstr "сообщение сервера слишком большое" -#: logsrvd/logsrvd_relay.c:907 +#: logsrvd/logsrvd_relay.c:909 #, c-format msgid "timed out writing to relay %s (%s)" -msgstr "" +msgstr "превышено время ожидания записи данных ретранслятору %s (%s)" -#: logsrvd/logsrvd_relay.c:909 +#: logsrvd/logsrvd_relay.c:911 msgid "timeout writing to relay" -msgstr "" +msgstr "превышено время ожидания записи данных ретранслятору" -#: logsrvd/logsrvd_relay.c:962 logsrvd/logsrvd_relay.c:969 -#: logsrvd/logsrvd_relay.c:981 +#: logsrvd/logsrvd_relay.c:964 logsrvd/logsrvd_relay.c:971 +#: logsrvd/logsrvd_relay.c:983 msgid "error writing to relay" -msgstr "" +msgstr "ошибка записи данных ретранслятору" #: logsrvd/sendlog.c:119 msgid "send sudo I/O log to remote server" -msgstr "" +msgstr "отправка журнала ввода/вывода sudo на удалённый сервер" #: logsrvd/sendlog.c:125 msgid "only send an accept event (no I/O)" -msgstr "" +msgstr "отправлять только событие принятия (без ввода/вывода)" #: logsrvd/sendlog.c:128 msgid "certificate bundle file to verify server's cert against" -msgstr "" +msgstr "файл пакета сертификатов для проверки сертификата сервера" #: logsrvd/sendlog.c:130 msgid "certificate file for TLS handshake" -msgstr "" +msgstr "файл сертификата для согласования TLS" #: logsrvd/sendlog.c:133 msgid "host to send logs to" -msgstr "" +msgstr "узел для отправки журналов" #: logsrvd/sendlog.c:135 msgid "remote ID of I/O log to be resumed" -msgstr "" +msgstr "удалённый идентификатор журнала ввода/вывода, который следует продолжить" #: logsrvd/sendlog.c:138 msgid "private key file" -msgstr "" +msgstr "файл закрытого ключа" #: logsrvd/sendlog.c:140 msgid "do not verify server certificate" -msgstr "" +msgstr "не проверять сертификат сервера" #: logsrvd/sendlog.c:143 msgid "port to use when connecting to host" -msgstr "" +msgstr "порт, используемый при подключении к узлу" #: logsrvd/sendlog.c:145 msgid "restart previous I/O log transfer" -msgstr "" +msgstr "перезапустить предыдущую передачу журнала ввода/вывода" #: logsrvd/sendlog.c:147 msgid "reject the command with the given reason" -msgstr "" +msgstr "отклонить команду по заданной причине" #: logsrvd/sendlog.c:149 msgid "stop transfer after reaching this time" -msgstr "" +msgstr "остановить отправку по достижению этого времени" #: logsrvd/sendlog.c:151 msgid "test audit server by sending selected I/O log n times in parallel" -msgstr "" +msgstr "проверить сервер аудита параллельной отправкой выбранного журнала ввода/вывода n раз" #: logsrvd/sendlog.c:176 plugins/sudoers/log_client.c:453 -#, fuzzy, c-format -#| msgid "unable to lock log file: %s: %s" +#, c-format msgid "unable to look up %s:%s: %s" -msgstr "не удаётся заблокировать файл журнала: %s: %s" +msgstr "не удаётся выполнить поиск %s:%s: %s" #: logsrvd/sendlog.c:214 msgid "unable to get server IP addr" -msgstr "" +msgstr "не удаётся получить IP-адрес сервера" -#: logsrvd/sendlog.c:300 plugins/sudoers/sudoreplay.c:871 -#, fuzzy, c-format -#| msgid "%s: unable to parse '%s': %s" +#: logsrvd/sendlog.c:309 plugins/sudoers/sudoreplay.c:868 +#, c-format msgid "unable to read %s/%s: %s" -msgstr "%s: не удаётся прочитать '%s': %s" +msgstr "не удаётся прочитать %s/%s: %s" -#: logsrvd/sendlog.c:1020 plugins/sudoers/iolog.c:951 -#: plugins/sudoers/iolog.c:1026 +#: logsrvd/sendlog.c:1029 plugins/sudoers/iolog.c:948 +#: plugins/sudoers/iolog.c:1023 #, c-format msgid "unexpected I/O event %d" -msgstr "" +msgstr "неожиданное событие ввода-вывода %d" -#: logsrvd/sendlog.c:1073 logsrvd/sendlog.c:1090 logsrvd/sendlog.c:1124 -#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1395 -#: plugins/sudoers/log_client.c:1463 plugins/sudoers/log_client.c:1502 +#: logsrvd/sendlog.c:1082 logsrvd/sendlog.c:1099 logsrvd/sendlog.c:1133 +#: plugins/sudoers/log_client.c:1126 plugins/sudoers/log_client.c:1402 +#: plugins/sudoers/log_client.c:1470 plugins/sudoers/log_client.c:1509 #, c-format msgid "%s: unexpected state %d" -msgstr "" +msgstr "%s: неожиданное состояние %d" -#: logsrvd/sendlog.c:1160 plugins/sudoers/log_client.c:1551 +#: logsrvd/sendlog.c:1169 plugins/sudoers/log_client.c:1558 #, c-format msgid "error message received from server: %s" -msgstr "" +msgstr "получено уведомление об ошибке от сервера: %s" -#: logsrvd/sendlog.c:1173 plugins/sudoers/log_client.c:1564 +#: logsrvd/sendlog.c:1182 plugins/sudoers/log_client.c:1571 #, c-format msgid "abort message received from server: %s" -msgstr "" +msgstr "получено уведомление о прерывании от сервера: %s" -#: logsrvd/sendlog.c:1232 plugins/sudoers/log_client.c:1614 +#: logsrvd/sendlog.c:1241 plugins/sudoers/log_client.c:1621 #, c-format msgid "%s: unexpected type_case value %d" -msgstr "" +msgstr "%s: неожиданное значение type_case %d" -#: logsrvd/sendlog.c:1261 +#: logsrvd/sendlog.c:1270 msgid "timeout reading from server" -msgstr "" +msgstr "превышено время ожидания чтения с сервера" -#: logsrvd/sendlog.c:1310 plugins/sudoers/log_client.c:1730 +#: logsrvd/sendlog.c:1319 plugins/sudoers/log_client.c:1743 msgid "host name does not match certificate" -msgstr "" +msgstr "имя узла не соответствует сертификату" -#: logsrvd/sendlog.c:1343 +#: logsrvd/sendlog.c:1352 msgid "premature EOF" -msgstr "" +msgstr "преждевременный EOF" -#: logsrvd/sendlog.c:1356 plugins/sudoers/log_client.c:1777 +#: logsrvd/sendlog.c:1365 plugins/sudoers/log_client.c:1790 #, c-format msgid "server message too large: %u" -msgstr "" +msgstr "сообщение сервера слишком большое: %u" -#: logsrvd/sendlog.c:1412 +#: logsrvd/sendlog.c:1421 msgid "timeout writing to server" -msgstr "" +msgstr "превышено время ожидания записи на сервер" -#: logsrvd/sendlog.c:1779 +#: logsrvd/sendlog.c:1788 msgid "both restart point and iolog ID must be specified" -msgstr "" +msgstr "должна быть указана как точка перезапуска, так и идентификатор журнала ввода-вывода" -#: logsrvd/sendlog.c:1783 +#: logsrvd/sendlog.c:1792 msgid "a restart point may not be set when no I/O is sent" -msgstr "" +msgstr "точка перезапуска не может быть установлена, когда не отправляются данные ввода/вывода" -#: logsrvd/sendlog.c:1859 +#: logsrvd/sendlog.c:1868 #, c-format msgid "exited prematurely with state %d" -msgstr "" +msgstr "преждевременный выход из состояния %d" -#: logsrvd/sendlog.c:1860 +#: logsrvd/sendlog.c:1869 #, c-format msgid "elapsed time sent to server [%lld, %ld]" -msgstr "" +msgstr "истёкшее время отправлено на сервер [%lld, %ld]" -#: logsrvd/sendlog.c:1862 +#: logsrvd/sendlog.c:1871 #, c-format msgid "commit point received from server [%lld, %ld]" -msgstr "" +msgstr "точка фиксации получена от сервера [%lld, %ld]" #: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:315 msgid "TLS handshake timeout occurred" -msgstr "" +msgstr "время ожидания согласования TLS истекло" #: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 #: plugins/sudoers/log_client.c:337 plugins/sudoers/log_client.c:353 -#, fuzzy -#| msgid "unable to rebuild the environment" msgid "unable to set event" -msgstr "не удаётся перестроить среду" +msgstr "не удаётся назначить событие" #: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 -#, fuzzy, c-format -#| msgid "SecurID communication failed" +#, c-format msgid "TLS connection failed: %s" -msgstr "ошибка связи с SecurID" +msgstr "Не удаётся установить TLS-подключение: %s" #: logsrvd/tls_client.c:196 -#, fuzzy, c-format -#| msgid "%s: unable to allocate options: %s" +#, c-format msgid "unable to allocate ssl object: %s" -msgstr "%s: не удаётся выделить параметры: %s" +msgstr "не удаётся выделить память под SSL-объект: %s" #: logsrvd/tls_client.c:210 #, c-format msgid "Unable to attach socket to the ssl object: %s" -msgstr "" +msgstr "Не удаётся подключить сокет к объекту SSL: %s" #: logsrvd/tls_client.c:238 -#, fuzzy -#| msgid "unable to initialize SIA session" msgid "unable to initialize TLS context" -msgstr "не удаётся инициализировать сеанс SIA" +msgstr "не удаётся инициализировать контекст TLS" #: logsrvd/tls_init.c:138 logsrvd/tls_init.c:146 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" -msgstr "" +msgstr "не удаётся установить алгоритмы шифрования TLS 1.2 на %s: %s" #: logsrvd/tls_init.c:166 logsrvd/tls_init.c:174 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" -msgstr "" +msgstr "не удаётся установить алгоритмы шифрования TLS 1.3 на %s: %s" #: logsrvd/tls_init.c:206 logsrvd/tls_init.c:227 #, c-format msgid "unable to set diffie-hellman parameters: %s" -msgstr "" +msgstr "невозможно установить параметры Диффи-Хеллмана: %s" #: logsrvd/tls_init.c:283 -#, fuzzy, c-format -#| msgid "unable to read the clock" +#, c-format msgid "unable to create TLS context: %s" -msgstr "не удаётся прочитать часы" +msgstr "не удаётся создать TLS-контекст: %s" #: logsrvd/tls_init.c:290 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" -msgstr "" +msgstr "не удаётся установить минимальную версию протокола на TLS 1.2: %s" -#: plugins/sudoers/audit.c:269 plugins/sudoers/audit.c:429 -#: plugins/sudoers/log_client.c:951 plugins/sudoers/log_client.c:1000 -#: plugins/sudoers/log_client.c:1049 plugins/sudoers/log_client.c:1175 -#: plugins/sudoers/logging.c:591 plugins/sudoers/logging.c:689 -#: plugins/sudoers/logging.c:792 plugins/sudoers/logging.c:983 -#: plugins/sudoers/policy.c:124 -#, fuzzy -#| msgid "unable to read the clock" +#: plugins/sudoers/audit.c:268 plugins/sudoers/audit.c:428 +#: plugins/sudoers/log_client.c:959 plugins/sudoers/log_client.c:1008 +#: plugins/sudoers/log_client.c:1057 plugins/sudoers/log_client.c:1182 +#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:711 +#: plugins/sudoers/logging.c:833 plugins/sudoers/logging.c:1000 +#: plugins/sudoers/policy.c:123 msgid "unable to get time of day" -msgstr "не удаётся прочитать часы" +msgstr "не удаётся получить время" #: plugins/sudoers/auth/aix_auth.c:280 -#, fuzzy, c-format -#| msgid "unable to change expired password: %s" +#, c-format msgid "unable to change password for %s" -msgstr "не удаётся сменить устаревший пароль: %s" +msgstr "не удаётся изменить пароль для %s" -#: plugins/sudoers/auth/bsdauth.c:74 +#: plugins/sudoers/auth/bsdauth.c:77 #, c-format msgid "unable to get login class for user %s" msgstr "не удаётся получить класс логина для пользователя %s" -#: plugins/sudoers/auth/bsdauth.c:79 -msgid "unable to begin bsd authentication" -msgstr "не удаётся начать BSD-аутентификацию" - -#: plugins/sudoers/auth/bsdauth.c:87 +#: plugins/sudoers/auth/bsdauth.c:84 msgid "invalid authentication type" msgstr "некорректный тип аутентификации" +#: plugins/sudoers/auth/bsdauth.c:89 +msgid "unable to begin BSD authentication" +msgstr "не удаётся начать BSD-аутентификацию" + #: plugins/sudoers/auth/bsdauth.c:96 msgid "unable to initialize BSD authentication" msgstr "не удаётся запустить BSD-аутентификацию" -#: plugins/sudoers/auth/bsdauth.c:186 +#: plugins/sudoers/auth/bsdauth.c:188 msgid "your account has expired" -msgstr "" +msgstr "срок действия вашего аккаунта истёк" -#: plugins/sudoers/auth/bsdauth.c:188 +#: plugins/sudoers/auth/bsdauth.c:190 msgid "approval failed" -msgstr "" +msgstr "не удаётся подтвердить" #: plugins/sudoers/auth/fwtk.c:61 msgid "unable to read fwtk config" @@ -1552,7 +1484,7 @@ #: plugins/sudoers/auth/kerb5.c:115 #, c-format msgid "%s: unable to convert principal to string ('%s'): %s" -msgstr "%s: не удаётся преобразовать принципал в строку ('%s'): %s" +msgstr "%s: не удаётся преобразовать регистрационную запись в строку ('%s'): %s" #: plugins/sudoers/auth/kerb5.c:164 #, c-format @@ -1587,7 +1519,7 @@ #: plugins/sudoers/auth/kerb5.c:317 #, c-format msgid "%s: unable to get host principal: %s" -msgstr "%s: не удаётся получить принципал хоста: %s" +msgstr "%s: не удаётся получить регистрационную запись узла: %s" #: plugins/sudoers/auth/kerb5.c:331 #, c-format @@ -1595,10 +1527,9 @@ msgstr "%s: Не удаётся проверить TGT. Нас атакуют?!: %s" #: plugins/sudoers/auth/pam.c:224 -#, fuzzy, c-format -#| msgid "unable to initialize PAM" +#, c-format msgid "unable to initialize PAM: %s" -msgstr "не удаётся инициализировать PAM" +msgstr "не удаётся инициализировать PAM: %s" #: plugins/sudoers/auth/pam.c:337 #, c-format @@ -1627,10 +1558,9 @@ msgstr "Срок действия учётной записи истёк или в настройках PAM нет раздела «account» для sudo. Обратитесь к системному администратору" #: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402 -#, fuzzy, c-format -#| msgid "PAM authentication error: %s" +#, c-format msgid "PAM account management error: %s" -msgstr "Ошибка PAM-аутентификации: %s" +msgstr "Ошибка управления аккаунтом PAM: %s" #: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:271 #, c-format @@ -1639,35 +1569,35 @@ #: plugins/sudoers/auth/securid5.c:75 msgid "failed to initialise the ACE API library" -msgstr "не удалось инициализировать библиотеку API для ACE" +msgstr "не удаётся инициализировать библиотеку API для ACE" #: plugins/sudoers/auth/securid5.c:106 msgid "unable to contact the SecurID server" -msgstr "не удалось связаться с сервером SecurID" +msgstr "не удаётся связаться с сервером SecurID" #: plugins/sudoers/auth/securid5.c:115 msgid "User ID locked for SecurID Authentication" msgstr "ID пользователя заблокирован для аутентификации SecurID" -#: plugins/sudoers/auth/securid5.c:119 plugins/sudoers/auth/securid5.c:170 +#: plugins/sudoers/auth/securid5.c:119 plugins/sudoers/auth/securid5.c:171 msgid "invalid username length for SecurID" -msgstr "недопустимая длина имени пользователя для SecurID" +msgstr "некорректная длина имени пользователя для SecurID" -#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:175 +#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:176 msgid "invalid Authentication Handle for SecurID" -msgstr "недопустимый обработчик аутентификации для SecurID" +msgstr "некорректный обработчик аутентификации для SecurID" #: plugins/sudoers/auth/securid5.c:127 msgid "SecurID communication failed" msgstr "Ошибка связи с SecurID" -#: plugins/sudoers/auth/securid5.c:131 plugins/sudoers/auth/securid5.c:218 +#: plugins/sudoers/auth/securid5.c:131 plugins/sudoers/auth/securid5.c:219 msgid "unknown SecurID error" msgstr "неизвестная ошибка SecurID" -#: plugins/sudoers/auth/securid5.c:165 +#: plugins/sudoers/auth/securid5.c:166 msgid "invalid passcode length for SecurID" -msgstr "недопустимая длина пароля для SecurID" +msgstr "некорректная длина пароля для SecurID" #: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:126 msgid "unable to initialize SIA session" @@ -1675,7 +1605,7 @@ #: plugins/sudoers/auth/sudo_auth.c:135 msgid "invalid authentication methods" -msgstr "недопустимые методы аутентификации" +msgstr "некорректные методы аутентификации" #: plugins/sudoers/auth/sudo_auth.c:137 msgid "Invalid authentication methods compiled into sudo! You may not mix standalone and non-standalone authentication." @@ -1699,7 +1629,7 @@ #: plugins/sudoers/bsm_audit.c:123 plugins/sudoers/bsm_audit.c:214 msgid "Could not determine audit condition" -msgstr "Не удалось определить состояние аудита" +msgstr "Не удаётся определить состояние аудита" #: plugins/sudoers/bsm_audit.c:188 plugins/sudoers/bsm_audit.c:277 msgid "unable to commit audit record" @@ -1708,12 +1638,12 @@ #: plugins/sudoers/check.c:285 #, c-format msgid "error reading lecture file %s" -msgstr "" +msgstr "ошибка при чтении файла инструкции %s" #: plugins/sudoers/check.c:288 #, c-format msgid "ignoring lecture file %s: not a regular file" -msgstr "" +msgstr "игнорируем файл инструкции %s: не является обычным файлом" #: plugins/sudoers/check.c:301 msgid "" @@ -1735,14 +1665,21 @@ " №3) С большой властью приходит большая ответственность.\n" "\n" -#: plugins/sudoers/check.c:348 plugins/sudoers/check.c:358 -#: plugins/sudoers/parse.c:64 plugins/sudoers/sudoers.c:920 -#: plugins/sudoers/sudoers.c:941 plugins/sudoers/tsdump.c:119 +#: plugins/sudoers/check.c:309 +msgid "" +"For security reasons, the password you type will not be visible.\n" +"\n" +msgstr "" +"По соображениям безопасности пароль, который вы введёте, не будет виден.\n" +"\n" + +#: plugins/sudoers/check.c:353 plugins/sudoers/check.c:363 +#: plugins/sudoers/parse.c:80 plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid %u" -msgstr "неизвестный uid %u" +msgstr "неизвестный идентификатор пользователя %u" -#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1279 +#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1278 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" @@ -1750,103 +1687,100 @@ #: plugins/sudoers/check_aliases.c:133 #, c-format msgid "cycle in %s \"%s\"" -msgstr "" +msgstr "цикл в %s «%s»" #: plugins/sudoers/check_aliases.c:136 #, c-format msgid "%s \"%s\" referenced but not defined" -msgstr "" +msgstr "обнаружены ссылки на %s «%s», который не определён" -#: plugins/sudoers/cvtsudoers.c:209 +#: plugins/sudoers/cvtsudoers.c:210 #, c-format msgid "order increment: %s: %s" -msgstr "" +msgstr "шаг порядка: %s: %s" -#: plugins/sudoers/cvtsudoers.c:228 +#: plugins/sudoers/cvtsudoers.c:229 #, c-format msgid "starting order: %s: %s" -msgstr "" +msgstr "начальный порядок: %s: %s" -#: plugins/sudoers/cvtsudoers.c:238 +#: plugins/sudoers/cvtsudoers.c:239 #, c-format msgid "order padding: %s: %s" -msgstr "" +msgstr "дополнение порядка: %s: %s" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/visudo.c:184 +#: plugins/sudoers/cvtsudoers.c:249 plugins/sudoers/visudo.c:188 #, c-format msgid "%s grammar version %d\n" -msgstr "" +msgstr "%s грамматика версии %d\n" -#: plugins/sudoers/cvtsudoers.c:277 plugins/sudoers/testsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:278 plugins/sudoers/testsudoers.c:163 #, c-format msgid "unsupported input format %s" -msgstr "" +msgstr "неподдерживаемый формат ввода %s" -#: plugins/sudoers/cvtsudoers.c:295 +#: plugins/sudoers/cvtsudoers.c:296 #, c-format msgid "unsupported output format %s" -msgstr "" +msgstr "неподдерживаемый формат вывода %s" -#: plugins/sudoers/cvtsudoers.c:385 +#: plugins/sudoers/cvtsudoers.c:386 #, c-format msgid "%s: input and output files must be different" -msgstr "" +msgstr "%s: входные и выходные файлы должны отличаться" -#: plugins/sudoers/cvtsudoers.c:399 plugins/sudoers/sudoers.c:166 -#: plugins/sudoers/sudoers.c:222 plugins/sudoers/testsudoers.c:254 -#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:650 -#: plugins/sudoers/visudo.c:975 +#: plugins/sudoers/cvtsudoers.c:400 plugins/sudoers/sudoers.c:163 +#: plugins/sudoers/sudoers.c:221 plugins/sudoers/testsudoers.c:263 +#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:657 msgid "unable to initialize sudoers default values" msgstr "не удаётся инициализировать значения по умолчанию для sudoers" -#: plugins/sudoers/cvtsudoers.c:525 plugins/sudoers/ldap_conf.c:434 +#: plugins/sudoers/cvtsudoers.c:526 plugins/sudoers/ldap_conf.c:431 #, c-format msgid "%s: %s: %s: %s" -msgstr "" +msgstr "%s: %s: %s: %s" -#: plugins/sudoers/cvtsudoers.c:584 -#, fuzzy, c-format -#| msgid "unknown user: %s" +#: plugins/sudoers/cvtsudoers.c:605 +#, c-format msgid "%s: unknown key word %s" -msgstr "неизвестный пользователь: %s" +msgstr "%s: неизвестное ключевое слово %s" -#: plugins/sudoers/cvtsudoers.c:630 -#, fuzzy, c-format -#| msgid "invalid sudoOrder attribute: %s" +#: plugins/sudoers/cvtsudoers.c:651 +#, c-format msgid "invalid defaults type: %s" -msgstr "недопустимый атрибут sudoOrder: %s" +msgstr "некорректный тип значений по умолчанию: %s" -#: plugins/sudoers/cvtsudoers.c:653 -#, fuzzy, c-format -#| msgid "invalid authentication type" +#: plugins/sudoers/cvtsudoers.c:674 +#, c-format msgid "invalid suppression type: %s" -msgstr "некорректный тип аутентификации" +msgstr "некорректный тип подавления: %s" -#: plugins/sudoers/cvtsudoers.c:694 plugins/sudoers/cvtsudoers.c:710 -#, fuzzy, c-format -#| msgid "invalid sudoOrder attribute: %s" +#: plugins/sudoers/cvtsudoers.c:715 plugins/sudoers/cvtsudoers.c:731 +#, c-format msgid "invalid filter: %s" -msgstr "недопустимый атрибут sudoOrder: %s" +msgstr "некорректный фильтр: %s" -#: plugins/sudoers/cvtsudoers.c:754 plugins/sudoers/visudo.c:980 +#: plugins/sudoers/cvtsudoers.c:775 plugins/sudoers/visudo.c:992 #, c-format msgid "failed to parse %s file, unknown error" -msgstr "" +msgstr "не удаётся разобрать файл %s, неизвестная ошибка" -#: plugins/sudoers/cvtsudoers.c:1478 plugins/sudoers/sudoreplay.c:1145 -#: plugins/sudoers/timestamp.c:343 plugins/sudoers/timestamp.c:346 +#: plugins/sudoers/cvtsudoers.c:1499 plugins/sudoers/sudoreplay.c:1142 +#: plugins/sudoers/timestamp.c:368 plugins/sudoers/timestamp.c:371 #, c-format msgid "unable to write to %s" -msgstr "" +msgstr "не удаётся записать в %s" -#: plugins/sudoers/cvtsudoers.c:1506 +#: plugins/sudoers/cvtsudoers.c:1527 #, c-format msgid "" "%s - convert between sudoers file formats\n" "\n" msgstr "" +"%s - конвертировать между форматами файлов sudoers\n" +"\n" -#: plugins/sudoers/cvtsudoers.c:1508 +#: plugins/sudoers/cvtsudoers.c:1529 msgid "" "\n" "Options:\n" @@ -1867,106 +1801,141 @@ " -s, --suppress=sections suppress output of certain sections\n" " -V, --version display version information and exit" msgstr "" +"\n" +"Параметры:\n" +" -b, --base=dn базовый DN для запросов sudo к LDAP\n" +" -c, --config=файл путь к файлу настроек\n" +" -d, --defaults=deftypes конвертировать записи Defaults только указанных типов\n" +" -e, --expand-aliases раскрывать псевдонимы при конвертации\n" +" -f, --output-format=формат формат выходных данных: JSON, LDIF или sudoers\n" +" -i, --input-format=формат формат входных данных: LDIF или sudoers\n" +" -I, --increment=число значение, на которое следует увеличить каждый sudoOrder\n" +" -h, --help показать справку и выйти\n" +" -m, --match=фильтр показывать только записи, соответствующие фильтру\n" +" -M, --match-local устанавливать соответствие фильтра по базам данных passwd и group\n" +" -o, --output=выходной_файл записать преобразованные данные sudoers в файл\n" +" -O, --order-start=число начальное значение для первого sudoOrder\n" +" -p, --prune-matches удалить несоответствующие записи пользователей, групп и узлов\n" +" -P, --padding=число число, на которое следует увеличивать sudoOrder\n" +" -s, --suppress=секции подавить вывод определённых секций\n" +" -V, --version показать информацию о версии и выйти" -#: plugins/sudoers/cvtsudoers_csv.c:452 plugins/sudoers/cvtsudoers_csv.c:466 -#: plugins/sudoers/cvtsudoers_json.c:657 plugins/sudoers/cvtsudoers_json.c:672 +#: plugins/sudoers/cvtsudoers_csv.c:192 plugins/sudoers/cvtsudoers_csv.c:199 +#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 +#: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:340 +#: plugins/sudoers/env.c:347 plugins/sudoers/env.c:458 +#: plugins/sudoers/ldap.c:509 plugins/sudoers/ldap.c:626 +#: plugins/sudoers/ldap.c:999 plugins/sudoers/ldap_conf.c:219 +#: plugins/sudoers/ldap_conf.c:310 plugins/sudoers/ldap_util.c:486 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:461 +#: plugins/sudoers/policy.c:824 plugins/sudoers/policy.c:835 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 +#: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/sudoreplay.c:1339 plugins/sudoers/sudoreplay.c:1345 +#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/toke_util.c:213 toke.l:996 toke.l:1259 +#, c-format +msgid "internal error, %s overflow" +msgstr "внутренняя ошибка, переполнение %s" + +#: plugins/sudoers/cvtsudoers_csv.c:454 plugins/sudoers/cvtsudoers_csv.c:468 +#: plugins/sudoers/cvtsudoers_json.c:661 plugins/sudoers/cvtsudoers_json.c:676 #: plugins/sudoers/cvtsudoers_ldif.c:347 plugins/sudoers/cvtsudoers_ldif.c:360 -#: plugins/sudoers/ldap.c:510 +#: plugins/sudoers/ldap.c:493 msgid "unable to get GMT time" -msgstr "" +msgstr "не удаётся получить время по Гринвичу" -#: plugins/sudoers/cvtsudoers_csv.c:457 plugins/sudoers/cvtsudoers_csv.c:471 -#: plugins/sudoers/cvtsudoers_json.c:662 plugins/sudoers/cvtsudoers_json.c:677 +#: plugins/sudoers/cvtsudoers_csv.c:459 plugins/sudoers/cvtsudoers_csv.c:473 +#: plugins/sudoers/cvtsudoers_json.c:666 plugins/sudoers/cvtsudoers_json.c:681 #: plugins/sudoers/cvtsudoers_ldif.c:352 plugins/sudoers/cvtsudoers_ldif.c:365 -#: plugins/sudoers/ldap.c:518 +#: plugins/sudoers/ldap.c:501 msgid "unable to format timestamp" -msgstr "" +msgstr "не удаётся отформатировать метку времени" -#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:515 -#: plugins/sudoers/cvtsudoers_json.c:728 +#: plugins/sudoers/cvtsudoers_json.c:481 plugins/sudoers/cvtsudoers_json.c:516 +#: plugins/sudoers/cvtsudoers_json.c:732 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" -msgstr "" +msgstr "%s:%d:%d: неизвестная запись по умолчанию «%s»" #: plugins/sudoers/cvtsudoers_ldif.c:661 #, c-format msgid "too many sudoers entries, maximum %u" -msgstr "" +msgstr "слишком много записей sudoers, максимум %u" #: plugins/sudoers/cvtsudoers_ldif.c:704 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." -msgstr "" +msgstr "переменная окружения SUDOERS_BASE не задана и не указан параметр -b." #: plugins/sudoers/cvtsudoers_merge.c:273 #: plugins/sudoers/cvtsudoers_merge.c:309 #, c-format msgid "%s:%d:%d: converting host list to ALL" -msgstr "" +msgstr "%s:%d:%d: преобразуем список узлов в ALL" #: plugins/sudoers/cvtsudoers_merge.c:545 -#, fuzzy, c-format -#| msgid "unable to initialize LDAP: %s" +#, c-format msgid "unable to find alias %s" -msgstr "не удаётся инициализировать LDAP: %s" +msgstr "не удаётся найти псевдоним %s" #: plugins/sudoers/cvtsudoers_merge.c:548 #, c-format msgid "%s:%d:%d: renaming alias %s to %s" -msgstr "" +msgstr "%s:%d:%d: переименование псевдонима %s в %s" #: plugins/sudoers/cvtsudoers_merge.c:605 #, c-format msgid "%s:%d:%d: removing duplicate alias %s" -msgstr "" +msgstr "%s:%d:%d: удаление дубля псевдонима %s" #: plugins/sudoers/cvtsudoers_merge.c:830 #, c-format msgid "%s:%d:%d: conflicting Defaults entry \"%s\" host-specific in %s:%d:%d" -msgstr "" +msgstr "%s:%d:%d: конфликт записи Defaults «%s» специфичен для узла в %s:%d:%d" #: plugins/sudoers/cvtsudoers_merge.c:864 #, c-format msgid "%s:%d:%d: made Defaults \"%s\" specific to host %s" -msgstr "" +msgstr "%s:%d:%d: Defaults «%s» сделано специфичным для узла %s" #: plugins/sudoers/cvtsudoers_merge.c:882 #, c-format msgid "%s:%d:%d: unable to make Defaults \"%s\" host-specific" -msgstr "" +msgstr "%s:%d:%d: не удаётся сделать Defaults «%s» специфичным для узла" #: plugins/sudoers/cvtsudoers_merge.c:892 #, c-format msgid "%s:%d:%d: removing Defaults \"%s\" overridden by subsequent entries" -msgstr "" +msgstr "%s:%d:%d: удаление Defaults «%s» переопределено последующими записями" #: plugins/sudoers/cvtsudoers_merge.c:1088 #, c-format msgid "%s:%d:%d: merging userspec into %s:%d:%d" -msgstr "" +msgstr "%s:%d:%d: объединяем спецификации пользователей в %s:%d:%d" #: plugins/sudoers/cvtsudoers_merge.c:1182 #, c-format msgid "%s:%d:%d: removing userspec overridden by subsequent entries" -msgstr "" +msgstr "%s:%d:%d: удаление userpec переопределено последующими записями" #: plugins/sudoers/def_data.c:56 #, c-format msgid "Syslog facility if syslog is being used for logging: %s" -msgstr "" +msgstr "Средство Syslog, если syslog используется для ведения журнала: %s" #: plugins/sudoers/def_data.c:60 #, c-format msgid "Syslog priority to use when user authenticates successfully: %s" -msgstr "" +msgstr "Приоритет Syslog, который следует использовать при успешной аутентификации пользователя: %s" #: plugins/sudoers/def_data.c:64 #, c-format msgid "Syslog priority to use when user authenticates unsuccessfully: %s" -msgstr "" +msgstr "Приоритет Syslog, который следует использовать при неудачной аутентификации пользователя: %s" #: plugins/sudoers/def_data.c:68 msgid "Put OTP prompt on its own line" -msgstr "" +msgstr "Размещать запрос OTP в отдельной строке" #: plugins/sudoers/def_data.c:72 msgid "Ignore '.' in $PATH" @@ -1998,864 +1967,854 @@ #: plugins/sudoers/def_data.c:100 msgid "Use a separate timestamp for each user/tty combo" -msgstr "" +msgstr "Отдельная метка времени для каждой комбинации пользователь/tty" #: plugins/sudoers/def_data.c:104 msgid "Lecture user the first time they run sudo" -msgstr "" +msgstr "Показывать инструкцию пользователю при первом запуске sudo" #: plugins/sudoers/def_data.c:108 #, c-format msgid "File containing the sudo lecture: %s" -msgstr "" +msgstr "Файл, содержащий инструкцию по sudo: %s" #: plugins/sudoers/def_data.c:112 msgid "Require users to authenticate by default" -msgstr "" +msgstr "Требовать от пользователей аутентификацию по умолчанию" #: plugins/sudoers/def_data.c:116 msgid "Root may run sudo" -msgstr "" +msgstr "Root может запускать sudo" #: plugins/sudoers/def_data.c:120 msgid "Log the hostname in the (non-syslog) log file" -msgstr "" +msgstr "Записывать имя узла в файл журнала (не syslog)" #: plugins/sudoers/def_data.c:124 msgid "Log the year in the (non-syslog) log file" -msgstr "" +msgstr "Записывать год в файл журнала (не syslog)" #: plugins/sudoers/def_data.c:128 msgid "If sudo is invoked with no arguments, start a shell" -msgstr "" +msgstr "Если sudo вызывается без аргументов, запускать командную оболочку" #: plugins/sudoers/def_data.c:132 msgid "Set $HOME to the target user when starting a shell with -s" -msgstr "" +msgstr "Устанавливать $HOME на каталог целевого пользователя при запуске оболочки с -s" #: plugins/sudoers/def_data.c:136 msgid "Always set $HOME to the target user's home directory" -msgstr "" +msgstr "Всегда устанавливать $HOME на каталог целевого пользователя" #: plugins/sudoers/def_data.c:140 msgid "Allow some information gathering to give useful error messages" -msgstr "" +msgstr "Разрешить сбор информации для получения полезных сообщений об ошибках" #: plugins/sudoers/def_data.c:144 msgid "Require fully-qualified hostnames in the sudoers file" -msgstr "" +msgstr "Требовать полные имена узлов в файле sudoers" #: plugins/sudoers/def_data.c:148 msgid "Insult the user when they enter an incorrect password" -msgstr "" +msgstr "Издеваться над пользователем при вводе неправильного пароля" #: plugins/sudoers/def_data.c:152 msgid "Only allow the user to run sudo if they have a tty" -msgstr "" +msgstr "Разрешить пользователю запускать sudo, только если у него есть tty" #: plugins/sudoers/def_data.c:156 msgid "Visudo will honor the EDITOR environment variable" -msgstr "" +msgstr "Visudo будет использовать переменную окружения EDITOR" #: plugins/sudoers/def_data.c:160 msgid "Prompt for root's password, not the users's" -msgstr "" +msgstr "Запрашивать пароль root, а не пользователя" #: plugins/sudoers/def_data.c:164 msgid "Prompt for the runas_default user's password, not the users's" -msgstr "" +msgstr "Запрашивать пароль пользователя runas_default, а не самого пользователя" #: plugins/sudoers/def_data.c:168 msgid "Prompt for the target user's password, not the users's" -msgstr "" +msgstr "Запрашивать пароль целевого пользователя, а не самого пользователя" #: plugins/sudoers/def_data.c:172 msgid "Apply defaults in the target user's login class if there is one" -msgstr "" +msgstr "Применить значения по умолчанию в классе целевого пользователя, если он есть" #: plugins/sudoers/def_data.c:176 msgid "Set the LOGNAME and USER environment variables" -msgstr "" +msgstr "Установить переменные окружения LOGNAME и USER" #: plugins/sudoers/def_data.c:180 msgid "Only set the effective uid to the target user, not the real uid" -msgstr "" +msgstr "Установить только эффективный uid равным целевому пользователю, без реального uid" #: plugins/sudoers/def_data.c:184 msgid "Don't initialize the group vector to that of the target user" -msgstr "" +msgstr "Не инициализировать вектор группы на вектор целевого пользователя" #: plugins/sudoers/def_data.c:188 #, c-format msgid "Length at which to wrap log file lines (0 for no wrap): %u" -msgstr "" +msgstr "Длина, на которой переносить строки файла журнала (0 ­— без переноса): %u" #: plugins/sudoers/def_data.c:192 #, c-format msgid "Authentication timestamp timeout: %.1f minutes" -msgstr "" +msgstr "Время ожидания метки времени аутентификации: %.1f минут" #: plugins/sudoers/def_data.c:196 #, c-format msgid "Password prompt timeout: %.1f minutes" -msgstr "" +msgstr "Время ожидания запроса пароля: %.1f минут" #: plugins/sudoers/def_data.c:200 #, c-format msgid "Number of tries to enter a password: %u" -msgstr "" +msgstr "Количество попыток ввода пароля: %u" #: plugins/sudoers/def_data.c:204 #, c-format msgid "Umask to use or 0777 to use user's: 0%o" -msgstr "" +msgstr "Значение umask или 0777 для применения пользовательского значения: 0%o" #: plugins/sudoers/def_data.c:208 #, c-format msgid "Path to log file: %s" -msgstr "" +msgstr "Путь к файлу журнала: %s" #: plugins/sudoers/def_data.c:212 #, c-format msgid "Path to mail program: %s" -msgstr "" +msgstr "Путь к почтовой программе: %s" #: plugins/sudoers/def_data.c:216 #, c-format msgid "Flags for mail program: %s" -msgstr "" +msgstr "Флаги для почтовой программы: %s" #: plugins/sudoers/def_data.c:220 #, c-format msgid "Address to send mail to: %s" -msgstr "" +msgstr "Адрес для отправки почты: %s" #: plugins/sudoers/def_data.c:224 #, c-format msgid "Address to send mail from: %s" -msgstr "" +msgstr "Адрес для отправки почты от: %s" #: plugins/sudoers/def_data.c:228 #, c-format msgid "Subject line for mail messages: %s" -msgstr "" +msgstr "Тема письма: %s" #: plugins/sudoers/def_data.c:232 #, c-format msgid "Incorrect password message: %s" -msgstr "" +msgstr "Сообщение о некорректном пароле: %s" #: plugins/sudoers/def_data.c:236 #, c-format msgid "Path to lecture status dir: %s" -msgstr "" +msgstr "Путь к каталогу состояния обучения: %s" #: plugins/sudoers/def_data.c:240 #, c-format msgid "Path to authentication timestamp dir: %s" -msgstr "" +msgstr "Путь к каталогу меток времени аутентификации: %s" #: plugins/sudoers/def_data.c:244 #, c-format msgid "Owner of the authentication timestamp dir: %s" -msgstr "" +msgstr "Владелец каталога меток времени аутентификации: %s" #: plugins/sudoers/def_data.c:248 #, c-format msgid "Users in this group are exempt from password and PATH requirements: %s" -msgstr "" +msgstr "Пользователи этой группы освобождены от необходимости ввода пароля и PATH: %s" #: plugins/sudoers/def_data.c:252 #, c-format msgid "Default password prompt: %s" -msgstr "" +msgstr "Подсказка пароля по умолчанию: %s" #: plugins/sudoers/def_data.c:256 msgid "If set, passprompt will override system prompt in all cases." -msgstr "" +msgstr "Если установлено, запрос пароля будет заменять запрос системы." #: plugins/sudoers/def_data.c:260 #, c-format msgid "Default user to run commands as: %s" -msgstr "" +msgstr "Пользователь по умолчанию для выполнения команд: %s" #: plugins/sudoers/def_data.c:264 #, c-format msgid "Value to override user's $PATH with: %s" -msgstr "" +msgstr "Значение для переопределения $PATH пользователя: %s" #: plugins/sudoers/def_data.c:268 #, c-format msgid "Path to the editor for use by visudo: %s" -msgstr "" +msgstr "Путь к редактору для использования visudo: %s" #: plugins/sudoers/def_data.c:272 #, c-format msgid "When to require a password for 'list' pseudocommand: %s" -msgstr "" +msgstr "Когда требовать пароль для псевдокоманды «list»: %s" #: plugins/sudoers/def_data.c:276 #, c-format msgid "When to require a password for 'verify' pseudocommand: %s" -msgstr "" +msgstr "Когда требовать пароль для псевдокоманды «verify»: %s" #: plugins/sudoers/def_data.c:280 msgid "Preload the sudo_noexec library which replaces the exec functions" -msgstr "" +msgstr "Предварительно загрузить библиотеку sudo_noexec, заменяющую функции выполнения" #: plugins/sudoers/def_data.c:284 msgid "If LDAP directory is up, do we ignore local sudoers file" -msgstr "" +msgstr "Игнорировать ли локальный файл sudoers, если есть доступ к каталогу LDAP" #: plugins/sudoers/def_data.c:288 #, c-format msgid "File descriptors >= %d will be closed before executing a command" -msgstr "" +msgstr "Дескрипторы файлов >= %d будут закрыты перед выполнением команды" #: plugins/sudoers/def_data.c:292 msgid "If set, users may override the value of \"closefrom\" with the -C option" -msgstr "" +msgstr "Если установлено, пользователи могут переопределять значение closefrom с помощью параметра -C" #: plugins/sudoers/def_data.c:296 msgid "Allow users to set arbitrary environment variables" -msgstr "" +msgstr "Разрешить пользователям устанавливать произвольные переменные окружения" #: plugins/sudoers/def_data.c:300 msgid "Reset the environment to a default set of variables" -msgstr "" +msgstr "Сбрасывать окружение к набору переменных по умолчанию" #: plugins/sudoers/def_data.c:304 msgid "Environment variables to check for safety:" -msgstr "" +msgstr "Переменные окружения, безопасность которых следует проверить:" #: plugins/sudoers/def_data.c:308 msgid "Environment variables to remove:" -msgstr "" +msgstr "Переменные окружения, которые необходимо удалить:" #: plugins/sudoers/def_data.c:312 msgid "Environment variables to preserve:" -msgstr "" +msgstr "Переменные окружения, которые необходимо сохранить:" #: plugins/sudoers/def_data.c:316 #, c-format msgid "SELinux role to use in the new security context: %s" -msgstr "" +msgstr "Роль SELinux для использования в новом контексте безопасности: %s" #: plugins/sudoers/def_data.c:320 #, c-format msgid "SELinux type to use in the new security context: %s" -msgstr "" +msgstr "Тип SELinux для использования в новом контексте безопасности: %s" #: plugins/sudoers/def_data.c:324 #, c-format msgid "Path to the sudo-specific environment file: %s" -msgstr "" +msgstr "Путь к специфическому для sudo файлу окружения: %s" #: plugins/sudoers/def_data.c:328 #, c-format msgid "Path to the restricted sudo-specific environment file: %s" -msgstr "" +msgstr "Путь к специфическому для sudo файлу окружения с ограниченным доступом: %s" #: plugins/sudoers/def_data.c:332 #, c-format msgid "Locale to use while parsing sudoers: %s" -msgstr "" +msgstr "Локаль, которую следует использовать при разборе sudoers: %s" #: plugins/sudoers/def_data.c:336 msgid "Allow sudo to prompt for a password even if it would be visible" -msgstr "" +msgstr "Разрешить sudo запрашивать пароль, даже если он будет виден" #: plugins/sudoers/def_data.c:340 msgid "Provide visual feedback at the password prompt when there is user input" -msgstr "" +msgstr "Сопровождать ввод пароля показом заменителей символов пароля" #: plugins/sudoers/def_data.c:344 msgid "Use faster globbing that is less accurate but does not access the filesystem" -msgstr "" +msgstr "Использовать быструю подстановку путей, которая менее точна, но не требует доступа к файловой системе" #: plugins/sudoers/def_data.c:348 msgid "The umask specified in sudoers will override the user's, even if it is more permissive" -msgstr "" +msgstr "Значение umask, указанное в sudoers, будет переопределять значения пользователя, даже если это открывает более широкий доступ" #: plugins/sudoers/def_data.c:352 msgid "Log user's input for the command being run" -msgstr "" +msgstr "Записывать в журнал данные, введённые пользователем для выполнения команды" #: plugins/sudoers/def_data.c:356 msgid "Log the command's standard input if not connected to a terminal" -msgstr "" +msgstr "Записывать в журнал данные из стандартного ввода команды, если она не соединена с терминалом" #: plugins/sudoers/def_data.c:360 msgid "Log the user's terminal input for the command being run" -msgstr "" +msgstr "Записывать в журнал данные, вводимые пользователем в терминал при выполнении команды" #: plugins/sudoers/def_data.c:364 msgid "Log the output of the command being run" -msgstr "" +msgstr "Записывать в журнал вывод выполняемой команды" #: plugins/sudoers/def_data.c:368 msgid "Log the command's standard output if not connected to a terminal" -msgstr "" +msgstr "Записывать в журнал стандартный вывод команды, если она не подключена к терминалу" #: plugins/sudoers/def_data.c:372 msgid "Log the command's standard error if not connected to a terminal" -msgstr "" +msgstr "Записывать в журнал стандартный вывод ошибок команды, если она не подключена к терминалу" #: plugins/sudoers/def_data.c:376 msgid "Log the terminal output of the command being run" -msgstr "" +msgstr "Записывать в журнал данные, выведенные командой в терминал во время выполнения" #: plugins/sudoers/def_data.c:380 msgid "Compress I/O logs using zlib" -msgstr "" +msgstr "Сжимать журналы ввода/вывода с помощью zlib" #: plugins/sudoers/def_data.c:384 msgid "Always run commands in a pseudo-tty" -msgstr "" +msgstr "Всегда запускать команды в псевдо-tty" #: plugins/sudoers/def_data.c:388 #, c-format msgid "Plugin for non-Unix group support: %s" -msgstr "" +msgstr "Модель для поддержки не-Unix групп: %s" #: plugins/sudoers/def_data.c:392 #, c-format msgid "Directory in which to store input/output logs: %s" -msgstr "" +msgstr "Каталог, в котором будут храниться журналы ввода/вывода: %s" #: plugins/sudoers/def_data.c:396 #, c-format msgid "File in which to store the input/output log: %s" -msgstr "" +msgstr "Файл, в который будет сохраняться журнал ввода/вывода: %s" #: plugins/sudoers/def_data.c:400 msgid "Add an entry to the utmp/utmpx file when allocating a pty" -msgstr "" +msgstr "Добавлять запись в файл utmp/utmpx при выделении pty" #: plugins/sudoers/def_data.c:404 msgid "Set the user in utmp to the runas user, not the invoking user" -msgstr "" +msgstr "Установить пользователя в utmp в значение runas, а не имя пользователя, от имени которого выполняется команда" #: plugins/sudoers/def_data.c:408 #, c-format msgid "Set of permitted privileges: %s" -msgstr "" +msgstr "Набор разрешённых прав доступа: %s" #: plugins/sudoers/def_data.c:412 #, c-format msgid "Set of limit privileges: %s" -msgstr "" +msgstr "Набор ограничительных прав доступа: %s" #: plugins/sudoers/def_data.c:416 msgid "Run commands on a pty in the background" -msgstr "" +msgstr "Выполнять команды на pty в фоновом режиме" #: plugins/sudoers/def_data.c:420 #, c-format msgid "PAM service name to use: %s" -msgstr "" +msgstr "Название службы PAM, которую следует использовать: %s" #: plugins/sudoers/def_data.c:424 #, c-format msgid "PAM service name to use for login shells: %s" -msgstr "" +msgstr "Название службы PAM, которую следует использовать для оболочек входа в систему: %s" #: plugins/sudoers/def_data.c:428 #, c-format msgid "PAM service name to use when sudo is run with the -A option: %s" -msgstr "" +msgstr "Название службы PAM, которую следует использовать, когда sudo запущен с параметром -A: %s" #: plugins/sudoers/def_data.c:432 msgid "Attempt to establish PAM credentials for the target user" -msgstr "" +msgstr "Попытаться установить регистрационные данные PAM для пользователя, от имени которого будут выполняться команды" #: plugins/sudoers/def_data.c:436 msgid "Create a new PAM session for the command to run in" -msgstr "" +msgstr "Создать сеанс PAM для выполнения команды" #: plugins/sudoers/def_data.c:440 msgid "Perform PAM account validation management" -msgstr "" +msgstr "Выполнять проверку корректности учётной записи PAM" #: plugins/sudoers/def_data.c:444 #, c-format msgid "Maximum I/O log sequence number: %s" -msgstr "" +msgstr "Максимальный номер в журнале ввода/вывода: %s" #: plugins/sudoers/def_data.c:448 msgid "Enable sudoers netgroup support" -msgstr "" +msgstr "Включить поддержку сетевых групп в sudoers" #: plugins/sudoers/def_data.c:452 msgid "Check parent directories for writability when editing files with sudoedit" -msgstr "" +msgstr "Проверять родительские каталоги на возможность записи при редактировании файлов с помощью sudoedit" #: plugins/sudoers/def_data.c:456 msgid "Follow symbolic links when editing files with sudoedit" -msgstr "" +msgstr "Переходить по символическим ссылкам при редактировании файлов с помощью sudoedit" #: plugins/sudoers/def_data.c:460 msgid "Query the group plugin for unknown system groups" -msgstr "" +msgstr "Отправлять запрос в модуль групп по неизвестным группам системы" #: plugins/sudoers/def_data.c:464 msgid "Match netgroups based on the entire tuple: user, host and domain" -msgstr "" +msgstr "Устанавливать соответствие сетевым группам по всему кортежу данных: пользователю, узлу и домену" #: plugins/sudoers/def_data.c:468 msgid "Allow commands to be run even if sudo cannot write to the audit log" -msgstr "" +msgstr "Разрешить выполнение команд, даже если sudo не может записать в журнал аудита" #: plugins/sudoers/def_data.c:472 msgid "Allow commands to be run even if sudo cannot write to the I/O log" -msgstr "" +msgstr "Разрешить выполнение команд, даже если sudo не может записать в журнал ввода/вывода" #: plugins/sudoers/def_data.c:476 msgid "Allow commands to be run even if sudo cannot write to the log file" -msgstr "" +msgstr "Разрешить выполнение команд, даже если sudo не может записать в файл журнала" #: plugins/sudoers/def_data.c:480 msgid "Resolve groups in sudoers and match on the group ID, not the name" -msgstr "" +msgstr "Определять группы в sudoers и устанавливать соответствие по идентификатору группы, а не названию" #: plugins/sudoers/def_data.c:484 #, c-format msgid "Log entries larger than this value will be split into multiple syslog messages: %u" -msgstr "" +msgstr "Записи журнала, превышающие это значение, будут разделены на несколько сообщений syslog: %u" #: plugins/sudoers/def_data.c:488 #, c-format msgid "User that will own the I/O log files: %s" -msgstr "" +msgstr "Пользователь, который будет владеть файлами журнала ввода/вывода: %s" #: plugins/sudoers/def_data.c:492 #, c-format msgid "Group that will own the I/O log files: %s" -msgstr "" +msgstr "Группа, которая будет владеть файлами журнала ввода/вывода: %s" #: plugins/sudoers/def_data.c:496 #, c-format msgid "File mode to use for the I/O log files: 0%o" -msgstr "" +msgstr "Режим доступа к файлам журнала ввода/вывода: 0%o" #: plugins/sudoers/def_data.c:500 #, c-format msgid "Execute commands by file descriptor instead of by path: %s" -msgstr "" +msgstr "Выполнять команды по дескриптору файла, а не пути: %s" #: plugins/sudoers/def_data.c:504 msgid "Ignore unknown Defaults entries in sudoers instead of producing a warning" -msgstr "" +msgstr "Игнорировать неизвестные записи Defaults в sudoers вместо показа предупреждения" #: plugins/sudoers/def_data.c:508 #, c-format msgid "Time in seconds after which the command will be terminated: %u" -msgstr "" +msgstr "Время в секундах, после которого выполнение команды будет прервано: %u" #: plugins/sudoers/def_data.c:512 msgid "Allow the user to specify a timeout on the command line" -msgstr "" +msgstr "Разрешить пользователю указывать время ожидания в командной строке" #: plugins/sudoers/def_data.c:516 msgid "Flush I/O log data to disk immediately instead of buffering it" -msgstr "" +msgstr "Сбрасывать данные журнала ввода/вывода на диск немедленно, без буферизации" #: plugins/sudoers/def_data.c:520 msgid "Include the process ID when logging via syslog" -msgstr "" +msgstr "Включать идентификатор процесса в журнал syslog" #: plugins/sudoers/def_data.c:524 -#, fuzzy, c-format -#| msgid "no authentication methods" +#, c-format msgid "Type of authentication timestamp record: %s" -msgstr "методы аутентификации отсутствуют" +msgstr "Тип записи временной метки аутентификации: %s" #: plugins/sudoers/def_data.c:528 -#, fuzzy, c-format -#| msgid "Authentication methods:" +#, c-format msgid "Authentication failure message: %s" -msgstr "Методы аутентификации:" +msgstr "Сообщение об ошибке аутентификации: %s" #: plugins/sudoers/def_data.c:532 msgid "Ignore case when matching user names" -msgstr "" +msgstr "Игнорировать регистр при сопоставлении имён пользователей" #: plugins/sudoers/def_data.c:536 msgid "Ignore case when matching group names" -msgstr "" +msgstr "Игнорировать регистр при сопоставлении имён групп" #: plugins/sudoers/def_data.c:540 msgid "Log when a command is allowed by sudoers" -msgstr "" +msgstr "Записывать в журнал, когда выполнение команды разрешено sudoers" #: plugins/sudoers/def_data.c:544 msgid "Log when a command is denied by sudoers" -msgstr "" +msgstr "Записывать в журнал, когда выполнение команды заблокировано sudoers" #: plugins/sudoers/def_data.c:548 msgid "Sudo log server(s) to connect to with optional port" -msgstr "" +msgstr "Сервер(ы) журнала sudo с необязательным портом, к которым следует установить подключение" #: plugins/sudoers/def_data.c:552 #, c-format msgid "Sudo log server timeout in seconds: %u" -msgstr "" +msgstr "Время ожидания сервера журнала sudo в секундах: %u" #: plugins/sudoers/def_data.c:556 msgid "Enable SO_KEEPALIVE socket option on the socket connected to the logserver" -msgstr "" +msgstr "Включить опцию SO_KEEPALIVE на сокете, подключенном к серверу журналов" #: plugins/sudoers/def_data.c:560 #, c-format msgid "Path to the audit server's CA bundle file: %s" -msgstr "" +msgstr "Путь к файлу пакета CA сервера аудита: %s" #: plugins/sudoers/def_data.c:564 #, c-format msgid "Path to the sudoers certificate file: %s" -msgstr "" +msgstr "Путь к файлу сертификата sudoers: %s" #: plugins/sudoers/def_data.c:568 #, c-format msgid "Path to the sudoers private key file: %s" -msgstr "" +msgstr "Путь к файлу закрытого ключа sudoers: %s" #: plugins/sudoers/def_data.c:572 msgid "Verify that the log server's certificate is valid" -msgstr "" +msgstr "Проверять, что сертификат сервера журнала действителен" #: plugins/sudoers/def_data.c:576 msgid "Allow the use of unknown runas user and/or group ID" -msgstr "" +msgstr "Разрешить использование неизвестного идентификатора пользователя и/или группы для runas" #: plugins/sudoers/def_data.c:580 msgid "Only permit running commands as a user with a valid shell" -msgstr "" +msgstr "Разрешить выполнение команд только от имени пользователя с корректной оболочкой" #: plugins/sudoers/def_data.c:584 msgid "Set the pam remote user to the user running sudo" -msgstr "" +msgstr "Установить для удалённого пользователя PAM то же имя, что и для пользователя, от имени которого запущен sudo" #: plugins/sudoers/def_data.c:588 msgid "Set the pam remote host to the local host name" -msgstr "" +msgstr "Установить для удалённого узла PAM название локального узла" #: plugins/sudoers/def_data.c:592 #, c-format msgid "Working directory to change to before executing the command: %s" -msgstr "" +msgstr "Рабочий каталог, в который следует перейти перед выполнением команды: %s" #: plugins/sudoers/def_data.c:596 #, c-format msgid "Root directory to change to before executing the command: %s" -msgstr "" +msgstr "Корневой каталог, в который следует перейти перед выполнением команды: %s" #: plugins/sudoers/def_data.c:600 #, c-format msgid "The format of logs to produce: %s" -msgstr "" +msgstr "Формат журнала: %s" #: plugins/sudoers/def_data.c:604 msgid "Enable SELinux RBAC support" -msgstr "" +msgstr "Включить поддержку SELinux RBAC" #: plugins/sudoers/def_data.c:608 #, c-format msgid "Path to the file that is created the first time sudo is run: %s" -msgstr "" +msgstr "Путь к файлу, который создаётся при первом запуске sudo: %s" #: plugins/sudoers/def_data.c:612 msgid "Intercept further commands and apply sudoers restrictions to them" -msgstr "" +msgstr "Перехватывать дальнейшие команды и применять к ним ограничения sudoers" #: plugins/sudoers/def_data.c:616 msgid "Log sub-commands run by the original command" -msgstr "" +msgstr "Записывать в журнал подкоманды, выполняемые исходной командой" #: plugins/sudoers/def_data.c:620 msgid "Log the exit status of commands" -msgstr "" +msgstr "Записывать в журнал статус выхода команд" #: plugins/sudoers/def_data.c:624 msgid "Subsequent commands in an intercepted session must be authenticated" -msgstr "" +msgstr "Для выполнения следующих команд в перехваченном сеансе необходимо пройти аутентификацию" #: plugins/sudoers/def_data.c:628 msgid "Allow an intercepted command to run set setuid or setgid programs" -msgstr "" +msgstr "Разрешить перехваченной команде запускать программы, выполняющие setuid или setgid" #: plugins/sudoers/def_data.c:632 #, c-format msgid "The maximum size to which the process's address space may grow (in bytes): %s" -msgstr "" +msgstr "Максимальный размер, до которого может увеличиваться адресное пространство процесса (в байтах): %s" #: plugins/sudoers/def_data.c:636 #, c-format msgid "The largest size core dump file that may be created (in bytes): %s" -msgstr "" +msgstr "Наибольший размер файла дампа ядра, который может быть создан (в байтах): %s" #: plugins/sudoers/def_data.c:640 #, c-format msgid "The maximum amount of CPU time that the process may use (in seconds): %s" -msgstr "" +msgstr "Максимальное количество процессорного времени, которое процесс может использовать (в секундах): %s" #: plugins/sudoers/def_data.c:644 #, c-format msgid "The maximum size of the data segment for the process (in bytes): %s" -msgstr "" +msgstr "Максимальный размер сегмента данных процесса (в байтах): %s" #: plugins/sudoers/def_data.c:648 #, c-format msgid "The largest size file that the process may create (in bytes): %s" -msgstr "" +msgstr "Наибольший размер файла, который процесс может создать (в байтах): %s" #: plugins/sudoers/def_data.c:652 #, c-format msgid "The maximum number of locks that the process may establish: %s" -msgstr "" +msgstr "Максимальное количество блокировок, которые может установить процесс: %s" #: plugins/sudoers/def_data.c:656 #, c-format msgid "The maximum size that the process may lock in memory (in bytes): %s" -msgstr "" +msgstr "Максимальный размер, который процесс может заблокировать в памяти (в байтах): %s" #: plugins/sudoers/def_data.c:660 #, c-format msgid "The maximum number of files that the process may have open: %s" -msgstr "" +msgstr "Максимальное количество файлов, которое может быть открыто процессом: %s" #: plugins/sudoers/def_data.c:664 #, c-format msgid "The maximum number of processes that the user may run simultaneously: %s" -msgstr "" +msgstr "Максимальное количество процессов, которые пользователь может запускать одновременно: %s" #: plugins/sudoers/def_data.c:668 #, c-format msgid "The maximum size to which the process's resident set size may grow (in bytes): %s" -msgstr "" +msgstr "Максимальный размер, до которого может вырасти размер резидентного набора процесса (в байтах): %s" #: plugins/sudoers/def_data.c:672 #, c-format msgid "The maximum size to which the process's stack may grow (in bytes): %s" -msgstr "" +msgstr "Максимальный размер, до которого может вырасти стек процесса (в байтах): %s" #: plugins/sudoers/def_data.c:676 msgid "Attempt authentication even when in non-interactive mode" -msgstr "" +msgstr "Пытаться пройти аутентификацию даже в неинтерактивном режиме" #: plugins/sudoers/def_data.c:680 msgid "Store plaintext passwords in I/O log input" -msgstr "" +msgstr "Сохранять вводимые пароли в открытом виде в журнале ввода-вывода" #: plugins/sudoers/def_data.c:684 msgid "List of regular expressions to use when matching a password prompt" -msgstr "" +msgstr "Список регулярных выражений, которые будут использоваться при сопоставлении запроса пароля" #: plugins/sudoers/def_data.c:688 #, c-format msgid "The mechanism used by the intercept and log_subcmds options: %s" -msgstr "" +msgstr "Механизм, используемый параметрами intercept и log_subcmds: %s" #: plugins/sudoers/def_data.c:692 msgid "Attempt to verify the command and arguments after execution" -msgstr "" +msgstr "Попытаться проверить команду и аргументы после выполнения" #: plugins/sudoers/def_data.c:696 #, c-format msgid "AppArmor profile to use in the new security context: %s" -msgstr "" +msgstr "Профиль AppArmor, который следует использовать в новом контексте безопасности: %s" #: plugins/sudoers/defaults.c:191 -#, fuzzy, c-format -#| msgid "unknown user: %s" +#, c-format msgid "unknown defaults entry \"%s\"" -msgstr "неизвестный пользователь: %s" +msgstr "неизвестная запись параметров по умолчанию «%s»" #: plugins/sudoers/defaults.c:234 #, c-format msgid "no value specified for \"%s\"" -msgstr "" +msgstr "для «%s» не указано значение" #: plugins/sudoers/defaults.c:243 #, c-format msgid "invalid operator \"%c=\" for \"%s\"" -msgstr "" +msgstr "некорректный оператор «%c=» для «%s»" #: plugins/sudoers/defaults.c:275 #, c-format msgid "option \"%s\" does not take a value" -msgstr "" +msgstr "параметр «%s» не принимает значение" #: plugins/sudoers/defaults.c:299 #, c-format msgid "invalid Defaults type 0x%x for option \"%s\"" -msgstr "" +msgstr "некорректный тип Defaults 0x%x для параметра «%s»" #: plugins/sudoers/defaults.c:306 #, c-format msgid "value \"%s\" is invalid for option \"%s\"" -msgstr "" +msgstr "значение «%s» недопустимо для параметра «%s»" -#: plugins/sudoers/defaults.c:1128 plugins/sudoers/policy.c:208 -#: plugins/sudoers/policy.c:217 +#: plugins/sudoers/defaults.c:1127 plugins/sudoers/policy.c:205 +#: plugins/sudoers/policy.c:214 #, c-format msgid "path name for \"%s\" too long" -msgstr "" +msgstr "слишком длинный путь для «%s»" -#: plugins/sudoers/defaults.c:1134 +#: plugins/sudoers/defaults.c:1133 #, c-format msgid "values for \"%s\" must start with a '/', '~', or '*'" -msgstr "" +msgstr "значения для «%s» должны начинаться с «/», «~» или «*»" -#: plugins/sudoers/defaults.c:1141 +#: plugins/sudoers/defaults.c:1140 #, c-format msgid "values for \"%s\" must start with a '/'" -msgstr "" +msgstr "значения для «%s» должны начинаться с «/»" + +#: plugins/sudoers/editor.c:180 +#, c-format +msgid "ignoring editor: %.*s" +msgstr "игнорируется редактор: %.*s" + +#: plugins/sudoers/editor.c:181 +msgid "editor arguments may not contain \"--\"" +msgstr "аргументы редактора не могут содержать «--»" #: plugins/sudoers/env.c:426 msgid "sudo_putenv: corrupted envp, length mismatch" -msgstr "" +msgstr "sudo_putenv: ошибочное значение envp, несоответствие длин" -#: plugins/sudoers/env.c:1109 +#: plugins/sudoers/env.c:1113 msgid "unable to rebuild the environment" msgstr "не удаётся перестроить среду" -#: plugins/sudoers/env.c:1183 +#: plugins/sudoers/env.c:1192 #, c-format msgid "sorry, you are not allowed to set the following environment variables: %s" -msgstr "" +msgstr "извините, вам не разрешено устанавливать следующие переменные окружения: %s" -#: plugins/sudoers/filedigest.c:49 +#: plugins/sudoers/filedigest.c:50 #, c-format -msgid "unsupported digest type %d for %s" -msgstr "" +msgid "unsupported digest type %u for %s" +msgstr "неподдерживаемый тип контрольной суммы %u для %s" -#: plugins/sudoers/filedigest.c:78 +#: plugins/sudoers/filedigest.c:79 #, c-format msgid "%s: read error" -msgstr "" +msgstr "%s: ошибка чтения" -#: plugins/sudoers/group_plugin.c:169 -#, c-format -msgid "%s must be owned by uid %d" -msgstr "" - -#: plugins/sudoers/group_plugin.c:173 -#, c-format -msgid "%s must only be writable by owner" -msgstr "" - -#: plugins/sudoers/group_plugin.c:185 plugins/sudoers/sssd.c:576 +#: plugins/sudoers/group_plugin.c:169 plugins/sudoers/sssd.c:576 #, c-format msgid "unable to load %s: %s" -msgstr "" +msgstr "не удаётся загрузить %s: %s" -#: plugins/sudoers/group_plugin.c:197 +#: plugins/sudoers/group_plugin.c:181 #, c-format msgid "unable to find symbol \"group_plugin\" in %s" -msgstr "" +msgstr "не удаётся найти символ «group_plugin» в %s" -#: plugins/sudoers/group_plugin.c:202 +#: plugins/sudoers/group_plugin.c:186 #, c-format msgid "%s: incompatible group plugin major version %d, expected %d" -msgstr "" +msgstr "%s: несовместимая основная версия модуля групп %d, должна быть %d" #: plugins/sudoers/interfaces.c:76 plugins/sudoers/interfaces.c:93 -#, fuzzy, c-format -#| msgid "%s: unable to parse '%s': %s" +#, c-format msgid "unable to parse IP address \"%s\"" -msgstr "%s: не удаётся прочитать '%s': %s" +msgstr "не удаётся разобрать IP-адрес «%s»" #: plugins/sudoers/interfaces.c:81 plugins/sudoers/interfaces.c:98 -#, fuzzy, c-format -#| msgid "%s: unable to parse '%s': %s" +#, c-format msgid "unable to parse netmask \"%s\"" -msgstr "%s: не удаётся прочитать '%s': %s" +msgstr "не удаётся разобрать сетевую маску «%s»" #: plugins/sudoers/interfaces.c:126 msgid "Local IP address and netmask pairs:\n" -msgstr "" +msgstr "Пары локальных IP-адресов и масок сети:\n" -#: plugins/sudoers/iolog.c:685 -#, fuzzy -#| msgid "unable to rebuild the environment" +#: plugins/sudoers/iolog.c:684 msgid "unable to update sequence file" -msgstr "не удаётся перестроить среду" +msgstr "не удаётся обновить файл последовательности" -#: plugins/sudoers/iolog.c:719 plugins/sudoers/iolog.c:909 -#: plugins/sudoers/iolog.c:1071 plugins/sudoers/iolog.c:1078 -#: plugins/sudoers/iolog.c:1199 plugins/sudoers/iolog.c:1206 -#: plugins/sudoers/iolog.c:1305 plugins/sudoers/iolog.c:1312 -#, fuzzy, c-format -#| msgid "unable to open log file: %s: %s" +#: plugins/sudoers/iolog.c:718 plugins/sudoers/iolog.c:906 +#: plugins/sudoers/iolog.c:1068 plugins/sudoers/iolog.c:1075 +#: plugins/sudoers/iolog.c:1196 plugins/sudoers/iolog.c:1203 +#: plugins/sudoers/iolog.c:1302 plugins/sudoers/iolog.c:1309 +#, c-format msgid "unable to write to I/O log file: %s" -msgstr "не удаётся открыть файл журнала: %s: %s" +msgstr "не удаётся добавить запись в файл журнала ввода-вывода: %s" -#: plugins/sudoers/iolog.c:727 -#, fuzzy, c-format -#| msgid "unable to read the clock" +#: plugins/sudoers/iolog.c:726 +#, c-format msgid "unable to create %s/%s" -msgstr "не удаётся прочитать часы" +msgstr "не удаётся создать %s/%s" -#: plugins/sudoers/iolog.c:957 +#: plugins/sudoers/iolog.c:954 #, c-format msgid "%s: internal error, I/O log file for event %d not open" -msgstr "" +msgstr "%s: внутренняя ошибка, файл журнала ввода/вывода для события %d не открыт" -#: plugins/sudoers/iolog.c:1056 plugins/sudoers/iolog.c:1184 -#: plugins/sudoers/iolog.c:1289 plugins/sudoers/timestamp.c:879 -#: plugins/sudoers/timestamp.c:971 plugins/sudoers/visudo.c:552 -#: plugins/sudoers/visudo.c:558 +#: plugins/sudoers/iolog.c:1053 plugins/sudoers/iolog.c:1181 +#: plugins/sudoers/iolog.c:1286 plugins/sudoers/timestamp.c:904 +#: plugins/sudoers/timestamp.c:996 plugins/sudoers/visudo.c:559 +#: plugins/sudoers/visudo.c:565 msgid "unable to read the clock" -msgstr "не удаётся прочитать часы" +msgstr "не удаётся прочитать время" -#: plugins/sudoers/iolog.c:1281 plugins/sudoers/log_client.c:1193 -#: plugins/sudoers/log_client.c:1203 plugins/sudoers/log_client.c:1207 +#: plugins/sudoers/iolog.c:1278 plugins/sudoers/log_client.c:1200 +#: plugins/sudoers/log_client.c:1210 plugins/sudoers/log_client.c:1214 #, c-format msgid "%s: internal error, invalid signal %d" -msgstr "" +msgstr "%s: внутренняя ошибка, недопустимый сигнал %d" -#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:292 +#: plugins/sudoers/ldap.c:154 plugins/sudoers/ldap_conf.c:289 msgid "starttls not supported when using ldaps" -msgstr "" +msgstr "starttls не поддерживается при использовании ldaps" -#: plugins/sudoers/ldap.c:248 +#: plugins/sudoers/ldap.c:225 #, c-format msgid "unable to initialize SSL cert and key db: %s" -msgstr "" +msgstr "не удаётся инициализировать базу данных сертификатов и ключей SSL: %s" -#: plugins/sudoers/ldap.c:251 +#: plugins/sudoers/ldap.c:228 #, c-format msgid "you must set TLS_CERT in %s to use SSL" -msgstr "" +msgstr "для использования SSL необходимо установить для TLS_CERT значение %s" -#: plugins/sudoers/ldap.c:1712 +#: plugins/sudoers/ldap.c:1587 #, c-format msgid "unable to initialize LDAP: %s" msgstr "не удаётся инициализировать LDAP: %s" -#: plugins/sudoers/ldap.c:1749 +#: plugins/sudoers/ldap.c:1624 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "указано start_tls, но библиотеки LDAP не поддерживают ldap_start_tls_s() или ldap_start_tls_s_np()" -#: plugins/sudoers/ldap.c:1886 plugins/sudoers/parse_ldif.c:748 +#: plugins/sudoers/ldap.c:1761 plugins/sudoers/parse_ldif.c:748 #, c-format msgid "invalid sudoOrder attribute: %s" -msgstr "недопустимый атрибут sudoOrder: %s" +msgstr "некорректный атрибут sudoOrder: %s" -#: plugins/sudoers/ldap_conf.c:200 +#: plugins/sudoers/ldap_conf.c:197 #, c-format msgid "%s: port too large" -msgstr "" +msgstr "%s: слишком большой порт" -#: plugins/sudoers/ldap_conf.c:261 +#: plugins/sudoers/ldap_conf.c:258 #, c-format msgid "unsupported LDAP uri type: %s" -msgstr "" +msgstr "неподдерживаемый тип адреса LDAP: %s" -#: plugins/sudoers/ldap_conf.c:288 +#: plugins/sudoers/ldap_conf.c:285 msgid "unable to mix ldap and ldaps URIs" -msgstr "" +msgstr "нельзя использовать вместе адреса ldap и ldaps" #: plugins/sudoers/ldap_util.c:499 plugins/sudoers/ldap_util.c:506 #: plugins/sudoers/ldap_util.c:514 plugins/sudoers/ldap_util.c:523 @@ -2863,13 +2822,12 @@ #: plugins/sudoers/ldap_util.c:549 #, c-format msgid "duplicate sudoOption: %s%s%s" -msgstr "" +msgstr "дубль sudoOption: %s%s%s" #: plugins/sudoers/ldap_util.c:568 plugins/sudoers/ldap_util.c:570 -#, fuzzy, c-format -#| msgid "%s: unable to allocate options: %s" +#, c-format msgid "unable to convert sudoOption: %s%s%s" -msgstr "%s: не удаётся выделить параметры: %s" +msgstr "не удаётся преобразовать запись sudoOption: %s%s%s" #: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60 msgid "unable to open audit system" @@ -2880,167 +2838,159 @@ msgstr "не удаётся отправить сообщение аудита" #: plugins/sudoers/log_client.c:125 plugins/sudoers/log_client.c:412 -#: plugins/sudoers/log_client.c:1440 plugins/sudoers/log_client.c:2056 +#: plugins/sudoers/log_client.c:1447 plugins/sudoers/log_client.c:2069 msgid "error in event loop" -msgstr "" +msgstr "ошибка в цикле обработки событий" #: plugins/sudoers/log_client.c:205 #, c-format msgid "Creation of new SSL_CTX object failed: %s" -msgstr "" +msgstr "Не удаётся создать объект SSL_CTX: %s" #: plugins/sudoers/log_client.c:230 #, c-format msgid "unable to load certificate authority bundle %s" -msgstr "" +msgstr "не удаётся загрузить пакет центра сертификации %s" #: plugins/sudoers/log_client.c:252 -#, fuzzy, c-format -#| msgid "%s: unable to store credential in cache: %s" +#, c-format msgid "unable to load certificate %s" -msgstr "%s: не удаётся сохранить учётные данные в кэше: %s" +msgstr "не удаётся загрузить сертификат %s" #: plugins/sudoers/log_client.c:266 -#, fuzzy, c-format -#| msgid "unable to allocate memory" +#, c-format msgid "unable to load private key %s" -msgstr "не удаётся выделить память" +msgstr "не удаётся загрузить закрытый ключ %s" #: plugins/sudoers/log_client.c:275 -#, fuzzy, c-format -#| msgid "%s: unable to allocate options: %s" +#, c-format msgid "Unable to allocate ssl object: %s" -msgstr "%s: не удаётся выделить параметры: %s" +msgstr "Не удаётся разместить SSL-объект в памяти: %s" #: plugins/sudoers/log_client.c:364 plugins/sudoers/log_client.c:369 #, c-format msgid "TLS connection to %s:%s failed: %s" -msgstr "" +msgstr "Не удаётся установить TLS-соединение с %s:%s: %s" -#: plugins/sudoers/log_client.c:543 +#: plugins/sudoers/log_client.c:545 msgid "TLS initialization was unsuccessful" -msgstr "" +msgstr "Инициализация TLS не удалась" -#: plugins/sudoers/log_client.c:553 +#: plugins/sudoers/log_client.c:555 msgid "TLS handshake was unsuccessful" -msgstr "" +msgstr "Попытка согласования TLS-подключения завершилась неудачно" -#: plugins/sudoers/log_client.c:1211 +#: plugins/sudoers/log_client.c:1218 #, c-format msgid "%s: internal error, invalid exit status %d" -msgstr "" +msgstr "%s: внутренняя ошибка, некорректный статус выхода %d" -#: plugins/sudoers/log_client.c:1740 plugins/sudoers/log_client.c:1764 -#, fuzzy -#| msgid "lost connection to authentication server" +#: plugins/sudoers/log_client.c:1753 plugins/sudoers/log_client.c:1777 msgid "lost connection to log server" -msgstr "потеряно соединение с сервером аутентификации" +msgstr "потеряно соединение с сервером журнала" -#: plugins/sudoers/log_client.c:1841 +#: plugins/sudoers/log_client.c:1854 msgid "missing write buffer" -msgstr "" +msgstr "не указан буфер записи" -#: plugins/sudoers/log_client.c:1995 -#, fuzzy -#| msgid "unable to connect to authentication server" +#: plugins/sudoers/log_client.c:2008 msgid "unable to connect to log server" -msgstr "не удаётся связаться с сервером аутентификации" +msgstr "не удаётся подключиться к серверу журнала" #: plugins/sudoers/logging.c:290 msgid "user NOT in sudoers" -msgstr "" +msgstr "пользователя НЕТ в списке sudoers" #: plugins/sudoers/logging.c:292 msgid "user NOT authorized on host" -msgstr "" +msgstr "пользователь НЕ имеет прав на действия на узле" #: plugins/sudoers/logging.c:294 msgid "command not allowed" -msgstr "" +msgstr "команда не разрешена" #: plugins/sudoers/logging.c:315 #, c-format msgid "%s is not in the sudoers file.\n" -msgstr "" +msgstr "%s отсутствует в файле sudoers.\n" #: plugins/sudoers/logging.c:318 -#, fuzzy, c-format -#| msgid "Send mail if the user is not allowed to run a command" +#, c-format msgid "%s is not allowed to run sudo on %s.\n" -msgstr "Отправлять письмо, если пользователю не разрешено выполнять команду" +msgstr "%s не имеет права запускать sudo на %s.\n" #: plugins/sudoers/logging.c:321 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" -msgstr "" +msgstr "Извините, пользователь %s не может запустить sudo на %s.\n" #: plugins/sudoers/logging.c:324 #, c-format -msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" -msgstr "" +msgid "Sorry, user %s is not allowed to execute '%s%s%s%s' as %s%s%s on %s.\n" +msgstr "Извините, пользователю %s не разрешено выполнять «%s%s%s%s» как %s%s%s на %s.\n" #: plugins/sudoers/logging.c:334 msgid "This incident has been reported to the administrator.\n" -msgstr "" +msgstr "Администратор был оповещён об этом событии.\n" -#: plugins/sudoers/logging.c:365 plugins/sudoers/sudoers.c:648 -#: plugins/sudoers/sudoers.c:650 plugins/sudoers/sudoers.c:652 -#: plugins/sudoers/sudoers.c:654 plugins/sudoers/sudoers.c:805 -#: plugins/sudoers/sudoers.c:807 +#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:566 +#: plugins/sudoers/sudoers.c:567 plugins/sudoers/sudoers.c:569 +#: plugins/sudoers/sudoers.c:570 plugins/sudoers/sudoers.c:791 +#: plugins/sudoers/sudoers.c:793 #, c-format msgid "%s: command not found" -msgstr "" +msgstr "%s: команда не найдена" -#: plugins/sudoers/logging.c:367 plugins/sudoers/sudoers.c:644 +#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:562 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" "Use \"sudo ./%s\" if this is the \"%s\" you wish to run." msgstr "" +"пропущено «%s» найдено в «.»\n" +"Используйте команду «sudo ./%s», если вам нужно выполнить именно этот «%s»." -#: plugins/sudoers/logging.c:387 +#: plugins/sudoers/logging.c:391 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%u неправильная попытка ввода пароля" +msgstr[1] "%u неправильные попытки ввода пароля" +msgstr[2] "%u неправильных попыток ввода пароля" -#: plugins/sudoers/logging.c:477 +#: plugins/sudoers/logging.c:481 msgid "authentication failure" -msgstr "" +msgstr "ошибка аутентификации" -#: plugins/sudoers/logging.c:516 plugins/sudoers/logging.c:535 +#: plugins/sudoers/logging.c:520 plugins/sudoers/logging.c:539 msgid "a password is required" -msgstr "" +msgstr "требуется указать пароль" -#: plugins/sudoers/logging.c:799 plugins/sudoers/logging.c:811 +#: plugins/sudoers/logging.c:855 msgid "problem parsing sudoers" -msgstr "" +msgstr "проблема разбора sudoers" -#: plugins/sudoers/logging.c:873 plugins/sudoers/logging.c:885 -#, fuzzy, c-format -#| msgid "%s: %s" +#: plugins/sudoers/logging.c:896 plugins/sudoers/logging.c:904 +#, c-format msgid "%s:%d:%d: %s" -msgstr "%s: %s" +msgstr "%s:%d:%d: %s" -#: plugins/sudoers/logging.c:1062 -#, fuzzy, c-format -#| msgid "unable to open log file: %s: %s" +#: plugins/sudoers/logging.c:1079 +#, c-format msgid "unable to write log file: %s" -msgstr "не удаётся открыть файл журнала: %s: %s" +msgstr "не удаётся записать файл журнала: %s" -#: plugins/sudoers/match_digest.c:112 +#: plugins/sudoers/match_digest.c:101 #, c-format msgid "digest for %s (%s) bad length %zu, expected %zu" -msgstr "" +msgstr "контрольная сумма для %s (%s) имеет некорректную длину %zu, должно быть %zu" -#: plugins/sudoers/match_digest.c:131 +#: plugins/sudoers/match_digest.c:120 #, c-format msgid "digest for %s (%s) is not in %s form" -msgstr "" +msgstr "контрольная сумма для %s (%s) представлена не в форме %s" -#: plugins/sudoers/parse.c:591 +#: plugins/sudoers/parse.c:643 #, c-format msgid "" "\n" @@ -3049,549 +2999,550 @@ "\n" "Роль LDAP: %s\n" -#: plugins/sudoers/parse.c:594 +#: plugins/sudoers/parse.c:646 msgid "" "\n" "Sudoers entry:\n" msgstr "" +"\n" +"Запись sudoers:\n" -#: plugins/sudoers/parse.c:596 +#: plugins/sudoers/parse.c:648 msgid " RunAsUsers: " -msgstr "" +msgstr " ПользователиДляЗапуска: " -#: plugins/sudoers/parse.c:611 +#: plugins/sudoers/parse.c:663 msgid " RunAsGroups: " -msgstr "" +msgstr " ГруппыДляЗапуска: " -#: plugins/sudoers/parse.c:621 +#: plugins/sudoers/parse.c:673 msgid " Options: " -msgstr "" +msgstr " Параметры: " -#: plugins/sudoers/parse.c:685 +#: plugins/sudoers/parse.c:737 msgid " Commands:\n" msgstr " Команды:\n" -#: plugins/sudoers/parse.c:876 +#: plugins/sudoers/parse.c:928 #, c-format msgid "Matching Defaults entries for %s on %s:\n" -msgstr "" +msgstr "Соответствие записей Defaults для %s на %s:\n" -#: plugins/sudoers/parse.c:894 +#: plugins/sudoers/parse.c:946 #, c-format msgid "Runas and Command-specific defaults for %s:\n" -msgstr "" +msgstr "Значения Runas и Command по умолчанию для %s:\n" -#: plugins/sudoers/parse.c:912 +#: plugins/sudoers/parse.c:964 #, c-format msgid "User %s may run the following commands on %s:\n" -msgstr "" +msgstr "Пользователь %s может выполнять следующие команды на %s:\n" -#: plugins/sudoers/parse.c:927 +#: plugins/sudoers/parse.c:979 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" -msgstr "" +msgstr "Пользователю %s не разрешено запускать sudo на %s.\n" #: plugins/sudoers/parse_ldif.c:618 #, c-format msgid "ignoring incomplete sudoRole: cn: %s" -msgstr "" +msgstr "игнорируем неполную запись sudoRole: cn: %s" #: plugins/sudoers/parse_ldif.c:678 -#, fuzzy, c-format -#| msgid "invalid sudoOrder attribute: %s" +#, c-format msgid "invalid LDIF attribute: %s" -msgstr "недопустимый атрибут sudoOrder: %s" +msgstr "некорректный атрибут LDIF: %s" + +#: plugins/sudoers/pivot.c:74 +msgid "unable to restore root directory" +msgstr "не удаётся восстановить корневой каталог" + +#: plugins/sudoers/pivot.c:82 +msgid "unable to restore current working directory" +msgstr "не удаётся восстановить текущий рабочий каталог" -#: plugins/sudoers/policy.c:81 plugins/sudoers/policy.c:112 +#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 #, c-format msgid "invalid %.*s set by sudo front-end" -msgstr "" +msgstr "оболочкой sudo установлено некорректное значение %.*s" -#: plugins/sudoers/policy.c:358 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:356 plugins/sudoers/testsudoers.c:277 msgid "unable to parse network address list" -msgstr "" +msgstr "невозможно разобрать список сетевых адресов" -#: plugins/sudoers/policy.c:526 +#: plugins/sudoers/policy.c:524 msgid "user name not set by sudo front-end" -msgstr "" +msgstr "имя пользователя не указано оболочкой sudo" -#: plugins/sudoers/policy.c:530 +#: plugins/sudoers/policy.c:528 msgid "user-ID not set by sudo front-end" -msgstr "" +msgstr "идентификатор пользователя не указан оболочкой sudo" -#: plugins/sudoers/policy.c:534 +#: plugins/sudoers/policy.c:532 msgid "group-ID not set by sudo front-end" -msgstr "" +msgstr "идентификатор группы не указан оболочкой sudo" -#: plugins/sudoers/policy.c:538 +#: plugins/sudoers/policy.c:536 msgid "host name not set by sudo front-end" -msgstr "" +msgstr "имя узла не указано оболочкой sudo" -#: plugins/sudoers/policy.c:730 -#, fuzzy, c-format -#| msgid "invalid sudoOrder attribute: %s" +#: plugins/sudoers/policy.c:754 +#, c-format msgid "invalid working directory: %s" -msgstr "недопустимый атрибут sudoOrder: %s" +msgstr "некорректный рабочий каталог: %s" -#: plugins/sudoers/policy.c:914 +#: plugins/sudoers/policy.c:938 #, c-format msgid "invalid chroot directory: %s" -msgstr "" +msgstr "некорректный каталог chroot: %s" -#: plugins/sudoers/policy.c:1101 plugins/sudoers/visudo.c:259 -#: plugins/sudoers/visudo.c:902 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/visudo.c:910 +#: plugins/sudoers/visudo.c:1209 #, c-format msgid "unable to execute %s" -msgstr "" +msgstr "не удаётся выполнить %s" -#: plugins/sudoers/policy.c:1171 plugins/sudoers/policy.c:1208 -#: plugins/sudoers/policy.c:1230 plugins/sudoers/policy.c:1256 +#: plugins/sudoers/policy.c:1195 plugins/sudoers/policy.c:1230 +#: plugins/sudoers/policy.c:1252 plugins/sudoers/policy.c:1274 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" -msgstr "" +msgstr "%s: некорректные флаги режима от оболочки sudo: 0x%x" -#: plugins/sudoers/policy.c:1292 +#: plugins/sudoers/policy.c:1294 #, c-format msgid "Sudoers policy plugin version %s\n" -msgstr "" +msgstr "Модуль политики sudoers версии %s\n" -#: plugins/sudoers/policy.c:1294 +#: plugins/sudoers/policy.c:1296 #, c-format msgid "Sudoers file grammar version %d\n" -msgstr "" +msgstr "Файл грамматики sudoers версии %d\n" -#: plugins/sudoers/policy.c:1298 +#: plugins/sudoers/policy.c:1300 #, c-format msgid "" "\n" "Sudoers path: %s\n" msgstr "" +"\n" +"Путь к sudoers: %s\n" -#: plugins/sudoers/policy.c:1301 +#: plugins/sudoers/policy.c:1303 #, c-format msgid "nsswitch path: %s\n" -msgstr "" +msgstr "путь к nsswitch: %s\n" -#: plugins/sudoers/policy.c:1303 +#: plugins/sudoers/policy.c:1305 #, c-format msgid "ldap.conf path: %s\n" -msgstr "" +msgstr "путь к ldap.conf: %s\n" -#: plugins/sudoers/policy.c:1304 +#: plugins/sudoers/policy.c:1306 #, c-format msgid "ldap.secret path: %s\n" -msgstr "" +msgstr "путь к ldap.secret: %s\n" -#: plugins/sudoers/policy.c:1337 +#: plugins/sudoers/policy.c:1339 #, c-format msgid "unable to register hook of type %d (version %d.%d)" -msgstr "" +msgstr "не удаётся зарегистрировать процедуру перехвата типа %d (версия %d.%d)" -#: plugins/sudoers/policy.c:1355 +#: plugins/sudoers/policy.c:1357 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" -msgstr "" +msgstr "не удаётся отменить регистрацию процедуры перехвата типа %d (версия %d.%d)" #: plugins/sudoers/pwutil.c:222 plugins/sudoers/pwutil.c:240 -#, fuzzy, c-format -#| msgid "unable to contact the SecurID server" +#, c-format msgid "unable to cache uid %u" -msgstr "не удалось связаться с сервером SecurID" +msgstr "не удаётся кэшировать uid %u" #: plugins/sudoers/pwutil.c:234 #, c-format msgid "unable to cache uid %u, already exists" -msgstr "" +msgstr "не удаётся кэшировать uid %u, запись уже существует" #: plugins/sudoers/pwutil.c:294 plugins/sudoers/pwutil.c:312 #: plugins/sudoers/pwutil.c:375 plugins/sudoers/pwutil.c:420 -#, fuzzy, c-format -#| msgid "unable to contact the SecurID server" +#, c-format msgid "unable to cache user %s" -msgstr "не удалось связаться с сервером SecurID" +msgstr "не удаётся кэшировать пользователя %s" #: plugins/sudoers/pwutil.c:307 #, c-format msgid "unable to cache user %s, already exists" -msgstr "" +msgstr "не удаётся кэшировать пользователя %s, запись уже существует" #: plugins/sudoers/pwutil.c:539 plugins/sudoers/pwutil.c:557 -#, fuzzy, c-format -#| msgid "unable to change expired password: %s" +#, c-format msgid "unable to cache gid %u" -msgstr "не удаётся сменить устаревший пароль: %s" +msgstr "не удаётся кэшировать gid %u" #: plugins/sudoers/pwutil.c:551 #, c-format msgid "unable to cache gid %u, already exists" -msgstr "" +msgstr "не удаётся кэшировать gid %u, запись уже существует" #: plugins/sudoers/pwutil.c:605 plugins/sudoers/pwutil.c:623 #: plugins/sudoers/pwutil.c:684 plugins/sudoers/pwutil.c:733 -#, fuzzy, c-format -#| msgid "%s: unable to allocate options: %s" +#, c-format msgid "unable to cache group %s" -msgstr "%s: не удаётся выделить параметры: %s" +msgstr "не удаётся кэшировать группу %s" #: plugins/sudoers/pwutil.c:618 #, c-format msgid "unable to cache group %s, already exists" -msgstr "" +msgstr "не удаётся кэшировать группу %s, запись уже существует" -#: plugins/sudoers/pwutil.c:880 plugins/sudoers/pwutil.c:931 -#: plugins/sudoers/pwutil.c:981 plugins/sudoers/pwutil.c:1033 +#: plugins/sudoers/pwutil.c:880 plugins/sudoers/pwutil.c:963 +#: plugins/sudoers/pwutil.c:1017 plugins/sudoers/pwutil.c:1071 #, c-format msgid "unable to cache group list for %s, already exists" -msgstr "" +msgstr "не удаётся кэшировать список групп для %s, запись уже существует" -#: plugins/sudoers/pwutil.c:886 plugins/sudoers/pwutil.c:936 -#: plugins/sudoers/pwutil.c:987 plugins/sudoers/pwutil.c:1038 -#, fuzzy, c-format -#| msgid "unable to get login class for user %s" +#: plugins/sudoers/pwutil.c:886 plugins/sudoers/pwutil.c:968 +#: plugins/sudoers/pwutil.c:1023 plugins/sudoers/pwutil.c:1076 +#, c-format msgid "unable to cache group list for %s" -msgstr "не удаётся получить класс логина для пользователя %s" +msgstr "не удаётся кэшировать список групп для %s" -#: plugins/sudoers/pwutil.c:925 +#: plugins/sudoers/pwutil.c:957 #, c-format msgid "unable to parse groups for %s" -msgstr "" +msgstr "не удаётся разобрать записи групп для %s" -#: plugins/sudoers/pwutil.c:1027 -#, fuzzy, c-format -#| msgid "%s: unable to parse '%s': %s" +#: plugins/sudoers/pwutil.c:1065 +#, c-format msgid "unable to parse gids for %s" -msgstr "%s: не удаётся прочитать '%s': %s" +msgstr "не удаётся разобрать записи идентификаторов групп для %s" -#: 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 +#: plugins/sudoers/set_perms.c:115 plugins/sudoers/set_perms.c:451 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1178 +#: plugins/sudoers/set_perms.c:1481 msgid "perm stack overflow" -msgstr "" +msgstr "переполнение стека доступа" -#: 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 +#: plugins/sudoers/set_perms.c:126 plugins/sudoers/set_perms.c:382 +#: plugins/sudoers/set_perms.c:462 plugins/sudoers/set_perms.c:730 +#: plugins/sudoers/set_perms.c:874 plugins/sudoers/set_perms.c:1102 +#: plugins/sudoers/set_perms.c:1189 plugins/sudoers/set_perms.c:1414 +#: plugins/sudoers/set_perms.c:1492 plugins/sudoers/set_perms.c:1583 msgid "perm stack underflow" -msgstr "" +msgstr "исчерпание стека доступа" -#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 -#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 +#: plugins/sudoers/set_perms.c:186 plugins/sudoers/set_perms.c:509 +#: plugins/sudoers/set_perms.c:1243 plugins/sudoers/set_perms.c:1526 msgid "unable to change to root gid" -msgstr "" +msgstr "не удаётся изменить идентификатор группы на root" -#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 -#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 +#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:606 +#: plugins/sudoers/set_perms.c:1006 plugins/sudoers/set_perms.c:1320 msgid "unable to change to runas gid" -msgstr "" +msgstr "не удаётся изменить идентификатор группы на runas" -#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 -#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 +#: plugins/sudoers/set_perms.c:282 plugins/sudoers/set_perms.c:611 +#: plugins/sudoers/set_perms.c:1011 plugins/sudoers/set_perms.c:1325 msgid "unable to set runas group vector" -msgstr "" +msgstr "не удаётся установить вектор группы выполнения" -#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 -#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:293 plugins/sudoers/set_perms.c:622 +#: plugins/sudoers/set_perms.c:1020 plugins/sudoers/set_perms.c:1334 msgid "unable to change to runas uid" -msgstr "" +msgstr "не удаётся изменить идентификатор пользователя на runas" -#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 -#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 +#: plugins/sudoers/set_perms.c:315 plugins/sudoers/set_perms.c:644 +#: plugins/sudoers/set_perms.c:1040 plugins/sudoers/set_perms.c:1354 msgid "unable to change to sudoers gid" -msgstr "" +msgstr "не удаётся изменить идентификатор группы на sudoers" -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 msgid "too many processes" -msgstr "" +msgstr "слишком много процессов" #: plugins/sudoers/solaris_audit.c:61 msgid "unable to get current working directory" -msgstr "" +msgstr "не удаётся получить текущий рабочий каталог" #: plugins/sudoers/solaris_audit.c:69 #, c-format msgid "truncated audit path user_cmnd: %s" -msgstr "" +msgstr "усечённый путь аудита user_cmnd: %s" #: plugins/sudoers/solaris_audit.c:76 #, c-format msgid "truncated audit path argv[0]: %s" -msgstr "" +msgstr "усечённый путь аудита argv[0]: %s" #: plugins/sudoers/sssd.c:579 msgid "unable to initialize SSS source. Is SSSD installed on your machine?" -msgstr "" +msgstr "не удаётся инициализировать источник SSS. Установлен ли SSSD на вашей системе?" #: plugins/sudoers/sssd.c:587 plugins/sudoers/sssd.c:596 #: plugins/sudoers/sssd.c:605 plugins/sudoers/sssd.c:614 #: plugins/sudoers/sssd.c:623 #, c-format msgid "unable to find symbol \"%s\" in %s" -msgstr "" +msgstr "не удаётся найти символ «%s» в %s" -#: plugins/sudoers/sudoers.c:263 -#, fuzzy, c-format -#| msgid "%s: unable to get credentials: %s" +#: plugins/sudoers/sudoers.c:261 +#, c-format msgid "unable to get defaults from %s" -msgstr "%s: не удаётся получить учётные данные: %s" +msgstr "не удаётся получить значения по умолчанию из %s" -#: plugins/sudoers/sudoers.c:270 +#: plugins/sudoers/sudoers.c:268 msgid "no valid sudoers sources found, quitting" -msgstr "" +msgstr "не найдены корректные источники данных sudoers, завершение работы" -#: plugins/sudoers/sudoers.c:346 +#: plugins/sudoers/sudoers.c:344 #, c-format msgid "user not allowed to change root directory to %s" -msgstr "" +msgstr "пользователю не разрешено изменять корневой каталог на %s" -#: plugins/sudoers/sudoers.c:348 +#: plugins/sudoers/sudoers.c:346 #, c-format msgid "you are not permitted to use the -R option with %s" -msgstr "" +msgstr "вам не разрешено использовать параметр -R с %s" -#: plugins/sudoers/sudoers.c:373 -#, fuzzy, c-format -#| msgid "unable to change expired password: %s" +#: plugins/sudoers/sudoers.c:371 +#, c-format msgid "user not allowed to change directory to %s" -msgstr "не удаётся сменить устаревший пароль: %s" +msgstr "пользователю не разрешено изменять каталог на %s" -#: plugins/sudoers/sudoers.c:374 +#: plugins/sudoers/sudoers.c:372 #, c-format msgid "you are not permitted to use the -D option with %s" -msgstr "" - -#: plugins/sudoers/sudoers.c:401 -msgid "no command specified" -msgstr "" +msgstr "вам не разрешено использовать параметр -D с %s" -#: plugins/sudoers/sudoers.c:426 +#: plugins/sudoers/sudoers.c:412 msgid "sudoers specifies that root is not allowed to sudo" -msgstr "" +msgstr "sudoers указывает, что root не имеет права выполнять sudo" -#: plugins/sudoers/sudoers.c:476 +#: plugins/sudoers/sudoers.c:421 msgid "user not allowed to override closefrom limit" -msgstr "" +msgstr "пользователю не разрешено переопределять ограничения closefrom" -#: plugins/sudoers/sudoers.c:477 +#: plugins/sudoers/sudoers.c:422 msgid "you are not permitted to use the -C option" -msgstr "" - -#: plugins/sudoers/sudoers.c:537 -#, c-format -msgid "timestamp owner (%s): No such user" -msgstr "" +msgstr "вам не разрешено использовать параметр -C" -#: plugins/sudoers/sudoers.c:552 +#: plugins/sudoers/sudoers.c:468 msgid "no tty" -msgstr "" +msgstr "нет tty" -#: plugins/sudoers/sudoers.c:553 +#: plugins/sudoers/sudoers.c:469 msgid "sorry, you must have a tty to run sudo" -msgstr "" +msgstr "извините, для запуска sudo у вас должен быть tty" -#: plugins/sudoers/sudoers.c:560 -#, fuzzy, c-format -#| msgid "invalid sudoOrder attribute: %s" +#: plugins/sudoers/sudoers.c:477 +#, c-format msgid "invalid shell for user %s: %s" -msgstr "недопустимый атрибут sudoOrder: %s" +msgstr "некорректная оболочка для пользователя %s: %s" -#: plugins/sudoers/sudoers.c:643 +#: plugins/sudoers/sudoers.c:561 msgid "command in current directory" -msgstr "" +msgstr "команда в текущем каталоге" -#: plugins/sudoers/sudoers.c:658 +#: plugins/sudoers/sudoers.c:574 msgid "\"cd\" is a shell built-in command, it cannot be run directly." -msgstr "" +msgstr "«cd» — встроенная команда оболочки, она не может быть запущена напрямую." -#: plugins/sudoers/sudoers.c:660 +#: plugins/sudoers/sudoers.c:576 msgid "the -s option may be used to run a privileged shell." -msgstr "" +msgstr "параметр -s может использоваться для запуска привилегированной оболочки." -#: plugins/sudoers/sudoers.c:662 +#: plugins/sudoers/sudoers.c:578 msgid "the -D option may be used to run a command in a specific directory." -msgstr "" +msgstr "параметр -D может использоваться для выполнения команды в определенном каталоге." -#: plugins/sudoers/sudoers.c:671 -#, fuzzy -#| msgid "Send mail if the user is not allowed to run a command" +#: plugins/sudoers/sudoers.c:587 msgid "user not allowed to set a command timeout" -msgstr "Отправлять письмо, если пользователю не разрешено выполнять команду" +msgstr "пользователю не разрешено устанавливать время ожидания выполнения команды" -#: plugins/sudoers/sudoers.c:673 +#: plugins/sudoers/sudoers.c:589 msgid "sorry, you are not allowed set a command timeout" -msgstr "" +msgstr "извините, вам не разрешено устанавливать время ожидания выполнения команды" -#: plugins/sudoers/sudoers.c:681 -#, fuzzy -#| msgid "unable to rebuild the environment" +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to preserve the environment" -msgstr "не удаётся перестроить среду" +msgstr "пользователю не разрешено сохранять окружение" -#: plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:599 msgid "sorry, you are not allowed to preserve the environment" -msgstr "" +msgstr "извините, вам не разрешено сохранять окружение" -#: plugins/sudoers/sudoers.c:1073 +#: plugins/sudoers/sudoers.c:635 +msgid "no command specified" +msgstr "не указана команда" + +#: plugins/sudoers/sudoers.c:774 +msgid "error setting user-specified environment variables" +msgstr "ошибка при назначении переменных окружения, заданных пользователем" + +#: plugins/sudoers/sudoers.c:1239 msgid "sudoedit doesn't need to be run via sudo" -msgstr "" +msgstr "sudoedit не нужно запускать через sudo" -#: plugins/sudoers/sudoers.c:1118 plugins/sudoers/sudoreplay.c:1584 +#: plugins/sudoers/sudoers.c:1314 plugins/sudoers/sudoreplay.c:1612 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" -msgstr "" +msgstr "не удаётся прочитать %s" -#: plugins/sudoers/sudoers.c:1147 plugins/sudoers/visudo.c:1064 +#: plugins/sudoers/sudoers.c:1337 plugins/sudoers/visudo.c:1114 #, c-format msgid "%s is not a regular file" -msgstr "" +msgstr "%s не является обычным файлом" -#: plugins/sudoers/sudoers.c:1151 plugins/sudoers/timestamp.c:263 toke.l:1247 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/timestamp.c:288 toke.l:1325 #, c-format msgid "%s is owned by uid %u, should be %u" -msgstr "" +msgstr "%s принадлежит uid %u, должно быть %u" -#: plugins/sudoers/sudoers.c:1155 plugins/sudoers/timestamp.c:270 toke.l:1252 +#: plugins/sudoers/sudoers.c:1345 plugins/sudoers/timestamp.c:295 toke.l:1330 #, c-format msgid "%s is world writable" -msgstr "" +msgstr "Запись в %s доступна любому пользователю" -#: plugins/sudoers/sudoers.c:1159 plugins/sudoers/timestamp.c:275 toke.l:1255 +#: plugins/sudoers/sudoers.c:1349 plugins/sudoers/timestamp.c:300 toke.l:1333 #, c-format msgid "%s is owned by gid %u, should be %u" -msgstr "" +msgstr "%s принадлежит gid %u, должно быть %u" -#: plugins/sudoers/sudoers.c:1194 +#: plugins/sudoers/sudoers.c:1377 #, c-format msgid "only root can use \"-c %s\"" -msgstr "" +msgstr "использовать «-c %s» может только root" -#: plugins/sudoers/sudoers.c:1213 -#, fuzzy, c-format -#| msgid "unknown user: %s" +#: plugins/sudoers/sudoers.c:1396 +#, c-format msgid "unknown login class %s" -msgstr "неизвестный пользователь: %s" +msgstr "неизвестный класс входа %s" -#: plugins/sudoers/sudoers.c:1300 plugins/sudoers/sudoers.c:1315 +#: plugins/sudoers/sudoers.c:1483 plugins/sudoers/sudoers.c:1498 #, c-format msgid "unable to resolve host %s" -msgstr "" +msgstr "не удаётся определить адрес узла %s" -#: plugins/sudoers/sudoreplay.c:259 +#: plugins/sudoers/sudoers.c:1636 +#, c-format +msgid "%s:%d:%d timestampowner: unknown user %s" +msgstr "%s:%d:%d: неизвестный пользователь «%s»" + +#: plugins/sudoers/sudoreplay.c:252 #, c-format msgid "invalid filter option: %s" -msgstr "" +msgstr "недопустимый параметр фильтра: %s" -#: plugins/sudoers/sudoreplay.c:275 +#: plugins/sudoers/sudoreplay.c:268 #, c-format msgid "invalid max wait: %s" -msgstr "" +msgstr "недопустимое значение максимального ожидания: %s" -#: plugins/sudoers/sudoreplay.c:298 +#: plugins/sudoers/sudoreplay.c:291 #, c-format msgid "invalid speed factor: %s" -msgstr "" +msgstr "некорректный коэффициент скорости: %s" -#: plugins/sudoers/sudoreplay.c:333 +#: plugins/sudoers/sudoreplay.c:326 #, c-format msgid "invalid time offset %s" -msgstr "" +msgstr "некорректное смещение времени %s" -#: plugins/sudoers/sudoreplay.c:342 +#: plugins/sudoers/sudoreplay.c:335 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" -msgstr "" +msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:347 -#, fuzzy, c-format -#| msgid "%s: %s" +#: plugins/sudoers/sudoreplay.c:340 +#, c-format msgid "%s/timing: %s" -msgstr "%s: %s" +msgstr "%s/расписание: %s" -#: plugins/sudoers/sudoreplay.c:375 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "Replaying sudo session: %s" -msgstr "" +msgstr "Воспроизведение сеанса sudo: %s" -#: plugins/sudoers/sudoreplay.c:637 +#: plugins/sudoers/sudoreplay.c:634 msgid "unable to set tty to raw mode" -msgstr "" +msgstr "не удаётся переключить tty в режим без обработки данных" -#: plugins/sudoers/sudoreplay.c:688 +#: plugins/sudoers/sudoreplay.c:685 msgid "Warning: your terminal is too small to properly replay the log.\n" -msgstr "" +msgstr "Внимание: размера вашего терминала недостаточно для корректного воспроизведения журнала.\n" -#: plugins/sudoers/sudoreplay.c:689 +#: plugins/sudoers/sudoreplay.c:686 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." -msgstr "" +msgstr "Формат журнала — %d x %d, формат вашего терминала — %d x %d." -#: plugins/sudoers/sudoreplay.c:717 +#: plugins/sudoers/sudoreplay.c:714 msgid "Replay finished, press any key to restore the terminal." -msgstr "" +msgstr "Воспроизведение завершено, нажмите любую клавишу, чтобы вернуться в терминал." -#: plugins/sudoers/sudoreplay.c:1219 plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1216 plugins/sudoers/sudoreplay.c:1246 #, c-format msgid "ambiguous expression \"%s\"" -msgstr "" +msgstr "неоднозначное выражение «%s»" -#: plugins/sudoers/sudoreplay.c:1271 +#: plugins/sudoers/sudoreplay.c:1268 msgid "unmatched ')' in expression" -msgstr "" +msgstr "закрывающая скобка «)» без открывающей в выражении" -#: plugins/sudoers/sudoreplay.c:1275 +#: plugins/sudoers/sudoreplay.c:1272 #, c-format msgid "unknown search term \"%s\"" -msgstr "" +msgstr "неизвестный ключ поиска «%s»" -#: plugins/sudoers/sudoreplay.c:1290 +#: plugins/sudoers/sudoreplay.c:1287 #, c-format msgid "%s requires an argument" -msgstr "" +msgstr "%s требуется аргумент" -#: plugins/sudoers/sudoreplay.c:1300 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" -msgstr "" +msgstr "не удаётся разобрать дату «%s»" -#: plugins/sudoers/sudoreplay.c:1309 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" -msgstr "" +msgstr "открывающая скобка «(» без закрывающей в выражении" -#: plugins/sudoers/sudoreplay.c:1311 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" -msgstr "" +msgstr "некорректное завершающее «or»" -#: plugins/sudoers/sudoreplay.c:1313 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" -msgstr "" +msgstr "некорректное завершающее «!»" -#: plugins/sudoers/sudoreplay.c:1371 +#: plugins/sudoers/sudoreplay.c:1416 #, c-format msgid "unknown search type %d" -msgstr "" +msgstr "неизвестный тип поиска %d" -#: plugins/sudoers/sudoreplay.c:1650 +#: plugins/sudoers/sudoreplay.c:1678 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" -msgstr "" +msgstr "использование: %s [-hnRS] [-d каталог] [-m число] [-s число] идентификатор\n" -#: plugins/sudoers/sudoreplay.c:1652 +#: plugins/sudoers/sudoreplay.c:1680 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" -msgstr "" +msgstr "использование: %s [-h] [-d каталог] -l [выражение для поиска]\n" -#: plugins/sudoers/sudoreplay.c:1666 +#: plugins/sudoers/sudoreplay.c:1694 #, c-format msgid "" "%s - replay sudo session logs\n" "\n" msgstr "" +"%s - воспроизвести журналы сеансов sudo\n" +"\n" -#: plugins/sudoers/sudoreplay.c:1668 +#: plugins/sudoers/sudoreplay.c:1696 msgid "" "\n" "Options:\n" @@ -3606,195 +3557,218 @@ " -s, --speed=num speed up or slow down output\n" " -V, --version display version information and exit" msgstr "" +"\n" +"Параметры:\n" +" -d, --directory=кат каталог для журналов сеанса\n" +" -f, --filter=фильтр какие операции ввода-вывода следует показывать\n" +" -h, --help показать справку и выйти\n" +" -l, --list перечислить доступные идентификаторы сеансов, опционально соответствующих выражению\n" +" -m, --max-wait=сек максимальное время ожидания между событиями, в секундах\n" +" -n, --non-interactive не задавать вопросов, данные сеанса записываются в стандартный вывод\n" +" -R, --no-resize не пытаться изменить размер терминала\n" +" -S, --suspend-wait ожидать, пока исполнение команды приостановлено\n" +" -s, --speed=чис коэффициент ускорения или замедления вывода данных\n" +" -V, --version показать версию и выйти" -#: plugins/sudoers/testsudoers.c:344 +#: plugins/sudoers/testsudoers.c:355 msgid "\thost unmatched" -msgstr "" +msgstr "\t соответствующий узел не найден" -#: plugins/sudoers/testsudoers.c:347 +#: plugins/sudoers/testsudoers.c:358 msgid "" "\n" "Command allowed" msgstr "" +"\n" +"Команда разрешена" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command denied" msgstr "" +"\n" +"Команда заблокирована" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command unmatched" msgstr "" +"\n" +"Соответствующая команда не найдена" -#: plugins/sudoers/timestamp.c:354 plugins/sudoers/timestamp.c:693 +#: plugins/sudoers/timestamp.c:379 plugins/sudoers/timestamp.c:718 #, c-format msgid "unable to truncate time stamp file to %lld bytes" -msgstr "" +msgstr "не удаётся обрезать файл временных метки до %lld байт" -#: plugins/sudoers/timestamp.c:890 +#: plugins/sudoers/timestamp.c:915 msgid "ignoring time stamp from the future" -msgstr "" +msgstr "игнорируется метка времени из будущего" -#: plugins/sudoers/timestamp.c:913 +#: plugins/sudoers/timestamp.c:938 #, c-format msgid "time stamp too far in the future: %20.20s" -msgstr "" +msgstr "метка времени находится слишком далеко в будущем: %20.20s" -#: plugins/sudoers/timestamp.c:1042 -#, fuzzy, c-format -#| msgid "unable to lock log file: %s: %s" +#: plugins/sudoers/timestamp.c:1067 +#, c-format msgid "unable to lock time stamp file %s" -msgstr "не удаётся заблокировать файл журнала: %s: %s" +msgstr "не удаётся заблокировать файл журнала %s" #: plugins/sudoers/toke_util.c:156 msgid "sudoedit should not be specified with a path" -msgstr "" - -#: plugins/sudoers/visudo.c:254 -msgid "the -x option will be removed in a future release" -msgstr "" - -#: plugins/sudoers/visudo.c:256 -msgid "please consider using the cvtsudoers utility instead" -msgstr "" +msgstr "sudoedit не следует указывать вместе с путём" -#: plugins/sudoers/visudo.c:311 plugins/sudoers/visudo.c:698 +#: plugins/sudoers/visudo.c:314 plugins/sudoers/visudo.c:705 #, c-format msgid "press return to edit %s: " -msgstr "" +msgstr "нажмите Enter для редактирования %s: " -#: plugins/sudoers/visudo.c:326 +#: plugins/sudoers/visudo.c:329 #, c-format msgid "contents of edit session left in %s" -msgstr "" +msgstr "данные сеанса редактирования оставлены в %s" -#: plugins/sudoers/visudo.c:402 +#: plugins/sudoers/visudo.c:406 #, c-format msgid "specified editor (%s) doesn't exist" -msgstr "" +msgstr "указанный редактор (%s) не существует" -#: plugins/sudoers/visudo.c:404 +#: plugins/sudoers/visudo.c:411 #, c-format msgid "no editor found (editor path = %s)" -msgstr "" +msgstr "редактор не найден (путь к редактору = %s)" -#: plugins/sudoers/visudo.c:491 plugins/sudoers/visudo.c:770 +#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:777 #, c-format msgid "unable to stat %s" -msgstr "" +msgstr "не удаётся выполнить stat для %s" -#: plugins/sudoers/visudo.c:511 plugins/sudoers/visudo.c:519 +#: plugins/sudoers/visudo.c:518 plugins/sudoers/visudo.c:526 msgid "write error" -msgstr "" +msgstr "ошибка записи" -#: plugins/sudoers/visudo.c:565 +#: plugins/sudoers/visudo.c:572 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" -msgstr "" +msgstr "не удаётся выполнить stat для временного файла (%s), %s не изменён" -#: plugins/sudoers/visudo.c:572 +#: plugins/sudoers/visudo.c:579 #, c-format msgid "zero length temporary file (%s), %s unchanged" -msgstr "" +msgstr "временный файл (%s) имеет нулевой размер, %s не изменён" -#: plugins/sudoers/visudo.c:578 +#: plugins/sudoers/visudo.c:585 #, c-format msgid "editor (%s) failed, %s unchanged" -msgstr "" +msgstr "ошибка редактора (%s), %s не изменён" -#: plugins/sudoers/visudo.c:600 +#: plugins/sudoers/visudo.c:607 #, c-format msgid "%s unchanged" -msgstr "" +msgstr "%s не изменён" -#: plugins/sudoers/visudo.c:645 +#: plugins/sudoers/visudo.c:652 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." -msgstr "" +msgstr "не удаётся повторно открыть временный файл (%s), %s не изменён." -#: plugins/sudoers/visudo.c:658 +#: plugins/sudoers/visudo.c:665 #, c-format msgid "unable to parse temporary file (%s), unknown error" -msgstr "" +msgstr "не удаётся разобрать временный файл (%s), неизвестная ошибка" -#: plugins/sudoers/visudo.c:744 plugins/sudoers/visudo.c:774 -#: plugins/sudoers/visudo.c:781 +#: plugins/sudoers/visudo.c:751 plugins/sudoers/visudo.c:781 +#: plugins/sudoers/visudo.c:788 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" -msgstr "" +msgstr "не удаётся назначить (uid, gid) %s в (%u, %u)" -#: plugins/sudoers/visudo.c:809 +#: plugins/sudoers/visudo.c:816 #, c-format msgid "%s and %s not on the same file system, using mv to rename" -msgstr "" +msgstr "%s и %s не находятся на одной файловой системе, для переименования используется mv" -#: plugins/sudoers/visudo.c:820 +#: plugins/sudoers/visudo.c:827 #, c-format msgid "command failed: '%s %s %s', %s unchanged" -msgstr "" +msgstr "ошибка команды: «%s %s %s», %s не изменён" -#: plugins/sudoers/visudo.c:827 +#: plugins/sudoers/visudo.c:834 #, c-format msgid "error renaming %s, %s unchanged" -msgstr "" +msgstr "не удаётся переименовать %s, %s не изменён" -#: plugins/sudoers/visudo.c:847 +#: plugins/sudoers/visudo.c:855 msgid "What now? " -msgstr "" +msgstr "Что дальше? " -#: plugins/sudoers/visudo.c:861 +#: plugins/sudoers/visudo.c:869 msgid "" "Options are:\n" " (e)dit sudoers file again\n" " e(x)it without saving changes to sudoers file\n" " (Q)uit and save changes to sudoers file (DANGER!)\n" msgstr "" +"Параметры:\n" +" (e) — повторно отредактировать файл sudoers\n" +" (x) — выйти без сохранения изменений файла sudoers\n" +" (Q) — выйти с сохранением изменений файла sudoers (ОПАСНО!)\n" -#: plugins/sudoers/visudo.c:907 +#: plugins/sudoers/visudo.c:915 #, c-format msgid "unable to run %s" -msgstr "" +msgstr "не удаётся запустить %s" -#: plugins/sudoers/visudo.c:938 +#: plugins/sudoers/visudo.c:946 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" -msgstr "" +msgstr "%s: некорректный владелец (uid, gid), должен быть (%u, %u)\n" -#: plugins/sudoers/visudo.c:949 +#: plugins/sudoers/visudo.c:957 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" -msgstr "" +msgstr "%s: некорректные права доступа, должны быть 0%o\n" -#: plugins/sudoers/visudo.c:997 plugins/sudoers/visudo.c:1004 +#: plugins/sudoers/visudo.c:1009 plugins/sudoers/visudo.c:1016 #, c-format msgid "%s: parsed OK\n" -msgstr "" +msgstr "%s: успешно обработан\n" -#: plugins/sudoers/visudo.c:1023 +#: plugins/sudoers/visudo.c:1035 #, c-format msgid "%s busy, try again later" -msgstr "" +msgstr "%s занят, попробуйте позже" -#: plugins/sudoers/visudo.c:1027 +#: plugins/sudoers/visudo.c:1039 msgid "Edit anyway? [y/N]" -msgstr "" +msgstr "Всё равно редактировать? [y/N]" + +#: plugins/sudoers/visudo.c:1197 +msgid "the -x option will be removed in a future release" +msgstr "параметр -x будет удалён в одной из будущих версий" -#: plugins/sudoers/visudo.c:1128 +#: plugins/sudoers/visudo.c:1199 +msgid "please consider using the cvtsudoers utility instead" +msgstr "пожалуйста, используйте программу cvtsudoers" + +#: plugins/sudoers/visudo.c:1219 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" -msgstr "" +msgstr "Внимание: %s:%d:%d: неиспользуемый %s \"%s\"" -#: plugins/sudoers/visudo.c:1240 +#: plugins/sudoers/visudo.c:1332 #, c-format msgid "" "%s - safely edit the sudoers file\n" "\n" msgstr "" +"%s - безопасное редактирование файла sudoers\n" +"\n" -#: plugins/sudoers/visudo.c:1242 +#: plugins/sudoers/visudo.c:1334 msgid "" "\n" "Options:\n" @@ -3806,40 +3780,58 @@ " -s, --strict strict syntax checking\n" " -V, --version display version information and exit\n" msgstr "" +"\n" +"Параметры:\n" +" -c, --check режим только проверки\n" +" -f, --file=sudoers указать путь к файлу sudoers\n" +" -h, --help показать справку и выйти\n" +" -I, --no-includes не редактировать включенные файлы\n" +" -q, --quiet скрыть сообщения о синтаксических ошибках\n" +" -s, --strict строгая проверка синтаксиса\n" +" -V, --version показать версию и выйти\n" -#: toke.l:189 +#: toke.l:184 msgid "empty string" -msgstr "" +msgstr "пустая строка" -#: toke.l:201 toke.l:571 +#: toke.l:196 toke.l:566 msgid "empty group" -msgstr "" +msgstr "пустая группа" -#: toke.l:211 toke.l:569 +#: toke.l:206 toke.l:564 msgid "empty netgroup" -msgstr "" +msgstr "пустая сетевая группа" -#: toke.l:289 +#: toke.l:284 msgid "unterminated regular expression" -msgstr "" +msgstr "незавершённое регулярное выражение" -#: toke.l:363 toke.l:375 toke.l:387 toke.l:403 toke.l:422 toke.l:462 -#, fuzzy -#| msgid "invalid authentication type" +#: toke.l:358 toke.l:370 toke.l:382 toke.l:398 toke.l:417 toke.l:457 msgid "invalid line continuation" -msgstr "некорректный тип аутентификации" +msgstr "некорректное продолжение строки" -#: toke.l:608 toke.l:620 +#: toke.l:603 toke.l:615 msgid "invalid IPv6 address" -msgstr "" +msgstr "некорректный адрес IPv6" -#: toke.l:868 +#: toke.l:863 msgid "unexpected line break in string" -msgstr "" +msgstr "неожиданный перенос строки" + +#: toke.l:983 +msgid "ignoring editor backup file" +msgstr "игнорируется резервная копия файла, созданная редактором" -#: toke.l:1218 +#: toke.l:986 +msgid "ignoring file name containing '.'" +msgstr "игнорируется имя файла, содержащее '.'" + +#: toke.l:1289 msgid "too many levels of includes" -msgstr "слишком много уровней включения" +msgstr "ошибка синтаксиса" + +#~ msgid "timestamp owner (%s): No such user" +#~ msgstr "владелец временной метки (%s): Нет такого пользователя" #~ msgid "" #~ "\n" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/plugins/sudoers/po/sr.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/plugins/sudoers/po/sr.mo differ diff -Nru sudo-1.9.13p3/plugins/sudoers/po/sr.po sudo-1.9.14p2/plugins/sudoers/po/sr.po --- sudo-1.9.13p3/plugins/sudoers/po/sr.po 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/po/sr.po 2023-07-15 15:37:21.000000000 +0000 @@ -1,13 +1,13 @@ # Serbian translation for sudoers. # This file is put in the public domain. -# Мирослав Николић , 2014–2022. +# Мирослав Николић , 2014–2023. # msgid "" msgstr "" -"Project-Id-Version: sudoers-1.9.11b1\n" +"Project-Id-Version: sudoers-1.9.13b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2022-05-27 08:39-0600\n" -"PO-Revision-Date: 2022-08-22 21:33+0200\n" +"POT-Creation-Date: 2023-01-24 13:11-0700\n" +"PO-Revision-Date: 2023-02-26 09:48+0100\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" @@ -16,8 +16,9 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Gtranslator 41.0\n" -#: confstr.sh:1 gram.y:1218 +#: confstr.sh:1 gram.y:1220 plugins/sudoers/logging.c:866 msgid "syntax error" msgstr "грешка синтаксе" @@ -41,46 +42,59 @@ msgid "Sorry, try again." msgstr "Извините, покушајте поново." -#: gram.y:236 gram.y:303 gram.y:312 gram.y:321 gram.y:331 gram.y:341 -#: gram.y:365 gram.y:392 gram.y:401 gram.y:409 gram.y:418 gram.y:427 -#: gram.y:501 gram.y:511 gram.y:523 gram.y:571 gram.y:580 gram.y:589 -#: gram.y:598 gram.y:730 gram.y:738 gram.y:749 gram.y:761 gram.y:780 -#: gram.y:943 gram.y:948 gram.y:956 gram.y:970 gram.y:976 gram.y:1098 -#: gram.y:1107 gram.y:1115 gram.y:1124 gram.y:1133 gram.y:1162 gram.y:1171 -#: gram.y:1179 gram.y:1272 gram.y:1402 gram.y:1769 gram.y:1816 -#: lib/eventlog/eventlog.c:309 lib/eventlog/eventlog.c:382 -#: lib/eventlog/eventlog.c:827 lib/eventlog/eventlog.c:904 -#: lib/eventlog/eventlog.c:1204 lib/iolog/iolog_filter.c:142 +#: gram.y:237 gram.y:304 gram.y:313 gram.y:322 gram.y:332 gram.y:342 +#: gram.y:366 gram.y:393 gram.y:402 gram.y:410 gram.y:419 gram.y:428 +#: gram.y:502 gram.y:512 gram.y:524 gram.y:572 gram.y:581 gram.y:590 +#: gram.y:599 gram.y:731 gram.y:739 gram.y:750 gram.y:762 gram.y:781 +#: gram.y:944 gram.y:949 gram.y:957 gram.y:971 gram.y:977 gram.y:1099 +#: gram.y:1108 gram.y:1116 gram.y:1125 gram.y:1134 gram.y:1163 gram.y:1172 +#: gram.y:1180 gram.y:1280 gram.y:1410 gram.y:1777 gram.y:1827 +#: lib/eventlog/eventlog.c:235 lib/eventlog/eventlog.c:312 +#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:834 +#: lib/eventlog/eventlog.c:1135 lib/iolog/iolog_filter.c:142 #: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:233 #: lib/iolog/iolog_json.c:150 lib/iolog/iolog_json.c:382 -#: lib/iolog/iolog_json.c:412 lib/iolog/iolog_json.c:555 -#: 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:212 logsrvd/iolog_writer.c:84 -#: logsrvd/iolog_writer.c:89 logsrvd/iolog_writer.c:123 -#: 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:64 logsrvd/logsrvd.c:296 -#: logsrvd/logsrvd.c:305 logsrvd/logsrvd.c:1012 logsrvd/logsrvd.c:1075 -#: logsrvd/logsrvd_conf.c:1443 logsrvd/logsrvd_journal.c:70 -#: logsrvd/logsrvd_journal.c:203 logsrvd/logsrvd_journal.c:204 -#: logsrvd/logsrvd_journal.c:260 logsrvd/logsrvd_journal.c:420 -#: logsrvd/logsrvd_journal.c:422 logsrvd/logsrvd_local.c:174 -#: logsrvd/logsrvd_local.c:175 logsrvd/logsrvd_local.c:237 -#: logsrvd/logsrvd_local.c:238 logsrvd/logsrvd_local.c:376 -#: logsrvd/logsrvd_local.c:425 logsrvd/logsrvd_local.c:426 -#: logsrvd/logsrvd_local.c:431 logsrvd/logsrvd_local.c:432 -#: logsrvd/logsrvd_queue.c:154 logsrvd/logsrvd_queue.c:184 -#: logsrvd/logsrvd_queue.c:261 logsrvd/logsrvd_relay.c:439 -#: logsrvd/logsrvd_relay.c:738 logsrvd/logsrvd_relay.c:845 -#: logsrvd/sendlog.c:246 logsrvd/sendlog.c:255 logsrvd/sendlog.c:333 -#: logsrvd/sendlog.c:640 plugins/sudoers/audit.c:116 +#: lib/iolog/iolog_json.c:412 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:212 +#: logsrvd/iolog_writer.c:95 logsrvd/iolog_writer.c:100 +#: logsrvd/iolog_writer.c:134 logsrvd/iolog_writer.c:182 +#: logsrvd/iolog_writer.c:215 logsrvd/iolog_writer.c:225 +#: logsrvd/iolog_writer.c:254 logsrvd/iolog_writer.c:275 +#: logsrvd/iolog_writer.c:287 logsrvd/iolog_writer.c:297 +#: logsrvd/iolog_writer.c:307 logsrvd/iolog_writer.c:317 +#: logsrvd/iolog_writer.c:329 logsrvd/iolog_writer.c:364 +#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:377 +#: logsrvd/iolog_writer.c:383 logsrvd/iolog_writer.c:567 +#: logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 logsrvd/logsrvd.c:310 +#: logsrvd/logsrvd.c:1050 logsrvd/logsrvd.c:1113 logsrvd/logsrvd.c:1582 +#: logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 logsrvd/logsrvd.c:1988 +#: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 +#: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 +#: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 +#: logsrvd/logsrvd_conf.c:626 logsrvd/logsrvd_conf.c:650 +#: logsrvd/logsrvd_conf.c:678 logsrvd/logsrvd_conf.c:692 +#: logsrvd/logsrvd_conf.c:706 logsrvd/logsrvd_conf.c:720 +#: logsrvd/logsrvd_conf.c:734 logsrvd/logsrvd_conf.c:748 +#: logsrvd/logsrvd_conf.c:829 logsrvd/logsrvd_conf.c:1036 +#: logsrvd/logsrvd_conf.c:1053 logsrvd/logsrvd_conf.c:1448 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1621 +#: logsrvd/logsrvd_conf.c:1633 logsrvd/logsrvd_conf.c:1640 +#: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1743 +#: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:216 +#: logsrvd/logsrvd_journal.c:217 logsrvd/logsrvd_journal.c:273 +#: logsrvd/logsrvd_journal.c:433 logsrvd/logsrvd_journal.c:435 +#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:216 +#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:279 +#: logsrvd/logsrvd_local.c:417 logsrvd/logsrvd_local.c:466 +#: logsrvd/logsrvd_local.c:467 logsrvd/logsrvd_local.c:472 +#: logsrvd/logsrvd_local.c:473 logsrvd/logsrvd_queue.c:159 +#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 +#: logsrvd/logsrvd_relay.c:444 logsrvd/logsrvd_relay.c:743 +#: logsrvd/logsrvd_relay.c:850 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 +#: logsrvd/sendlog.c:291 logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 +#: logsrvd/sendlog.c:1801 plugins/sudoers/audit.c:116 #: plugins/sudoers/auth/bsdauth.c:150 plugins/sudoers/auth/kerb5.c:121 #: plugins/sudoers/auth/kerb5.c:148 plugins/sudoers/auth/pam.c:687 #: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 @@ -110,191 +124,206 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1158 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 -#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:190 -#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 +#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 +#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/env.c:263 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/gc.c:57 plugins/sudoers/group_plugin.c:212 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 #: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:464 -#: plugins/sudoers/ldap.c:755 plugins/sudoers/ldap.c:919 -#: plugins/sudoers/ldap.c:1335 plugins/sudoers/ldap.c:1761 -#: plugins/sudoers/ldap.c:1798 plugins/sudoers/ldap.c:1879 -#: plugins/sudoers/ldap.c:2014 plugins/sudoers/ldap.c:2115 -#: plugins/sudoers/ldap.c:2131 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:443 -#: plugins/sudoers/ldap_conf.c:458 plugins/sudoers/ldap_conf.c:563 -#: plugins/sudoers/ldap_conf.c:596 plugins/sudoers/ldap_conf.c:688 -#: plugins/sudoers/ldap_conf.c:770 plugins/sudoers/ldap_util.c:294 -#: plugins/sudoers/ldap_util.c:301 plugins/sudoers/ldap_util.c:614 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:112 -#: plugins/sudoers/log_client.c:397 plugins/sudoers/log_client.c:710 -#: plugins/sudoers/log_client.c:731 plugins/sudoers/log_client.c:1451 -#: plugins/sudoers/log_client.c:1672 plugins/sudoers/log_client.c:2003 -#: plugins/sudoers/log_client.c:2059 plugins/sudoers/logging.c:112 -#: plugins/sudoers/logging.c:193 plugins/sudoers/logging.c:461 -#: plugins/sudoers/logging.c:675 plugins/sudoers/logging.c:812 -#: plugins/sudoers/match_command.c:333 plugins/sudoers/match_command.c:594 -#: plugins/sudoers/match_command.c:645 plugins/sudoers/match_command.c:719 -#: plugins/sudoers/match_command.c:767 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:227 plugins/sudoers/parse.c:244 -#: plugins/sudoers/parse.c:263 plugins/sudoers/parse.c:282 -#: plugins/sudoers/parse.c:299 plugins/sudoers/parse.c:322 -#: plugins/sudoers/parse.c:333 plugins/sudoers/parse_ldif.c:153 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 +#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 +#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 +#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 +#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 +#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 +#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 +#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 +#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 +#: plugins/sudoers/ldap_conf.c:689 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/ldap_util.c:294 plugins/sudoers/ldap_util.c:301 +#: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 +#: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:402 +#: plugins/sudoers/log_client.c:715 plugins/sudoers/log_client.c:736 +#: plugins/sudoers/log_client.c:1415 plugins/sudoers/log_client.c:1536 +#: plugins/sudoers/log_client.c:1636 plugins/sudoers/log_client.c:1972 +#: plugins/sudoers/log_client.c:2031 plugins/sudoers/logging.c:110 +#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 +#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 +#: plugins/sudoers/match_command.c:335 plugins/sudoers/match_command.c:603 +#: plugins/sudoers/match_command.c:654 plugins/sudoers/match_command.c:728 +#: plugins/sudoers/match_command.c:776 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:267 plugins/sudoers/parse.c:284 +#: plugins/sudoers/parse.c:303 plugins/sudoers/parse.c:322 +#: plugins/sudoers/parse.c:339 plugins/sudoers/parse.c:362 +#: plugins/sudoers/parse.c:373 plugins/sudoers/parse_ldif.c:153 #: plugins/sudoers/parse_ldif.c:184 plugins/sudoers/parse_ldif.c:253 #: plugins/sudoers/parse_ldif.c:261 plugins/sudoers/parse_ldif.c:266 #: plugins/sudoers/parse_ldif.c:342 plugins/sudoers/parse_ldif.c:353 #: plugins/sudoers/parse_ldif.c:380 plugins/sudoers/parse_ldif.c:397 #: plugins/sudoers/parse_ldif.c:409 plugins/sudoers/parse_ldif.c:413 #: plugins/sudoers/parse_ldif.c:427 plugins/sudoers/parse_ldif.c:484 -#: plugins/sudoers/parse_ldif.c:597 plugins/sudoers/parse_ldif.c:627 -#: plugins/sudoers/parse_ldif.c:652 plugins/sudoers/parse_ldif.c:710 -#: plugins/sudoers/parse_ldif.c:727 plugins/sudoers/parse_ldif.c:755 -#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:606 -#: plugins/sudoers/policy.c:998 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:628 +#: plugins/sudoers/parse_ldif.c:653 plugins/sudoers/parse_ldif.c:711 +#: plugins/sudoers/parse_ldif.c:728 plugins/sudoers/parse_ldif.c:756 +#: plugins/sudoers/parse_ldif.c:763 plugins/sudoers/policy.c:626 +#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 #: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 #: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 #: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 -#: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:913 -#: plugins/sudoers/pwutil.c:957 plugins/sudoers/pwutil.c:1014 +#: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 +#: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 #: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:185 #: plugins/sudoers/sssd.c:414 plugins/sudoers/sssd.c:479 #: plugins/sudoers/sssd.c:505 plugins/sudoers/sssd.c:568 #: plugins/sudoers/sssd.c:761 plugins/sudoers/strvec_join.c:53 -#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:349 plugins/sudoers/sudoers.c:375 -#: plugins/sudoers/sudoers.c:443 plugins/sudoers/sudoers.c:452 -#: plugins/sudoers/sudoers.c:493 plugins/sudoers/sudoers.c:858 -#: plugins/sudoers/sudoers.c:996 plugins/sudoers/sudoers.c:1055 -#: plugins/sudoers/sudoers.c:1320 plugins/sudoers/sudoreplay.c:562 -#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1281 -#: plugins/sudoers/sudoreplay.c:1503 plugins/sudoers/sudoreplay.c:1507 +#: plugins/sudoers/stubs.c:112 plugins/sudoers/stubs.c:120 +#: plugins/sudoers/sudoers.c:354 plugins/sudoers/sudoers.c:380 +#: plugins/sudoers/sudoers.c:447 plugins/sudoers/sudoers.c:464 +#: plugins/sudoers/sudoers.c:505 plugins/sudoers/sudoers.c:849 +#: plugins/sudoers/sudoers.c:902 plugins/sudoers/sudoers.c:1054 +#: plugins/sudoers/sudoers.c:1114 plugins/sudoers/sudoers.c:1369 +#: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 +#: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 #: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 -#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:581 -#: plugins/sudoers/timestamp.c:424 plugins/sudoers/timestamp.c:468 -#: plugins/sudoers/timestamp.c:980 plugins/sudoers/timestamp.c:1118 +#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:588 +#: plugins/sudoers/timestamp.c:451 plugins/sudoers/timestamp.c:495 +#: plugins/sudoers/timestamp.c:1017 plugins/sudoers/timestamp.c:1146 #: plugins/sudoers/toke_util.c:78 plugins/sudoers/toke_util.c:106 #: plugins/sudoers/toke_util.c:131 plugins/sudoers/toke_util.c:161 #: plugins/sudoers/toke_util.c:200 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:148 plugins/sudoers/visudo.c:380 -#: plugins/sudoers/visudo.c:386 plugins/sudoers/visudo.c:492 -#: plugins/sudoers/visudo.c:1048 toke.l:1023 toke.l:1155 toke.l:1226 +#: plugins/sudoers/visudo.c:150 plugins/sudoers/visudo.c:385 +#: plugins/sudoers/visudo.c:391 plugins/sudoers/visudo.c:502 +#: plugins/sudoers/visudo.c:1056 toke.l:1031 toke.l:1163 toke.l:1234 msgid "unable to allocate memory" msgstr "не могу да доделим меморију" -#: gram.y:622 +#: gram.y:623 msgid "a digest requires a path name" msgstr "зборник захтева назив путање" -#: gram.y:644 +#: gram.y:645 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "вредност за „CWD“ мора почети са /, ~, или *" -#: gram.y:650 +#: gram.y:651 msgid "\"CWD\" path too long" msgstr "„CWD“ путања је предуга" -#: gram.y:660 +#: gram.y:661 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "вредност за „CHROOT“ мора почети са /, ~, или *" -#: gram.y:666 +#: gram.y:667 msgid "\"CHROOT\" path too long" msgstr "„CHROOT“ путања је предуга" -#: gram.y:801 +#: gram.y:802 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "грешка синтаксе, резервисана реч „%s“ је коришћена као назив алијаса" -#: gram.y:824 +#: gram.y:825 msgid "invalid notbefore value" msgstr "неисправна вредност не-пре" -#: gram.y:833 +#: gram.y:834 msgid "invalid notafter value" msgstr "неисправна вредност не-после" -#: gram.y:843 plugins/sudoers/policy.c:376 +#: gram.y:844 plugins/sudoers/policy.c:385 msgid "timeout value too large" msgstr "вредност временског истека је превелика" -#: gram.y:845 plugins/sudoers/policy.c:378 +#: gram.y:846 plugins/sudoers/policy.c:387 msgid "invalid timeout value" msgstr "неисправна вредност временског ограничења" -#: gram.y:966 plugins/sudoers/sudoers.c:1014 +#: gram.y:967 plugins/sudoers/sudoers.c:1072 msgid "command too long" msgstr "наредба је предуга" -#: gram.y:1220 plugins/sudoers/check_aliases.c:96 -#: plugins/sudoers/defaults.c:1275 +#: gram.y:1224 plugins/sudoers/check_aliases.c:96 +#: plugins/sudoers/defaults.c:1276 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1270 +#: gram.y:1278 #, c-format msgid "Alias \"%s\" already defined" msgstr "Псеудоним „%s“ је већ одређен" -#: gram.y:1769 gram.y:1816 lib/eventlog/eventlog.c:309 -#: lib/eventlog/eventlog.c:827 lib/eventlog/eventlog.c:900 -#: lib/eventlog/eventlog.c:903 lib/eventlog/eventlog.c:1204 +#: gram.y:1777 gram.y:1827 lib/eventlog/eventlog.c:235 +#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:830 +#: lib/eventlog/eventlog.c:833 lib/eventlog/eventlog.c:1135 #: lib/iolog/iolog_filter.c:142 lib/iolog/iolog_filter.c:202 #: lib/iolog/iolog_filter.c:232 lib/iolog/iolog_json.c:150 #: lib/iolog/iolog_json.c:381 lib/iolog/iolog_json.c:412 -#: lib/iolog/iolog_json.c:555 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:212 -#: logsrvd/iolog_writer.c:84 logsrvd/iolog_writer.c:89 -#: logsrvd/iolog_writer.c:123 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:64 logsrvd/logsrvd.c:296 logsrvd/logsrvd.c:305 -#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:593 -#: logsrvd/logsrvd.c:1086 logsrvd/logsrvd.c:1403 logsrvd/logsrvd.c:1410 -#: logsrvd/logsrvd_conf.c:1443 logsrvd/logsrvd_journal.c:70 -#: logsrvd/logsrvd_journal.c:114 logsrvd/logsrvd_journal.c:203 -#: logsrvd/logsrvd_journal.c:233 logsrvd/logsrvd_journal.c:237 -#: logsrvd/logsrvd_journal.c:245 logsrvd/logsrvd_journal.c:268 -#: logsrvd/logsrvd_journal.c:272 logsrvd/logsrvd_journal.c:420 -#: logsrvd/logsrvd_local.c:174 logsrvd/logsrvd_local.c:237 -#: logsrvd/logsrvd_local.c:425 logsrvd/logsrvd_local.c:431 -#: logsrvd/logsrvd_local.c:450 logsrvd/logsrvd_queue.c:153 -#: logsrvd/logsrvd_queue.c:184 logsrvd/logsrvd_queue.c:261 -#: logsrvd/sendlog.c:246 logsrvd/sendlog.c:255 logsrvd/sendlog.c:333 -#: logsrvd/sendlog.c:640 logsrvd/sendlog.c:1526 logsrvd/sendlog.c:1533 -#: logsrvd/sendlog.c:1756 logsrvd/tls_init.c:299 logsrvd/tls_init.c:323 -#: logsrvd/tls_init.c:334 plugins/sudoers/audit.c:116 -#: plugins/sudoers/auth/pam.c:502 plugins/sudoers/auth/pam.c:687 -#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:168 -#: plugins/sudoers/cvtsudoers.c:131 plugins/sudoers/cvtsudoers.c:174 -#: plugins/sudoers/cvtsudoers.c:191 plugins/sudoers/cvtsudoers.c:202 -#: plugins/sudoers/cvtsudoers.c:332 plugins/sudoers/cvtsudoers.c:536 -#: plugins/sudoers/cvtsudoers.c:669 plugins/sudoers/cvtsudoers.c:687 -#: plugins/sudoers/cvtsudoers.c:862 plugins/sudoers/cvtsudoers.c:869 -#: plugins/sudoers/cvtsudoers.c:1365 plugins/sudoers/cvtsudoers.c:1369 -#: plugins/sudoers/cvtsudoers.c:1471 plugins/sudoers/cvtsudoers_csv.c:182 -#: plugins/sudoers/cvtsudoers_csv.c:245 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:375 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:437 plugins/sudoers/cvtsudoers_ldif.c:448 -#: plugins/sudoers/cvtsudoers_ldif.c:455 plugins/sudoers/cvtsudoers_ldif.c:467 -#: plugins/sudoers/cvtsudoers_ldif.c:480 plugins/sudoers/cvtsudoers_ldif.c:488 -#: plugins/sudoers/cvtsudoers_ldif.c:635 plugins/sudoers/cvtsudoers_merge.c:47 -#: plugins/sudoers/cvtsudoers_merge.c:51 +#: 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:212 logsrvd/iolog_writer.c:95 +#: logsrvd/iolog_writer.c:100 logsrvd/iolog_writer.c:134 +#: logsrvd/iolog_writer.c:171 logsrvd/iolog_writer.c:181 +#: logsrvd/iolog_writer.c:194 logsrvd/iolog_writer.c:214 +#: logsrvd/iolog_writer.c:224 logsrvd/iolog_writer.c:243 +#: logsrvd/iolog_writer.c:253 logsrvd/iolog_writer.c:264 +#: logsrvd/iolog_writer.c:274 logsrvd/iolog_writer.c:286 +#: logsrvd/iolog_writer.c:296 logsrvd/iolog_writer.c:306 +#: logsrvd/iolog_writer.c:316 logsrvd/iolog_writer.c:328 +#: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 +#: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 +#: logsrvd/logsrvd.c:310 logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:490 +#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:611 +#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:732 +#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1439 logsrvd/logsrvd.c:1446 +#: logsrvd/logsrvd.c:1582 logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 +#: logsrvd/logsrvd.c:1988 logsrvd/logsrvd_conf.c:357 +#: logsrvd/logsrvd_conf.c:370 logsrvd/logsrvd_conf.c:511 +#: logsrvd/logsrvd_conf.c:534 logsrvd/logsrvd_conf.c:538 +#: logsrvd/logsrvd_conf.c:556 logsrvd/logsrvd_conf.c:626 +#: logsrvd/logsrvd_conf.c:649 logsrvd/logsrvd_conf.c:678 +#: logsrvd/logsrvd_conf.c:692 logsrvd/logsrvd_conf.c:706 +#: logsrvd/logsrvd_conf.c:720 logsrvd/logsrvd_conf.c:734 +#: logsrvd/logsrvd_conf.c:748 logsrvd/logsrvd_conf.c:829 +#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1053 +#: logsrvd/logsrvd_conf.c:1448 logsrvd/logsrvd_conf.c:1595 +#: logsrvd/logsrvd_conf.c:1621 logsrvd/logsrvd_conf.c:1633 +#: logsrvd/logsrvd_conf.c:1640 logsrvd/logsrvd_conf.c:1646 +#: logsrvd/logsrvd_conf.c:1742 logsrvd/logsrvd_journal.c:76 +#: logsrvd/logsrvd_journal.c:125 logsrvd/logsrvd_journal.c:216 +#: logsrvd/logsrvd_journal.c:246 logsrvd/logsrvd_journal.c:250 +#: logsrvd/logsrvd_journal.c:258 logsrvd/logsrvd_journal.c:281 +#: logsrvd/logsrvd_journal.c:285 logsrvd/logsrvd_journal.c:433 +#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:278 +#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:472 +#: logsrvd/logsrvd_local.c:491 logsrvd/logsrvd_queue.c:158 +#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 +#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:291 +#: logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 logsrvd/sendlog.c:1503 +#: logsrvd/sendlog.c:1510 logsrvd/sendlog.c:1733 logsrvd/sendlog.c:1801 +#: logsrvd/tls_init.c:305 logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 +#: plugins/sudoers/audit.c:116 plugins/sudoers/auth/pam.c:502 +#: plugins/sudoers/auth/pam.c:687 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 +#: plugins/sudoers/cvtsudoers.c:174 plugins/sudoers/cvtsudoers.c:191 +#: plugins/sudoers/cvtsudoers.c:202 plugins/sudoers/cvtsudoers.c:332 +#: plugins/sudoers/cvtsudoers.c:536 plugins/sudoers/cvtsudoers.c:669 +#: plugins/sudoers/cvtsudoers.c:687 plugins/sudoers/cvtsudoers.c:862 +#: plugins/sudoers/cvtsudoers.c:869 plugins/sudoers/cvtsudoers.c:1365 +#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 +#: plugins/sudoers/cvtsudoers_csv.c:182 plugins/sudoers/cvtsudoers_csv.c:245 +#: 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:375 +#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:437 +#: plugins/sudoers/cvtsudoers_ldif.c:448 plugins/sudoers/cvtsudoers_ldif.c:455 +#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:480 +#: plugins/sudoers/cvtsudoers_ldif.c:488 plugins/sudoers/cvtsudoers_ldif.c:635 +#: plugins/sudoers/cvtsudoers_merge.c:47 plugins/sudoers/cvtsudoers_merge.c:51 #: plugins/sudoers/cvtsudoers_merge.c:353 #: plugins/sudoers/cvtsudoers_merge.c:399 #: plugins/sudoers/cvtsudoers_merge.c:445 @@ -306,150 +335,131 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1157 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 -#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:190 -#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92 +#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 +#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/env.c:263 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/gc.c:57 plugins/sudoers/group_plugin.c:211 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 #: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:464 -#: plugins/sudoers/ldap.c:755 plugins/sudoers/ldap.c:919 -#: plugins/sudoers/ldap.c:1335 plugins/sudoers/ldap.c:1761 -#: plugins/sudoers/ldap.c:1798 plugins/sudoers/ldap.c:1879 -#: plugins/sudoers/ldap.c:2014 plugins/sudoers/ldap.c:2115 -#: plugins/sudoers/ldap.c:2131 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:443 -#: plugins/sudoers/ldap_conf.c:458 plugins/sudoers/ldap_conf.c:563 -#: plugins/sudoers/ldap_conf.c:596 plugins/sudoers/ldap_conf.c:687 -#: plugins/sudoers/ldap_conf.c:770 plugins/sudoers/ldap_util.c:293 -#: plugins/sudoers/ldap_util.c:300 plugins/sudoers/ldap_util.c:614 -#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:112 -#: plugins/sudoers/log_client.c:223 plugins/sudoers/log_client.c:245 -#: plugins/sudoers/log_client.c:259 plugins/sudoers/log_client.c:397 -#: plugins/sudoers/log_client.c:710 plugins/sudoers/log_client.c:731 -#: plugins/sudoers/log_client.c:1451 plugins/sudoers/log_client.c:1672 -#: plugins/sudoers/log_client.c:2003 plugins/sudoers/log_client.c:2059 -#: plugins/sudoers/logging.c:112 plugins/sudoers/logging.c:192 -#: plugins/sudoers/logging.c:193 plugins/sudoers/logging.c:461 -#: plugins/sudoers/logging.c:675 plugins/sudoers/logging.c:812 -#: plugins/sudoers/logging.c:882 plugins/sudoers/logging.c:894 -#: plugins/sudoers/match_command.c:332 plugins/sudoers/match_command.c:593 -#: plugins/sudoers/match_command.c:644 plugins/sudoers/match_command.c:719 -#: plugins/sudoers/match_command.c:766 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:226 plugins/sudoers/parse.c:243 -#: plugins/sudoers/parse.c:262 plugins/sudoers/parse.c:281 -#: plugins/sudoers/parse.c:298 plugins/sudoers/parse.c:321 -#: plugins/sudoers/parse.c:332 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 +#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 +#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 +#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 +#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 +#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 +#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 +#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 +#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 +#: plugins/sudoers/ldap_conf.c:688 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/ldap_util.c:293 plugins/sudoers/ldap_util.c:300 +#: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 +#: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:228 +#: plugins/sudoers/log_client.c:250 plugins/sudoers/log_client.c:264 +#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:715 +#: plugins/sudoers/log_client.c:736 plugins/sudoers/log_client.c:1415 +#: plugins/sudoers/log_client.c:1536 plugins/sudoers/log_client.c:1636 +#: plugins/sudoers/log_client.c:1972 plugins/sudoers/log_client.c:2031 +#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:188 +#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 +#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 +#: plugins/sudoers/logging.c:880 plugins/sudoers/logging.c:892 +#: plugins/sudoers/match_command.c:334 plugins/sudoers/match_command.c:602 +#: plugins/sudoers/match_command.c:653 plugins/sudoers/match_command.c:728 +#: plugins/sudoers/match_command.c:775 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:266 plugins/sudoers/parse.c:283 +#: plugins/sudoers/parse.c:302 plugins/sudoers/parse.c:321 +#: plugins/sudoers/parse.c:338 plugins/sudoers/parse.c:361 +#: plugins/sudoers/parse.c:372 plugins/sudoers/parse_ldif.c:152 #: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 #: 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:484 -#: plugins/sudoers/parse_ldif.c:597 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:152 -#: plugins/sudoers/policy.c:161 plugins/sudoers/policy.c:170 -#: plugins/sudoers/policy.c:198 plugins/sudoers/policy.c:361 -#: plugins/sudoers/policy.c:376 plugins/sudoers/policy.c:378 -#: plugins/sudoers/policy.c:414 plugins/sudoers/policy.c:423 -#: plugins/sudoers/policy.c:471 plugins/sudoers/policy.c:481 -#: plugins/sudoers/policy.c:490 plugins/sudoers/policy.c:499 -#: plugins/sudoers/policy.c:606 plugins/sudoers/policy.c:998 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:199 -#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 -#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:587 -#: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:857 -#: plugins/sudoers/pwutil.c:913 plugins/sudoers/pwutil.c:957 -#: plugins/sudoers/pwutil.c:1014 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:185 -#: plugins/sudoers/sssd.c:414 plugins/sudoers/sssd.c:479 -#: plugins/sudoers/sssd.c:505 plugins/sudoers/sssd.c:568 -#: plugins/sudoers/sssd.c:761 plugins/sudoers/strvec_join.c:53 -#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119 -#: plugins/sudoers/sudoers.c:349 plugins/sudoers/sudoers.c:375 -#: plugins/sudoers/sudoers.c:443 plugins/sudoers/sudoers.c:452 -#: plugins/sudoers/sudoers.c:493 plugins/sudoers/sudoers.c:858 -#: plugins/sudoers/sudoers.c:996 plugins/sudoers/sudoers.c:1055 -#: plugins/sudoers/sudoers.c:1320 plugins/sudoers/sudoreplay.c:562 -#: plugins/sudoers/sudoreplay.c:565 plugins/sudoers/sudoreplay.c:1281 -#: plugins/sudoers/sudoreplay.c:1503 plugins/sudoers/sudoreplay.c:1507 -#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 -#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:581 -#: 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:78 plugins/sudoers/toke_util.c:106 -#: plugins/sudoers/toke_util.c:131 plugins/sudoers/toke_util.c:160 -#: plugins/sudoers/toke_util.c:200 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:148 plugins/sudoers/visudo.c:380 -#: plugins/sudoers/visudo.c:386 plugins/sudoers/visudo.c:492 -#: plugins/sudoers/visudo.c:1048 toke.l:1023 toke.l:1155 toke.l:1218 -#: toke.l:1226 +#: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:627 +#: plugins/sudoers/parse_ldif.c:652 plugins/sudoers/parse_ldif.c:710 +#: plugins/sudoers/parse_ldif.c:727 plugins/sudoers/parse_ldif.c:755 +#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:154 +#: plugins/sudoers/policy.c:163 plugins/sudoers/policy.c:172 +#: plugins/sudoers/policy.c:201 plugins/sudoers/policy.c:370 +#: plugins/sudoers/policy.c:385 plugins/sudoers/policy.c:387 +#: plugins/sudoers/policy.c:425 plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:482 plugins/sudoers/policy.c:492 +#: plugins/sudoers/policy.c:501 plugins/sudoers/policy.c:510 +#: plugins/sudoers/policy.c:519 plugins/sudoers/policy.c:626 +#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 +#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 +#: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 +#: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 +#: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 +#: 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:185 plugins/sudoers/sssd.c:414 +#: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:761 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:112 +#: plugins/sudoers/stubs.c:120 plugins/sudoers/sudoers.c:354 +#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:447 +#: plugins/sudoers/sudoers.c:464 plugins/sudoers/sudoers.c:505 +#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:902 +#: plugins/sudoers/sudoers.c:1054 plugins/sudoers/sudoers.c:1114 +#: plugins/sudoers/sudoers.c:1369 plugins/sudoers/sudoreplay.c:559 +#: plugins/sudoers/sudoreplay.c:562 plugins/sudoers/sudoreplay.c:1278 +#: plugins/sudoers/sudoreplay.c:1334 plugins/sudoers/sudoreplay.c:1530 +#: plugins/sudoers/sudoreplay.c:1534 plugins/sudoers/testsudoers.c:120 +#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 +#: plugins/sudoers/testsudoers.c:588 plugins/sudoers/timestamp.c:451 +#: plugins/sudoers/timestamp.c:495 plugins/sudoers/timestamp.c:1017 +#: plugins/sudoers/timestamp.c:1146 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 +#: plugins/sudoers/toke_util.c:160 plugins/sudoers/toke_util.c:200 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:150 +#: plugins/sudoers/visudo.c:385 plugins/sudoers/visudo.c:391 +#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:1056 toke.l:1031 +#: toke.l:1163 toke.l:1226 toke.l:1234 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:314 lib/iolog/iolog_json.c:562 -#: lib/iolog/iolog_json.c:568 lib/iolog/iolog_json.c:574 -#: plugins/sudoers/cvtsudoers_csv.c:192 plugins/sudoers/cvtsudoers_csv.c:199 -#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 -#: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:326 -#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444 -#: plugins/sudoers/ldap.c:526 plugins/sudoers/ldap.c:759 -#: plugins/sudoers/ldap.c:1132 plugins/sudoers/ldap_conf.c:222 -#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/ldap_util.c:486 -#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:465 -#: plugins/sudoers/logging.c:820 plugins/sudoers/logging.c:830 -#: plugins/sudoers/policy.c:776 plugins/sudoers/policy.c:787 -#: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 -#: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 -#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/toke_util.c:213 -#: toke.l:987 toke.l:1189 -#, c-format -msgid "internal error, %s overflow" -msgstr "унутрашња грешка, прекорачење „%s“" - -#: lib/eventlog/eventlog.c:373 +#: lib/eventlog/eventlog.c:303 #, c-format msgid "unable to dup stdin: %m" msgstr "не могу да удвостручим стандардни улаз: %m" -#: lib/eventlog/eventlog.c:415 +#: lib/eventlog/eventlog.c:345 #, c-format msgid "unable to execute %s: %m" msgstr "не могу да извршим „%s“: %m" -#: lib/eventlog/eventlog.c:463 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:393 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "не могу да исцепим" -#: lib/eventlog/eventlog.c:473 lib/eventlog/eventlog.c:538 +#: lib/eventlog/eventlog.c:403 lib/eventlog/eventlog.c:468 #, c-format msgid "unable to fork: %m" msgstr "не могу да исцепим: %m" -#: lib/eventlog/eventlog.c:528 +#: lib/eventlog/eventlog.c:458 #, c-format msgid "unable to open pipe: %m" msgstr "не могу да отворим спојку: %m" -#: lib/eventlog/eventlog.c:1030 +#: lib/eventlog/eventlog.c:960 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:1059 +#: lib/eventlog/eventlog.c:989 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (наредба је настављена) %s" -#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1241 -#: plugins/sudoers/sudoreplay.c:1293 plugins/sudoers/sudoreplay.c:1558 +#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1242 +#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 #, c-format msgid "invalid regular expression \"%s\": %s" msgstr "неисправан регуларан израз „%s“: %s" @@ -467,64 +477,64 @@ msgid "missing double quote in name" msgstr "недостају наводници у називу" -#: lib/iolog/iolog_json.c:501 +#: lib/iolog/iolog_json.c:511 msgid "missing JSON_OBJECT" msgstr "недостаје „JSON_OBJECT“" -#: lib/iolog/iolog_json.c:505 +#: lib/iolog/iolog_json.c:515 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "очекивах „JSON_OBJECT“, добих „%d“" -#: lib/iolog/iolog_json.c:661 +#: lib/iolog/iolog_json.c:632 #, c-format msgid "json stack exhausted (max %u frames)" msgstr "јсон спремник је исцрпљен (највише %u кадра)" -#: lib/iolog/iolog_json.c:735 +#: lib/iolog/iolog_json.c:706 msgid "objects must consist of name:value pairs" msgstr "објекти морају да садрже пар „назив:вредност“" -#: lib/iolog/iolog_json.c:740 lib/iolog/iolog_json.c:771 -#: lib/iolog/iolog_json.c:815 lib/iolog/iolog_json.c:837 -#: lib/iolog/iolog_json.c:859 lib/iolog/iolog_json.c:881 -#: lib/iolog/iolog_json.c:903 +#: lib/iolog/iolog_json.c:711 lib/iolog/iolog_json.c:742 +#: lib/iolog/iolog_json.c:786 lib/iolog/iolog_json.c:808 +#: lib/iolog/iolog_json.c:830 lib/iolog/iolog_json.c:852 +#: lib/iolog/iolog_json.c:874 msgid "missing separator between values" msgstr "недостаје раздвајач између вредности" -#: lib/iolog/iolog_json.c:755 lib/iolog/iolog_json.c:929 +#: lib/iolog/iolog_json.c:726 lib/iolog/iolog_json.c:900 msgid "unmatched close brace" msgstr "непоклопљена затворена велика заграда" -#: lib/iolog/iolog_json.c:766 +#: lib/iolog/iolog_json.c:737 msgid "unexpected array" msgstr "неочекиван низ" -#: lib/iolog/iolog_json.c:786 lib/iolog/iolog_json.c:932 +#: lib/iolog/iolog_json.c:757 lib/iolog/iolog_json.c:903 msgid "unmatched close bracket" msgstr "непоклопљена затворена средња заграда" -#: lib/iolog/iolog_json.c:797 +#: lib/iolog/iolog_json.c:768 msgid "unexpected string" msgstr "неочекивана ниска" -#: lib/iolog/iolog_json.c:808 +#: lib/iolog/iolog_json.c:779 msgid "missing colon after name" msgstr "недостају две тачке након имена" -#: lib/iolog/iolog_json.c:829 lib/iolog/iolog_json.c:851 +#: lib/iolog/iolog_json.c:800 lib/iolog/iolog_json.c:822 msgid "unexpected boolean" msgstr "неочекивана логичка вредност" -#: lib/iolog/iolog_json.c:873 +#: lib/iolog/iolog_json.c:844 msgid "unexpected null" msgstr "неочекивана ништица" -#: lib/iolog/iolog_json.c:894 +#: lib/iolog/iolog_json.c:865 msgid "unexpected number" msgstr "неочекивани број" -#: lib/iolog/iolog_json.c:941 +#: lib/iolog/iolog_json.c:912 msgid "parse error" msgstr "грешка обраде" @@ -563,14 +573,14 @@ 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:77 -#: logsrvd/iolog_writer.c:810 plugins/sudoers/timestamp.c:205 +#: lib/iolog/iolog_mkdirs.c:123 lib/iolog/iolog_mkdtemp.c:79 +#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:209 #, c-format msgid "unable to mkdir %s" msgstr "не могу да направим директоријум „%s“" -#: lib/iolog/iolog_mkdtemp.c:81 plugins/sudoers/visudo.c:747 -#: plugins/sudoers/visudo.c:781 plugins/sudoers/visudo.c:787 +#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:757 +#: plugins/sudoers/visudo.c:791 plugins/sudoers/visudo.c:797 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "не могу да променим режим „%s“ на 0%o" @@ -585,785 +595,816 @@ msgid "invalid timing file line: %s" msgstr "неисправан ред датотеке временисања: %s" -#: logsrvd/iolog_writer.c:130 plugins/sudoers/logging.c:982 -#: plugins/sudoers/policy.c:573 -msgid "unable to generate UUID" -msgstr "не могу да створим УУИБ" +#: logsrvd/iolog_writer.c:65 +#, c-format +msgid "%s: protocol error: NULL key" +msgstr "%s: грешка протокола: тастер „NULL“" -#: 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 +#: logsrvd/iolog_writer.c:69 #, 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 +#: logsrvd/iolog_writer.c:74 logsrvd/logsrvd_local.c:109 +#: logsrvd/logsrvd_local.c:123 logsrvd/logsrvd_local.c:131 +#: logsrvd/logsrvd_local.c:149 +#, c-format +msgid "%s: protocol error: NULL value found in %s" +msgstr "%s: грешка протокола: „NULL“ вредност је нађена у „%s“" + +#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:980 +#: plugins/sudoers/policy.c:593 +msgid "unable to generate UUID" +msgstr "не могу да створим УУИБ" + +#: logsrvd/iolog_writer.c:341 logsrvd/iolog_writer.c:346 +#: logsrvd/iolog_writer.c:351 logsrvd/iolog_writer.c:356 #, c-format msgid "%s: protocol error: %s missing from AcceptMessage" msgstr "%s: грешка протокола: „%s“ недостаје из прихвата поруке" -#: logsrvd/iolog_writer.c:446 +#: logsrvd/iolog_writer.c:417 #, 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 +#: logsrvd/iolog_writer.c:431 logsrvd/iolog_writer.c:445 +#: logsrvd/iolog_writer.c:459 logsrvd/iolog_writer.c:474 +#: logsrvd/iolog_writer.c:488 logsrvd/iolog_writer.c:502 #, c-format msgid "%s: %s is not set" msgstr "%s: „%s“ није постављено " -#: logsrvd/iolog_writer.c:567 logsrvd/iolog_writer.c:574 +#: logsrvd/iolog_writer.c:538 logsrvd/iolog_writer.c:545 #, c-format msgid "unable to expand iolog path %s" msgstr "не могу да раширим путању „%s“ У/И дневника" -#: logsrvd/iolog_writer.c:592 +#: logsrvd/iolog_writer.c:563 #, c-format msgid "unable to create iolog path %s" msgstr "не могу да створим путању „%s“ У/И дневника" -#: logsrvd/iolog_writer.c:622 +#: logsrvd/iolog_writer.c:593 #, c-format msgid "invalid iofd %d" msgstr "неисправан описник датотеке У/И %d" -#: logsrvd/iolog_writer.c:642 +#: logsrvd/iolog_writer.c:613 #, c-format msgid "error closing iofd %d: %s" msgstr "грешка затварања описника датотеке У/И %d: %s" -#: logsrvd/iolog_writer.c:662 +#: logsrvd/iolog_writer.c:633 #, c-format msgid "error flushing iofd %d: %s" msgstr "грешка исипања описника датотеке У/И %d: %s" -#: logsrvd/iolog_writer.c:780 +#: logsrvd/iolog_writer.c:751 #, c-format msgid "invalid I/O log %s: %s referenced but not present" msgstr "неисправан У/И дневник „%s“: „%s“ је упутно али није присутно" -#: logsrvd/iolog_writer.c:792 logsrvd/logsrvd_journal.c:372 +#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:385 #, c-format msgid "%s: unable to find resume point [%lld, %ld]" msgstr "%s: не могу да нађем тачку наставка [%lld, %ld]" -#: logsrvd/iolog_writer.c:814 logsrvd/logsrvd_journal.c:415 -#: logsrvd/logsrvd_queue.c:110 logsrvd/tls_init.c:250 -#: plugins/sudoers/check.c:282 plugins/sudoers/cvtsudoers.c:730 +#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:428 +#: logsrvd/logsrvd_queue.c:115 logsrvd/tls_init.c:256 +#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:730 #: plugins/sudoers/cvtsudoers.c:751 plugins/sudoers/cvtsudoers.c:1431 -#: plugins/sudoers/cvtsudoers_csv.c:692 plugins/sudoers/cvtsudoers_json.c:898 -#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1106 -#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/timestamp.c:433 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:965 +#: plugins/sudoers/cvtsudoers_csv.c:695 plugins/sudoers/cvtsudoers_json.c:898 +#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1152 +#: plugins/sudoers/sudoers.c:1182 plugins/sudoers/sudoreplay.c:1496 +#: plugins/sudoers/timestamp.c:460 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:975 #, c-format msgid "unable to open %s" msgstr "не могу да отворим „%s“" -#: logsrvd/iolog_writer.c:826 logsrvd/logsrv_util.c:100 -#: logsrvd/logsrv_util.c:107 plugins/sudoers/sudoreplay.c:362 -#: plugins/sudoers/sudoreplay.c:368 +#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:105 +#: logsrvd/logsrv_util.c:112 plugins/sudoers/sudoreplay.c:355 +#: plugins/sudoers/sudoreplay.c:361 #, c-format msgid "unable to open %s/%s" msgstr "не могу да отворим „%s/%s“" -#: logsrvd/iolog_writer.c:839 +#: logsrvd/iolog_writer.c:810 #, c-format msgid "unable to copy %s/%s to %s/%s: %s" msgstr "не могу да умножим „%s/%s“ у „%s/%s“: %s" -#: logsrvd/iolog_writer.c:868 logsrvd/logsrvd_journal.c:185 +#: logsrvd/iolog_writer.c:839 logsrvd/logsrvd_journal.c:198 #, c-format msgid "unable to rename %s to %s" msgstr "не могу да преименујем „%s“ у „%s“" -#: logsrvd/logsrv_util.c:142 logsrvd/logsrv_util.c:171 +#: logsrvd/logsrv_util.c:147 logsrvd/logsrv_util.c:176 #, c-format msgid "%s/%s: unable to find resume point [%lld, %ld]" msgstr "%s/%s: не могу да нађем тачку наставка [%lld, %ld]" -#: logsrvd/logsrv_util.c:154 +#: logsrvd/logsrv_util.c:159 #, c-format msgid "missing I/O log file %s/%s" msgstr "недостаје У/И датотека дневника „%s/%s“" -#: logsrvd/logsrv_util.c:161 +#: logsrvd/logsrv_util.c:166 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: не могу да премотам унапред „%zu“" -#: logsrvd/logsrvd.c:266 logsrvd/logsrvd_queue.c:130 +#: logsrvd/logsrvd.c:271 logsrvd/logsrvd_queue.c:135 msgid "unable to connect to relay" msgstr "не могу да се повежем са преносником" -#: logsrvd/logsrvd.c:325 logsrvd/logsrvd_relay.c:837 +#: logsrvd/logsrvd.c:330 logsrvd/logsrvd_relay.c:842 #, c-format msgid "server message too large: %zu" msgstr "порука сервера је превелика: %zu" -#: logsrvd/logsrvd.c:417 logsrvd/logsrvd.c:534 logsrvd/logsrvd.c:613 -#: logsrvd/logsrvd.c:837 logsrvd/logsrvd.c:851 logsrvd/logsrvd.c:1011 -#: logsrvd/logsrvd.c:1136 logsrvd/logsrvd.c:1309 logsrvd/logsrvd.c:1327 -#: logsrvd/logsrvd.c:1428 logsrvd/logsrvd.c:1551 logsrvd/logsrvd.c:1735 -#: logsrvd/logsrvd_journal.c:484 logsrvd/logsrvd_local.c:197 -#: logsrvd/logsrvd_queue.c:159 logsrvd/logsrvd_relay.c:167 -#: logsrvd/logsrvd_relay.c:244 logsrvd/logsrvd_relay.c:248 -#: logsrvd/logsrvd_relay.c:384 logsrvd/logsrvd_relay.c:576 -#: logsrvd/logsrvd_relay.c:737 logsrvd/logsrvd_relay.c:1124 -#: logsrvd/sendlog.c:1316 logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 -#: logsrvd/tls_client.c:211 plugins/sudoers/audit.c:276 +#: logsrvd/logsrvd.c:422 logsrvd/logsrvd.c:545 logsrvd/logsrvd.c:631 +#: logsrvd/logsrvd.c:873 logsrvd/logsrvd.c:887 logsrvd/logsrvd.c:1049 +#: logsrvd/logsrvd.c:1174 logsrvd/logsrvd.c:1347 logsrvd/logsrvd.c:1365 +#: logsrvd/logsrvd.c:1464 logsrvd/logsrvd.c:1589 logsrvd/logsrvd.c:1773 +#: logsrvd/logsrvd_journal.c:497 logsrvd/logsrvd_local.c:238 +#: logsrvd/logsrvd_queue.c:164 logsrvd/logsrvd_relay.c:172 +#: logsrvd/logsrvd_relay.c:249 logsrvd/logsrvd_relay.c:253 +#: logsrvd/logsrvd_relay.c:389 logsrvd/logsrvd_relay.c:581 +#: logsrvd/logsrvd_relay.c:742 logsrvd/logsrvd_relay.c:1131 +#: logsrvd/sendlog.c:1291 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:278 #: plugins/sudoers/iolog.c:1031 plugins/sudoers/iolog.c:1164 -#: plugins/sudoers/iolog.c:1262 plugins/sudoers/log_client.c:116 -#: plugins/sudoers/log_client.c:338 plugins/sudoers/log_client.c:354 -#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:606 -#: plugins/sudoers/log_client.c:613 plugins/sudoers/log_client.c:1138 -#: plugins/sudoers/log_client.c:1420 plugins/sudoers/log_client.c:1461 -#: plugins/sudoers/log_client.c:1469 plugins/sudoers/log_client.c:1628 -#: plugins/sudoers/log_client.c:1746 plugins/sudoers/log_client.c:2067 -#: plugins/sudoers/log_client.c:2075 plugins/sudoers/logging.c:150 -#: plugins/sudoers/logging.c:209 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 +#: plugins/sudoers/iolog.c:1262 plugins/sudoers/log_client.c:121 +#: plugins/sudoers/log_client.c:343 plugins/sudoers/log_client.c:359 +#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:611 +#: plugins/sudoers/log_client.c:618 plugins/sudoers/log_client.c:1103 +#: plugins/sudoers/log_client.c:1384 plugins/sudoers/log_client.c:1425 +#: plugins/sudoers/log_client.c:1433 plugins/sudoers/log_client.c:1592 +#: plugins/sudoers/log_client.c:1710 plugins/sudoers/log_client.c:2039 +#: plugins/sudoers/log_client.c:2047 plugins/sudoers/logging.c:147 +#: plugins/sudoers/logging.c:205 plugins/sudoers/sudoreplay.c:519 +#: plugins/sudoers/sudoreplay.c:566 plugins/sudoers/sudoreplay.c:808 +#: plugins/sudoers/sudoreplay.c:920 plugins/sudoers/sudoreplay.c:1011 +#: plugins/sudoers/sudoreplay.c:1026 plugins/sudoers/sudoreplay.c:1033 +#: plugins/sudoers/sudoreplay.c:1040 plugins/sudoers/sudoreplay.c:1047 +#: plugins/sudoers/sudoreplay.c:1054 plugins/sudoers/sudoreplay.c:1181 msgid "unable to add event to queue" msgstr "не могу да додам догађај у ред" -#: logsrvd/logsrvd.c:441 logsrvd/logsrvd.c:478 logsrvd/logsrvd.c:510 -#: logsrvd/logsrvd.c:558 logsrvd/logsrvd.c:630 logsrvd/logsrvd.c:660 -#: logsrvd/logsrvd.c:690 logsrvd/logsrvd.c:720 logsrvd/logsrvd_relay.c:505 -#: logsrvd/logsrvd_relay.c:538 +#: logsrvd/logsrvd.c:446 logsrvd/logsrvd.c:483 logsrvd/logsrvd.c:515 +#: logsrvd/logsrvd.c:569 logsrvd/logsrvd.c:648 logsrvd/logsrvd.c:684 +#: logsrvd/logsrvd.c:720 logsrvd/logsrvd.c:756 logsrvd/logsrvd_relay.c:510 +#: logsrvd/logsrvd_relay.c:543 #, c-format msgid "unexpected state %d for %s" msgstr "неочекивано стање %d за „%s“" -#: logsrvd/logsrvd.c:442 logsrvd/logsrvd.c:479 logsrvd/logsrvd.c:511 -#: logsrvd/logsrvd.c:559 logsrvd/logsrvd.c:631 logsrvd/logsrvd.c:661 -#: logsrvd/logsrvd.c:691 logsrvd/logsrvd.c:721 logsrvd/logsrvd_relay.c:507 -#: logsrvd/logsrvd_relay.c:540 +#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 +#: logsrvd/logsrvd.c:570 logsrvd/logsrvd.c:649 logsrvd/logsrvd.c:685 +#: logsrvd/logsrvd.c:721 logsrvd/logsrvd.c:757 logsrvd/logsrvd_relay.c:512 +#: logsrvd/logsrvd_relay.c:545 msgid "state machine error" msgstr "грешка машине стања" -#: logsrvd/logsrvd.c:448 logsrvd/logsrvd.c:449 +#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:454 msgid "invalid AcceptMessage" msgstr "неисправна „Порука прихвата“" -#: logsrvd/logsrvd.c:485 logsrvd/logsrvd.c:486 +#: logsrvd/logsrvd.c:490 logsrvd/logsrvd.c:491 msgid "invalid RejectMessage" msgstr "неисправна „Порука одбијања“" -#: logsrvd/logsrvd.c:593 logsrvd/logsrvd.c:594 +#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:523 +msgid "invalid ExitMessage" +msgstr "неисправна „Порука излаза“" + +#: logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:577 +msgid "invalid RestartMessage" +msgstr "неисправна „Порука поновног покретања“" + +#: logsrvd/logsrvd.c:611 logsrvd/logsrvd.c:612 msgid "invalid AlertMessage" msgstr "неисправна „Порука узбуне“" -#: logsrvd/logsrvd.c:635 logsrvd/logsrvd.c:665 logsrvd/logsrvd.c:695 +#: logsrvd/logsrvd.c:653 logsrvd/logsrvd.c:689 logsrvd/logsrvd.c:725 #, c-format msgid "%s: unexpected IoBuffer" msgstr "%s: неочекивана У/И међумеморија" -#: logsrvd/logsrvd.c:636 logsrvd/logsrvd.c:666 logsrvd/logsrvd.c:696 +#: logsrvd/logsrvd.c:654 logsrvd/logsrvd.c:690 logsrvd/logsrvd.c:726 msgid "protocol error" msgstr "грешка протокола" -#: logsrvd/logsrvd.c:746 logsrvd/logsrvd_journal.c:283 -#: logsrvd/logsrvd_relay.c:647 logsrvd/sendlog.c:1217 -#: plugins/sudoers/log_client.c:1618 +#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:661 +msgid "invalid IoBuffer" +msgstr "неисправна УиМеђумеморија" + +#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:697 +msgid "invalid ChangeWindowSize" +msgstr "неисправно „Промени_величину_прозора“" + +#: logsrvd/logsrvd.c:732 logsrvd/logsrvd.c:733 +msgid "invalid CommandSuspend" +msgstr "неисправна „Обустава_наредбе“" + +#: logsrvd/logsrvd.c:782 logsrvd/logsrvd_journal.c:296 +#: logsrvd/logsrvd_relay.c:652 logsrvd/sendlog.c:1192 +#: plugins/sudoers/log_client.c:1582 #, c-format msgid "unable to unpack %s size %zu" msgstr "не могу да отпакујем „%s“ величине %zu" -#: logsrvd/logsrvd.c:791 logsrvd/logsrvd_journal.c:357 -#: logsrvd/logsrvd_local.c:125 logsrvd/logsrvd_relay.c:671 +#: logsrvd/logsrvd.c:827 logsrvd/logsrvd_journal.c:370 +#: logsrvd/logsrvd_relay.c:676 #, c-format msgid "unexpected type_case value %d in %s from %s" msgstr "неочекивана вредност врсте_слова %d у „%s“ из „%s“" -#: logsrvd/logsrvd.c:793 +#: logsrvd/logsrvd.c:829 msgid "unrecognized ClientMessage type" msgstr "непозната врста „Поруке_клијента“" -#: logsrvd/logsrvd.c:883 +#: logsrvd/logsrvd.c:919 #, c-format msgid "timed out writing to client %s" msgstr "истекло је време писања на клијенту „%s“" -#: logsrvd/logsrvd.c:888 logsrvd/logsrvd_relay.c:909 logsrvd/sendlog.c:1420 +#: logsrvd/logsrvd.c:924 logsrvd/logsrvd_relay.c:914 logsrvd/sendlog.c:1395 #, c-format msgid "missing write buffer for client %s" msgstr "недостаје међумеморија писања за клијента „%s“" -#: logsrvd/logsrvd.c:982 +#: logsrvd/logsrvd.c:1020 #, c-format msgid "timed out reading from client %s" msgstr "истекло је време читања са клијента „%s“" -#: logsrvd/logsrvd.c:1023 logsrvd/logsrvd_relay.c:772 +#: logsrvd/logsrvd.c:1061 logsrvd/logsrvd_relay.c:777 #, c-format msgid "EOF from %s without proper TLS shutdown" msgstr "крај датотеке из „%s“ без одговарајућег ТЛС гашења" -#: logsrvd/logsrvd.c:1067 logsrvd/logsrvd_relay.c:200 logsrvd/sendlog.c:317 -#: plugins/sudoers/log_client.c:716 +#: logsrvd/logsrvd.c:1105 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:322 +#: plugins/sudoers/log_client.c:721 #, c-format msgid "client message too large: %zu" msgstr "порука клијента је превелика: %zu" -#: logsrvd/logsrvd.c:1068 logsrvd/logsrvd_journal.c:246 -#: logsrvd/logsrvd_journal.c:247 +#: logsrvd/logsrvd.c:1106 logsrvd/logsrvd_journal.c:259 +#: logsrvd/logsrvd_journal.c:260 msgid "client message too large" msgstr "порука клијента је превелика" -#: logsrvd/logsrvd.c:1086 logsrvd/logsrvd.c:1087 +#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1125 msgid "invalid ClientMessage" msgstr "неисправна „Порука клијента“" -#: logsrvd/logsrvd.c:1389 +#: logsrvd/logsrvd.c:1425 msgid "unable to get remote IP addr" msgstr "не могу да добавим удаљену ИП адресу" -#: logsrvd/logsrvd.c:1420 logsrvd/tls_client.c:198 -#: plugins/sudoers/log_client.c:276 +#: logsrvd/logsrvd.c:1456 logsrvd/tls_client.c:203 +#: plugins/sudoers/log_client.c:281 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Не могу да прикачим податке корисника ссл објекту: %s" -#: logsrvd/logsrvd.c:1601 logsrvd/logsrvd.c:1953 +#: logsrvd/logsrvd.c:1639 logsrvd/logsrvd.c:1992 msgid "unable to setup listen socket" msgstr "не могу да подесим прикључницу ослушкивања" -#: logsrvd/logsrvd.c:1718 +#: logsrvd/logsrvd.c:1756 #, c-format msgid "unexpected signal %d" msgstr "неочекивани сигнал %d" -#: logsrvd/logsrvd.c:1855 +#: logsrvd/logsrvd.c:1894 msgid "sudo log server" msgstr "сервер судо дневника" -#: logsrvd/logsrvd.c:1857 logsrvd/sendlog.c:116 +#: logsrvd/logsrvd.c:1896 logsrvd/sendlog.c:121 msgid "Options:" msgstr "Опције:" -#: logsrvd/logsrvd.c:1859 +#: logsrvd/logsrvd.c:1898 msgid "path to configuration file" msgstr "путања до датотеке подешавања" -#: logsrvd/logsrvd.c:1861 logsrvd/sendlog.c:118 +#: logsrvd/logsrvd.c:1900 logsrvd/sendlog.c:123 msgid "display help message and exit" msgstr "приказује поруку помоћи и излази" -#: logsrvd/logsrvd.c:1863 +#: logsrvd/logsrvd.c:1902 msgid "do not fork, run in the foreground" msgstr "не клонира, ради у првом плану" -#: logsrvd/logsrvd.c:1865 +#: logsrvd/logsrvd.c:1904 msgid "percent chance connections will drop" msgstr "просенат шанси за одбацивање веза" -#: logsrvd/logsrvd.c:1867 logsrvd/sendlog.c:148 +#: logsrvd/logsrvd.c:1906 logsrvd/sendlog.c:153 msgid "display version information and exit" msgstr "приказује податке о издању и излази" -#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:1725 +#: logsrvd/logsrvd.c:1956 logsrvd/sendlog.c:1702 msgid "Protobuf-C version 1.3 or higher required" msgstr "Потребно је „Protobuf-C“ издање 1.3 или новије" -#: logsrvd/logsrvd.c:1933 +#: logsrvd/logsrvd.c:1972 #, c-format msgid "invalid random drop value: %s" msgstr "неисправна вредност одбацивања насумичности: %s" -#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:1779 -#: plugins/sudoers/cvtsudoers.c:246 plugins/sudoers/sudoreplay.c:301 -#: plugins/sudoers/visudo.c:180 +#: logsrvd/logsrvd.c:1975 logsrvd/sendlog.c:1756 +#: plugins/sudoers/cvtsudoers.c:246 plugins/sudoers/sudoreplay.c:294 +#: plugins/sudoers/visudo.c:182 #, c-format msgid "%s version %s\n" msgstr "%s издање %s\n" -#: logsrvd/logsrvd_conf.c:417 plugins/sudoers/check.c:347 +#: logsrvd/logsrvd_conf.c:422 plugins/sudoers/check.c:358 #: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:122 -#: plugins/sudoers/policy.c:1234 plugins/sudoers/sudoers.c:500 -#: plugins/sudoers/sudoers.c:1362 plugins/sudoers/testsudoers.c:215 +#: plugins/sudoers/policy.c:1271 plugins/sudoers/sudoers.c:512 +#: plugins/sudoers/sudoers.c:1411 plugins/sudoers/testsudoers.c:215 #: plugins/sudoers/testsudoers.c:382 #, c-format msgid "unknown user %s" msgstr "непознат корисник „%s“" -#: logsrvd/logsrvd_conf.c:434 plugins/sudoers/iolog.c:148 -#: plugins/sudoers/sudoers.c:505 plugins/sudoers/sudoers.c:1396 +#: logsrvd/logsrvd_conf.c:439 plugins/sudoers/iolog.c:148 +#: plugins/sudoers/sudoers.c:517 plugins/sudoers/sudoers.c:1445 #: plugins/sudoers/testsudoers.c:406 #, c-format msgid "unknown group %s" msgstr "непозната група „%s“" -#: logsrvd/logsrvd_conf.c:452 +#: logsrvd/logsrvd_conf.c:457 #, c-format msgid "unable to parse iolog mode %s" msgstr "не могу да обрадим режим У/И дневника „%s“" -#: logsrvd/logsrvd_conf.c:469 logsrvd/logsrvd_conf.c:1238 +#: logsrvd/logsrvd_conf.c:474 logsrvd/logsrvd_conf.c:1243 #, c-format msgid "invalid value for %s: %s" msgstr "неисправна вредност за „%s“: %s" -#: logsrvd/logsrvd_conf.c:522 +#: logsrvd/logsrvd_conf.c:527 msgid "TLS not supported" msgstr "ТЛС није подржано" -#: logsrvd/logsrvd_conf.c:544 +#: logsrvd/logsrvd_conf.c:549 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:617 logsrvd/logsrvd_conf.c:1027 +#: logsrvd/logsrvd_conf.c:622 logsrvd/logsrvd_conf.c:1032 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: није потпуно квалификована путања" -#: logsrvd/logsrvd_conf.c:945 logsrvd/logsrvd_conf.c:961 -#: logsrvd/logsrvd_conf.c:1671 +#: logsrvd/logsrvd_conf.c:951 logsrvd/logsrvd_conf.c:967 +#: logsrvd/logsrvd_conf.c:1676 #, c-format msgid "unknown syslog facility %s" msgstr "непознато постројење системског дневика „%s“" -#: logsrvd/logsrvd_conf.c:977 logsrvd/logsrvd_conf.c:993 -#: logsrvd/logsrvd_conf.c:1009 logsrvd/logsrvd_conf.c:1675 -#: logsrvd/logsrvd_conf.c:1679 logsrvd/logsrvd_conf.c:1683 +#: logsrvd/logsrvd_conf.c:983 logsrvd/logsrvd_conf.c:999 +#: logsrvd/logsrvd_conf.c:1015 logsrvd/logsrvd_conf.c:1680 +#: logsrvd/logsrvd_conf.c:1684 logsrvd/logsrvd_conf.c:1688 #, c-format msgid "unknown syslog priority %s" msgstr "непознат приоритет системског дневика „%s“" -#: logsrvd/logsrvd_conf.c:1192 +#: logsrvd/logsrvd_conf.c:1197 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "„%s:%d“ непоклопљена [: %s" -#: logsrvd/logsrvd_conf.c:1198 +#: logsrvd/logsrvd_conf.c:1203 #, c-format msgid "%s:%d garbage after ']': %s" msgstr "„%s:%d“ ђубре након ]: %s" -#: logsrvd/logsrvd_conf.c:1210 +#: logsrvd/logsrvd_conf.c:1215 #, c-format msgid "%s:%d invalid config section: %s" msgstr "„%s:%d“ неисправан одељак подешавања: %s" -#: logsrvd/logsrvd_conf.c:1218 +#: logsrvd/logsrvd_conf.c:1223 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "„%s:%d“ неисправан ред подешавања: %s" -#: logsrvd/logsrvd_conf.c:1224 +#: logsrvd/logsrvd_conf.c:1229 #, c-format msgid "%s:%d expected section name: %s" msgstr "„%s:%d“ очекиван је назив одељка: %s" -#: logsrvd/logsrvd_conf.c:1246 +#: logsrvd/logsrvd_conf.c:1251 #, c-format msgid "%s:%d [%s] illegal key: %s" msgstr "%s:%d [%s] неисправан кључ: %s" -#: logsrvd/logsrvd_conf.c:1276 plugins/sudoers/cvtsudoers.c:268 -#: plugins/sudoers/logging.c:1035 +#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:268 +#: plugins/sudoers/logging.c:1033 #, c-format msgid "unable to open log file %s" msgstr "не могу да отворим датотеку дневника „%s“" -#: logsrvd/logsrvd_conf.c:1757 +#: logsrvd/logsrvd_conf.c:1763 msgid "unable to initialize server TLS context" msgstr "не могу да покренем ТЛС контекст сервера" -#: logsrvd/logsrvd_conf.c:1777 +#: logsrvd/logsrvd_conf.c:1783 msgid "unable to initialize relay TLS context" msgstr "не могу да покренем ТЛС контекст преносника" -#: logsrvd/logsrvd_journal.c:136 logsrvd/logsrvd_journal.c:411 -#: logsrvd/logsrvd_journal.c:416 +#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:424 +#: logsrvd/logsrvd_journal.c:429 msgid "unable to create journal file" msgstr "не могу да направим датотеку дневника" -#: logsrvd/logsrvd_journal.c:140 logsrvd/logsrvd_queue.c:104 -#: plugins/sudoers/visudo.c:1020 +#: logsrvd/logsrvd_journal.c:153 logsrvd/logsrvd_queue.c:109 +#: plugins/sudoers/visudo.c:1028 #, c-format msgid "unable to lock %s" msgstr "не могу да закључам „%s“" -#: logsrvd/logsrvd_journal.c:143 +#: logsrvd/logsrvd_journal.c:156 msgid "unable to lock journal file" msgstr "не могу да закључам датотеку дневника" -#: logsrvd/logsrvd_journal.c:151 +#: logsrvd/logsrvd_journal.c:164 msgid "unable to open journal file" msgstr "не могу да отворим датотеку дневника" -#: logsrvd/logsrvd_journal.c:172 logsrvd/logsrvd_journal.c:447 -#: logsrvd/logsrvd_journal.c:452 +#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:460 +#: logsrvd/logsrvd_journal.c:465 msgid "unable to write journal file" msgstr "не могу да запишем датотеку дневника" -#: logsrvd/logsrvd_journal.c:180 logsrvd/logsrvd_journal.c:187 +#: logsrvd/logsrvd_journal.c:193 logsrvd/logsrvd_journal.c:200 msgid "unable to rename journal file" msgstr "не могу да преименујем датотеку дневника" -#: logsrvd/logsrvd_journal.c:234 logsrvd/logsrvd_journal.c:235 -#: logsrvd/logsrvd_journal.c:269 logsrvd/logsrvd_journal.c:270 +#: logsrvd/logsrvd_journal.c:247 logsrvd/logsrvd_journal.c:248 +#: logsrvd/logsrvd_journal.c:282 logsrvd/logsrvd_journal.c:283 msgid "unexpected EOF reading journal file" msgstr "неочекивани крај датотеке читајући датотеку дневника" -#: logsrvd/logsrvd_journal.c:238 logsrvd/logsrvd_journal.c:239 -#: logsrvd/logsrvd_journal.c:273 logsrvd/logsrvd_journal.c:274 +#: logsrvd/logsrvd_journal.c:251 logsrvd/logsrvd_journal.c:252 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:287 msgid "error reading journal file" msgstr "грешка читања датотеке дневника" -#: logsrvd/logsrvd_journal.c:285 logsrvd/logsrvd_journal.c:371 +#: logsrvd/logsrvd_journal.c:298 logsrvd/logsrvd_journal.c:384 msgid "invalid journal file, unable to restart" msgstr "неисправна датотека дневника, не могу поново да почнем" -#: logsrvd/logsrvd_journal.c:430 +#: logsrvd/logsrvd_journal.c:443 #, c-format msgid "unable to seek to [%lld, %ld] in journal file %s" msgstr "не могу да премотам на [%lld, %ld] у датотеци дневника „%s“" -#: logsrvd/logsrvd_local.c:153 +#: logsrvd/logsrvd_local.c:166 +#, c-format +msgid "unexpected value_case %d in %s from %s" +msgstr "неочекивана вредност врсте_слова %d у „%s“ из „%s“" + +#: logsrvd/logsrvd_local.c:194 msgid "error parsing AcceptMessage" msgstr "грешка обраде „Поруке прихвата“" -#: logsrvd/logsrvd_local.c:164 +#: logsrvd/logsrvd_local.c:205 msgid "error creating I/O log" msgstr "грешка стварања У/И дневника" -#: logsrvd/logsrvd_local.c:187 +#: logsrvd/logsrvd_local.c:228 msgid "error logging accept event" msgstr "грешка прибележавања догађаја прихвата" -#: logsrvd/logsrvd_local.c:226 +#: logsrvd/logsrvd_local.c:267 msgid "error parsing RejectMessage" msgstr "грешка обраде „Поруке одбијања“" -#: logsrvd/logsrvd_local.c:250 +#: logsrvd/logsrvd_local.c:291 msgid "error logging reject event" msgstr "грешка прибележавања догађаја одбијања" -#: logsrvd/logsrvd_local.c:386 logsrvd/logsrvd_local.c:394 +#: logsrvd/logsrvd_local.c:427 logsrvd/logsrvd_local.c:435 msgid "error logging exit event" msgstr "грешка прибележавања догађаја излаза" -#: logsrvd/logsrvd_local.c:451 logsrvd/logsrvd_local.c:452 +#: logsrvd/logsrvd_local.c:492 logsrvd/logsrvd_local.c:493 msgid "log is already complete, cannot be restarted" msgstr "дневик је већ довршен, не може бити поново покренут" -#: logsrvd/logsrvd_local.c:482 +#: logsrvd/logsrvd_local.c:523 msgid "unable to restart log" msgstr "не могу поново да покренем дневник" -#: logsrvd/logsrvd_local.c:498 +#: logsrvd/logsrvd_local.c:539 msgid "error parsing AlertMessage" msgstr "грешка обраде „Поруке узбуне“" -#: logsrvd/logsrvd_local.c:508 +#: logsrvd/logsrvd_local.c:549 msgid "error logging alert event" msgstr "грешка прибележавања догађаја упозорења" -#: logsrvd/logsrvd_local.c:544 logsrvd/logsrvd_local.c:607 -#: logsrvd/logsrvd_local.c:642 +#: logsrvd/logsrvd_local.c:585 logsrvd/logsrvd_local.c:648 +#: logsrvd/logsrvd_local.c:683 #, c-format msgid "unable to format timing buffer, length %d" msgstr "не могу да обликујем међумеморију временисања, трајање %d" -#: logsrvd/logsrvd_local.c:558 logsrvd/logsrvd_local.c:566 -#: logsrvd/logsrvd_local.c:614 logsrvd/logsrvd_local.c:649 -#: plugins/sudoers/sudoreplay.c:351 +#: logsrvd/logsrvd_local.c:599 logsrvd/logsrvd_local.c:607 +#: logsrvd/logsrvd_local.c:655 logsrvd/logsrvd_local.c:690 +#: plugins/sudoers/sudoreplay.c:344 #, c-format msgid "%s/%s: %s" msgstr "%s/%s: %s" -#: logsrvd/logsrvd_local.c:577 +#: logsrvd/logsrvd_local.c:618 msgid "randomly dropping connection" msgstr "насумично одбацујем везу" -#: logsrvd/logsrvd_local.c:589 +#: logsrvd/logsrvd_local.c:630 msgid "error writing IoBuffer" msgstr "Грешка писања „Уи_Међумеморије“" -#: logsrvd/logsrvd_local.c:624 +#: logsrvd/logsrvd_local.c:665 msgid "error writing ChangeWindowSize" msgstr "грешка писања „Промени_величину_прозора“" -#: logsrvd/logsrvd_local.c:659 +#: logsrvd/logsrvd_local.c:700 msgid "error writing CommandSuspend" msgstr "грешка писања „Обуставе_наредбе“" -#: logsrvd/logsrvd_relay.c:430 +#: logsrvd/logsrvd_relay.c:435 msgid "TLS handshake with relay host failed" msgstr "ТЛС руковање са домаћином преносника није успело" -#: logsrvd/logsrvd_relay.c:458 +#: logsrvd/logsrvd_relay.c:463 msgid "unable to connect to relay host" msgstr "Не могу да се повежем са домаћином преносника" -#: logsrvd/logsrvd_relay.c:513 +#: logsrvd/logsrvd_relay.c:518 #, c-format msgid "%s: invalid ServerHello, missing server_id" msgstr "%s: неисправан поздрав сервера, недостаје иб сервера" -#: logsrvd/logsrvd_relay.c:515 logsrvd/sendlog.c:1121 -#: plugins/sudoers/log_client.c:1504 +#: logsrvd/logsrvd_relay.c:520 logsrvd/sendlog.c:1096 +#: plugins/sudoers/log_client.c:1468 msgid "invalid ServerHello" msgstr "неисправан „Поздрав_сервера“" -#: logsrvd/logsrvd_relay.c:674 +#: logsrvd/logsrvd_relay.c:679 msgid "unrecognized ServerMessage type" msgstr "непозната врста „Поруке_сервера“" -#: logsrvd/logsrvd_relay.c:703 +#: logsrvd/logsrvd_relay.c:708 #, c-format msgid "timed out reading from relay %s (%s)" msgstr "истекло је време читања са преносника „%s“ (%s)" -#: logsrvd/logsrvd_relay.c:705 +#: logsrvd/logsrvd_relay.c:710 msgid "timeout reading from relay" msgstr "истекло је време читања са преносника" -#: logsrvd/logsrvd_relay.c:757 +#: logsrvd/logsrvd_relay.c:762 msgid "relay host name does not match certificate" msgstr "назив домаћина преносника не одговара уверењу" -#: logsrvd/logsrvd_relay.c:763 logsrvd/logsrvd_relay.c:777 -#: logsrvd/logsrvd_relay.c:784 +#: logsrvd/logsrvd_relay.c:768 logsrvd/logsrvd_relay.c:782 +#: logsrvd/logsrvd_relay.c:789 msgid "error reading from relay" msgstr "грешка читања са преносника" -#: logsrvd/logsrvd_relay.c:805 +#: logsrvd/logsrvd_relay.c:810 msgid "unable to read from relay" msgstr "не могу да читам са преносника" -#: logsrvd/logsrvd_relay.c:820 logsrvd/logsrvd_relay.c:938 +#: logsrvd/logsrvd_relay.c:825 logsrvd/logsrvd_relay.c:943 msgid "relay server closed connection" msgstr "сервер преносника је затворио везу" -#: logsrvd/logsrvd_relay.c:838 +#: logsrvd/logsrvd_relay.c:843 msgid "server message too large" msgstr "порука сервера је превелика" -#: logsrvd/logsrvd_relay.c:902 +#: logsrvd/logsrvd_relay.c:907 #, c-format msgid "timed out writing to relay %s (%s)" msgstr "истекло је време писања на преноснику „%s“ (%s)" -#: logsrvd/logsrvd_relay.c:904 +#: logsrvd/logsrvd_relay.c:909 msgid "timeout writing to relay" msgstr "истекло је време писања на преноснику" -#: logsrvd/logsrvd_relay.c:957 logsrvd/logsrvd_relay.c:964 -#: logsrvd/logsrvd_relay.c:974 +#: logsrvd/logsrvd_relay.c:962 logsrvd/logsrvd_relay.c:969 +#: logsrvd/logsrvd_relay.c:981 msgid "error writing to relay" msgstr "грешка писања на преноснику" -#: logsrvd/sendlog.c:114 +#: logsrvd/sendlog.c:119 msgid "send sudo I/O log to remote server" msgstr "шаље У/И дневник судоа удаљеном серверу" -#: logsrvd/sendlog.c:120 +#: logsrvd/sendlog.c:125 msgid "only send an accept event (no I/O)" msgstr "шаље само догађај прихвата (не У/И)" -#: logsrvd/sendlog.c:123 +#: logsrvd/sendlog.c:128 msgid "certificate bundle file to verify server's cert against" msgstr "датотека скупа уверења за проверавање уверења сервера" -#: logsrvd/sendlog.c:125 +#: logsrvd/sendlog.c:130 msgid "certificate file for TLS handshake" msgstr "датотека уверења за ТЛС руковање" -#: logsrvd/sendlog.c:128 +#: logsrvd/sendlog.c:133 msgid "host to send logs to" msgstr "домаћин коме шаље дневнике" -#: logsrvd/sendlog.c:130 +#: logsrvd/sendlog.c:135 msgid "remote ID of I/O log to be resumed" msgstr "ИБ удаљеног У/И дневника који ће бити враћен" -#: logsrvd/sendlog.c:133 +#: logsrvd/sendlog.c:138 msgid "private key file" msgstr "датотека приватног кључа" -#: logsrvd/sendlog.c:135 +#: logsrvd/sendlog.c:140 msgid "do not verify server certificate" msgstr "не проверава уверење сервера" -#: logsrvd/sendlog.c:138 +#: logsrvd/sendlog.c:143 msgid "port to use when connecting to host" msgstr "прикључник за коришћење приликом повезивања на домаћина" -#: logsrvd/sendlog.c:140 +#: logsrvd/sendlog.c:145 msgid "restart previous I/O log transfer" msgstr "поново покреће претходни пренос У/И дневника" -#: logsrvd/sendlog.c:142 +#: logsrvd/sendlog.c:147 msgid "reject the command with the given reason" msgstr "одбацује наредбу са датим разлогом" -#: logsrvd/sendlog.c:144 +#: logsrvd/sendlog.c:149 msgid "stop transfer after reaching this time" msgstr "прекида пренос након достизања овог времена" -#: logsrvd/sendlog.c:146 +#: logsrvd/sendlog.c:151 msgid "test audit server by sending selected I/O log n times in parallel" msgstr "тестира анкетни сервер шаљући изабрани У/И дневник n пута у паралели" -#: logsrvd/sendlog.c:171 plugins/sudoers/log_client.c:448 +#: logsrvd/sendlog.c:176 plugins/sudoers/log_client.c:453 #, c-format msgid "unable to look up %s:%s: %s" msgstr "не могу да потражим „%s:%s“: %s" -#: logsrvd/sendlog.c:209 +#: logsrvd/sendlog.c:214 msgid "unable to get server IP addr" msgstr "не могу да добавим ИП адресу сервера" -#: logsrvd/sendlog.c:295 plugins/sudoers/sudoreplay.c:871 +#: logsrvd/sendlog.c:300 plugins/sudoers/sudoreplay.c:868 #, c-format msgid "unable to read %s/%s: %s" msgstr "не могу да прочитам „%s/%s“: %s" -#: logsrvd/sendlog.c:1045 plugins/sudoers/iolog.c:949 +#: logsrvd/sendlog.c:1020 plugins/sudoers/iolog.c:949 #: plugins/sudoers/iolog.c:1024 #, c-format msgid "unexpected I/O event %d" msgstr "неочекивани У/И догађај „%d“" -#: logsrvd/sendlog.c:1098 logsrvd/sendlog.c:1115 logsrvd/sendlog.c:1149 -#: plugins/sudoers/log_client.c:1153 plugins/sudoers/log_client.c:1430 -#: plugins/sudoers/log_client.c:1498 plugins/sudoers/log_client.c:1537 +#: logsrvd/sendlog.c:1073 logsrvd/sendlog.c:1090 logsrvd/sendlog.c:1124 +#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1394 +#: plugins/sudoers/log_client.c:1462 plugins/sudoers/log_client.c:1501 #, c-format msgid "%s: unexpected state %d" msgstr "%s: неочекивано стање „%d“" -#: logsrvd/sendlog.c:1185 plugins/sudoers/log_client.c:1586 +#: logsrvd/sendlog.c:1160 plugins/sudoers/log_client.c:1550 #, c-format msgid "error message received from server: %s" msgstr "порука грешке је примљена са сервера: %s" -#: logsrvd/sendlog.c:1198 plugins/sudoers/log_client.c:1599 +#: logsrvd/sendlog.c:1173 plugins/sudoers/log_client.c:1563 #, c-format msgid "abort message received from server: %s" msgstr "порука прекида је примљена са сервера: %s" -#: logsrvd/sendlog.c:1257 plugins/sudoers/log_client.c:1649 +#: logsrvd/sendlog.c:1232 plugins/sudoers/log_client.c:1613 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: неочекивана вредност врсте_слова „%d“" -#: logsrvd/sendlog.c:1286 +#: logsrvd/sendlog.c:1261 msgid "timeout reading from server" msgstr "истекло је време читања са сервера" -#: logsrvd/sendlog.c:1335 plugins/sudoers/log_client.c:1765 +#: logsrvd/sendlog.c:1310 plugins/sudoers/log_client.c:1729 msgid "host name does not match certificate" msgstr "назив домаћина не одговара уверењу" -#: logsrvd/sendlog.c:1368 +#: logsrvd/sendlog.c:1343 msgid "premature EOF" msgstr "прерани крај датотеке" -#: logsrvd/sendlog.c:1381 plugins/sudoers/log_client.c:1812 +#: logsrvd/sendlog.c:1356 plugins/sudoers/log_client.c:1776 #, c-format msgid "server message too large: %u" msgstr "порука сервера је превелика: %u" -#: logsrvd/sendlog.c:1437 +#: logsrvd/sendlog.c:1412 msgid "timeout writing to server" msgstr "истекло је време писања на сервер" -#: logsrvd/sendlog.c:1802 +#: logsrvd/sendlog.c:1779 msgid "both restart point and iolog ID must be specified" msgstr "мора бити наведена и тачка поновног покретања и ИБ уи_дневника" -#: logsrvd/sendlog.c:1806 +#: logsrvd/sendlog.c:1783 msgid "a restart point may not be set when no I/O is sent" msgstr "тачка поновног покретања се не може подесити када није послат У/И" -#: logsrvd/sendlog.c:1882 +#: logsrvd/sendlog.c:1859 #, c-format msgid "exited prematurely with state %d" msgstr "изађох прерано са стањем „%d“" -#: logsrvd/sendlog.c:1883 +#: logsrvd/sendlog.c:1860 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "протекло време послато серверу [%lld, %ld]" -#: logsrvd/sendlog.c:1885 +#: logsrvd/sendlog.c:1862 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "тачка слања примљена са сервера [%lld, %ld]" -#: logsrvd/tls_client.c:106 plugins/sudoers/log_client.c:310 +#: logsrvd/tls_client.c:111 plugins/sudoers/log_client.c:315 msgid "TLS handshake timeout occurred" msgstr "дошло је до временског истека ТЛС руковања" -#: logsrvd/tls_client.c:126 logsrvd/tls_client.c:142 -#: plugins/sudoers/log_client.c:332 plugins/sudoers/log_client.c:348 +#: logsrvd/tls_client.c:131 logsrvd/tls_client.c:147 +#: plugins/sudoers/log_client.c:337 plugins/sudoers/log_client.c:353 msgid "unable to set event" msgstr "не могу да подесим догађај" -#: logsrvd/tls_client.c:152 logsrvd/tls_client.c:156 +#: logsrvd/tls_client.c:157 logsrvd/tls_client.c:161 #, c-format msgid "TLS connection failed: %s" msgstr "ТЛС веза није успела: %s" -#: logsrvd/tls_client.c:191 +#: logsrvd/tls_client.c:196 #, c-format msgid "unable to allocate ssl object: %s" msgstr "не могу да доделим ссл објекат: %s" -#: logsrvd/tls_client.c:205 +#: logsrvd/tls_client.c:210 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "Не могу да прикачим прикључницу ссл објекту: %s" -#: logsrvd/tls_client.c:233 +#: logsrvd/tls_client.c:238 msgid "unable to initialize TLS context" msgstr "не могу да покренем ТЛС контекст" -#: logsrvd/tls_init.c:132 logsrvd/tls_init.c:140 +#: logsrvd/tls_init.c:138 logsrvd/tls_init.c:146 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "не могу да подесим шифрарник ТЛС-а 1.2 на „%s“: %s" -#: logsrvd/tls_init.c:160 logsrvd/tls_init.c:168 +#: logsrvd/tls_init.c:166 logsrvd/tls_init.c:174 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "не могу да подесим шифрарник ТЛС-а 1.3 на „%s“: %s" -#: logsrvd/tls_init.c:200 logsrvd/tls_init.c:221 +#: logsrvd/tls_init.c:206 logsrvd/tls_init.c:227 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "не могу да подесим „diffie-hellman“ параметре: %s" -#: logsrvd/tls_init.c:277 +#: logsrvd/tls_init.c:283 #, c-format msgid "unable to create TLS context: %s" msgstr "Не могу да створим ТЛС контекст: %s" -#: logsrvd/tls_init.c:284 +#: logsrvd/tls_init.c:290 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "не могу да подесим најмање издање протокола на „TLS 1.2“: %s" -#: plugins/sudoers/audit.c:267 plugins/sudoers/audit.c:419 -#: plugins/sudoers/log_client.c:986 plugins/sudoers/log_client.c:1035 -#: plugins/sudoers/log_client.c:1084 plugins/sudoers/log_client.c:1210 -#: plugins/sudoers/logging.c:599 plugins/sudoers/logging.c:696 -#: plugins/sudoers/logging.c:800 plugins/sudoers/logging.c:989 -#: plugins/sudoers/policy.c:123 +#: plugins/sudoers/audit.c:269 plugins/sudoers/audit.c:429 +#: plugins/sudoers/log_client.c:951 plugins/sudoers/log_client.c:1000 +#: plugins/sudoers/log_client.c:1049 plugins/sudoers/log_client.c:1174 +#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:693 +#: plugins/sudoers/logging.c:796 plugins/sudoers/logging.c:987 +#: plugins/sudoers/policy.c:125 msgid "unable to get time of day" msgstr "не могу да добавим време дана" @@ -1500,7 +1541,7 @@ msgid "PAM account management error: %s" msgstr "грешка управљања ПАМ налогом: %s" -#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:266 +#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:271 #, c-format msgid "you do not exist in the %s database" msgstr "ви не постојите у бази подтака „%s“" @@ -1517,11 +1558,11 @@ msgid "User ID locked for SecurID Authentication" msgstr "ИБ корисника је закључан за потврђивање идентитета безбедног ИБ-а" -#: plugins/sudoers/auth/securid5.c:119 plugins/sudoers/auth/securid5.c:170 +#: plugins/sudoers/auth/securid5.c:119 plugins/sudoers/auth/securid5.c:171 msgid "invalid username length for SecurID" msgstr "неисправна дужина корисничког имена за безбедни ИБ" -#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:175 +#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:176 msgid "invalid Authentication Handle for SecurID" msgstr "неисправна ручка потврђивања идентитета за безбедни ИБ" @@ -1529,11 +1570,11 @@ msgid "SecurID communication failed" msgstr "Није успело комуницирање безбедног ИБ-а" -#: plugins/sudoers/auth/securid5.c:131 plugins/sudoers/auth/securid5.c:218 +#: plugins/sudoers/auth/securid5.c:131 plugins/sudoers/auth/securid5.c:219 msgid "unknown SecurID error" msgstr "непозната грешка безбедног ИБ-а" -#: plugins/sudoers/auth/securid5.c:165 +#: plugins/sudoers/auth/securid5.c:166 msgid "invalid passcode length for SecurID" msgstr "неисправна дужина пропусне шифре за безбедни ИБ" @@ -1573,17 +1614,17 @@ msgid "unable to commit audit record" msgstr "не могу да предам снимак прегледа" -#: plugins/sudoers/check.c:275 +#: plugins/sudoers/check.c:285 #, c-format msgid "error reading lecture file %s" msgstr "грешка читања датотеке обучавања „%s“" -#: plugins/sudoers/check.c:278 +#: plugins/sudoers/check.c:288 #, c-format msgid "ignoring lecture file %s: not a regular file" msgstr "занемарујем датотеку обучавања „%s“: није обична датотека" -#: plugins/sudoers/check.c:291 +#: plugins/sudoers/check.c:301 msgid "" "\n" "We trust you have received the usual lecture from the local System\n" @@ -1603,14 +1644,22 @@ " #3) Са великом моћи долази и велика одговорност.\n" "\n" -#: plugins/sudoers/check.c:342 plugins/sudoers/check.c:352 -#: plugins/sudoers/parse.c:64 plugins/sudoers/sudoers.c:901 -#: plugins/sudoers/sudoers.c:922 plugins/sudoers/tsdump.c:119 +#: plugins/sudoers/check.c:309 +msgid "" +"For security reasons, the password you type will not be visible.\n" +"\n" +msgstr "" +"Из безбедносних разлога, лозинка коју упишете неће бити видљива.\n" +"\n" + +#: plugins/sudoers/check.c:353 plugins/sudoers/check.c:363 +#: plugins/sudoers/parse.c:82 plugins/sudoers/sudoers.c:945 +#: plugins/sudoers/sudoers.c:966 plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid %u" msgstr "непознат јиб %u" -#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1278 +#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1279 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" @@ -1640,7 +1689,7 @@ msgid "order padding: %s: %s" msgstr "попуњавање поретка: %s: %s" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/visudo.c:182 +#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/visudo.c:184 #, c-format msgid "%s grammar version %d\n" msgstr "%s граматика издање %d\n" @@ -1660,14 +1709,13 @@ msgid "%s: input and output files must be different" msgstr "%s: улазна датотека треба да се разликује од излазне" -#: plugins/sudoers/cvtsudoers.c:399 plugins/sudoers/sudoers.c:165 -#: plugins/sudoers/sudoers.c:217 plugins/sudoers/testsudoers.c:254 -#: plugins/sudoers/visudo.c:275 plugins/sudoers/visudo.c:644 -#: plugins/sudoers/visudo.c:969 +#: plugins/sudoers/cvtsudoers.c:399 plugins/sudoers/sudoers.c:166 +#: plugins/sudoers/sudoers.c:222 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:654 msgid "unable to initialize sudoers default values" msgstr "не могу да покренем основне вредности судоерса" -#: plugins/sudoers/cvtsudoers.c:525 plugins/sudoers/ldap_conf.c:433 +#: plugins/sudoers/cvtsudoers.c:525 plugins/sudoers/ldap_conf.c:434 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" @@ -1692,18 +1740,18 @@ msgid "invalid filter: %s" msgstr "неисправан филтер: %s" -#: plugins/sudoers/cvtsudoers.c:754 plugins/sudoers/visudo.c:974 +#: plugins/sudoers/cvtsudoers.c:754 plugins/sudoers/visudo.c:982 #, c-format msgid "failed to parse %s file, unknown error" msgstr "нисам успео да обрадим %s датотеку, непозната грешка" -#: plugins/sudoers/cvtsudoers.c:1478 plugins/sudoers/sudoreplay.c:1145 -#: plugins/sudoers/timestamp.c:317 plugins/sudoers/timestamp.c:320 +#: plugins/sudoers/cvtsudoers.c:1478 plugins/sudoers/sudoreplay.c:1142 +#: plugins/sudoers/timestamp.c:343 plugins/sudoers/timestamp.c:346 #, c-format msgid "unable to write to %s" msgstr "не могу да пишем у „%s“" -#: plugins/sudoers/cvtsudoers.c:1501 +#: plugins/sudoers/cvtsudoers.c:1506 #, c-format msgid "" "%s - convert between sudoers file formats\n" @@ -1712,7 +1760,7 @@ "%s – претвара међусобно записе датотеке судоерса\n" "\n" -#: plugins/sudoers/cvtsudoers.c:1503 +#: plugins/sudoers/cvtsudoers.c:1508 msgid "" "\n" "Options:\n" @@ -1752,17 +1800,36 @@ " -s, --suppress=одељци потискује излаз неких одељака\n" " -V, --version приказује податке о издању и излази" +#: plugins/sudoers/cvtsudoers_csv.c:192 plugins/sudoers/cvtsudoers_csv.c:199 +#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 +#: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:340 +#: plugins/sudoers/env.c:347 plugins/sudoers/env.c:458 +#: plugins/sudoers/ldap.c:528 plugins/sudoers/ldap.c:761 +#: plugins/sudoers/ldap.c:1134 plugins/sudoers/ldap_conf.c:222 +#: plugins/sudoers/ldap_conf.c:313 plugins/sudoers/ldap_util.c:486 +#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:461 +#: plugins/sudoers/logging.c:817 plugins/sudoers/logging.c:827 +#: plugins/sudoers/policy.c:807 plugins/sudoers/policy.c:818 +#: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 +#: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 +#: plugins/sudoers/sudoreplay.c:1339 plugins/sudoers/sudoreplay.c:1345 +#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:245 +#: plugins/sudoers/toke_util.c:213 toke.l:995 toke.l:1197 +#, c-format +msgid "internal error, %s overflow" +msgstr "унутрашња грешка, прекорачење „%s“" + #: plugins/sudoers/cvtsudoers_csv.c:452 plugins/sudoers/cvtsudoers_csv.c:466 #: plugins/sudoers/cvtsudoers_json.c:657 plugins/sudoers/cvtsudoers_json.c:672 #: plugins/sudoers/cvtsudoers_ldif.c:347 plugins/sudoers/cvtsudoers_ldif.c:360 -#: plugins/sudoers/ldap.c:510 +#: plugins/sudoers/ldap.c:512 msgid "unable to get GMT time" msgstr "не могу да добавим ГМТ време" #: plugins/sudoers/cvtsudoers_csv.c:457 plugins/sudoers/cvtsudoers_csv.c:471 #: plugins/sudoers/cvtsudoers_json.c:662 plugins/sudoers/cvtsudoers_json.c:677 #: plugins/sudoers/cvtsudoers_ldif.c:352 plugins/sudoers/cvtsudoers_ldif.c:365 -#: plugins/sudoers/ldap.c:518 +#: plugins/sudoers/ldap.c:520 msgid "unable to format timestamp" msgstr "не могу да обликујем временску ознаку" @@ -2165,359 +2232,383 @@ msgstr "Бележи корисников улаз за покренуту наредбу" #: plugins/sudoers/def_data.c:356 +msgid "Log the command's standard input if not connected to a terminal" +msgstr "Записује у дневник стандардни улаз наредбе ако није повезан на терминал" + +#: plugins/sudoers/def_data.c:360 +msgid "Log the user's terminal input for the command being run" +msgstr "Записује у дневник корисников улаз терминала за покренуту наредбу" + +#: plugins/sudoers/def_data.c:364 msgid "Log the output of the command being run" msgstr "Бележи излаз покренуте наредбе" -#: plugins/sudoers/def_data.c:360 +#: plugins/sudoers/def_data.c:368 +msgid "Log the command's standard output if not connected to a terminal" +msgstr "Записује у дневник стандардни излаз наредбе ако није повезан на терминал" + +#: plugins/sudoers/def_data.c:372 +msgid "Log the command's standard error if not connected to a terminal" +msgstr "Записује у дневник стандардну грешку наредбе ако није повезан на терминал" + +#: plugins/sudoers/def_data.c:376 +msgid "Log the terminal output of the command being run" +msgstr "Записује у дневник излаз терминала покренуте наредбе" + +#: plugins/sudoers/def_data.c:380 msgid "Compress I/O logs using zlib" msgstr "Пакује У/И дневнике користећи злиб" -#: plugins/sudoers/def_data.c:364 +#: plugins/sudoers/def_data.c:384 msgid "Always run commands in a pseudo-tty" msgstr "Увек покреће наредбе у привидној конзоли" -#: plugins/sudoers/def_data.c:368 +#: plugins/sudoers/def_data.c:388 #, c-format msgid "Plugin for non-Unix group support: %s" msgstr "Прикључак за подршку не-Јуникс групе: %s" -#: plugins/sudoers/def_data.c:372 +#: plugins/sudoers/def_data.c:392 #, c-format msgid "Directory in which to store input/output logs: %s" msgstr "Директоријум за смештај улазних/излазних дневника: %s" -#: plugins/sudoers/def_data.c:376 +#: plugins/sudoers/def_data.c:396 #, c-format msgid "File in which to store the input/output log: %s" msgstr "Датотека за смештај улазно/излазног дневника: %s" -#: plugins/sudoers/def_data.c:380 +#: plugins/sudoers/def_data.c:400 msgid "Add an entry to the utmp/utmpx file when allocating a pty" msgstr "Додаје унос у датотеку „utmp/utmpx“ када додељује „pty“" -#: plugins/sudoers/def_data.c:384 +#: plugins/sudoers/def_data.c:404 msgid "Set the user in utmp to the runas user, not the invoking user" msgstr "Подешава корисника у „utmp“-у на корисника покрени-као, не призивајући корисника" -#: plugins/sudoers/def_data.c:388 +#: plugins/sudoers/def_data.c:408 #, c-format msgid "Set of permitted privileges: %s" msgstr "Скуп допуштених повластица: %s" -#: plugins/sudoers/def_data.c:392 +#: plugins/sudoers/def_data.c:412 #, c-format msgid "Set of limit privileges: %s" msgstr "Скуп повластица ограничења: %s" -#: plugins/sudoers/def_data.c:396 +#: plugins/sudoers/def_data.c:416 msgid "Run commands on a pty in the background" msgstr "Покреће наредбе у позадини на назовитерминалу" -#: plugins/sudoers/def_data.c:400 +#: plugins/sudoers/def_data.c:420 #, c-format msgid "PAM service name to use: %s" msgstr "Назив ПАМ услуге за коришћење: %s" -#: plugins/sudoers/def_data.c:404 +#: plugins/sudoers/def_data.c:424 #, c-format msgid "PAM service name to use for login shells: %s" msgstr "Назив ПАМ услуге за шкољке пријављивања: %s" -#: plugins/sudoers/def_data.c:408 +#: plugins/sudoers/def_data.c:428 #, c-format msgid "PAM service name to use when sudo is run with the -A option: %s" msgstr "Назив ПАМ услуге за коришћење када судо ради са опцијом „-A“: %s" -#: plugins/sudoers/def_data.c:412 +#: plugins/sudoers/def_data.c:432 msgid "Attempt to establish PAM credentials for the target user" msgstr "Покушава да успостави ПАМ пуномоћства за циљног корисника" -#: plugins/sudoers/def_data.c:416 +#: plugins/sudoers/def_data.c:436 msgid "Create a new PAM session for the command to run in" msgstr "Прави нову ПАМ сесију за покретање наредбе" -#: plugins/sudoers/def_data.c:420 +#: plugins/sudoers/def_data.c:440 msgid "Perform PAM account validation management" msgstr "Обавља управљање провером ПАМ налога" -#: plugins/sudoers/def_data.c:424 +#: plugins/sudoers/def_data.c:444 #, c-format msgid "Maximum I/O log sequence number: %s" msgstr "Највећи број низа У/И дневника: %s" -#: plugins/sudoers/def_data.c:428 +#: plugins/sudoers/def_data.c:448 msgid "Enable sudoers netgroup support" msgstr "Укључује подршку нетгрупе судоерса" -#: plugins/sudoers/def_data.c:432 +#: plugins/sudoers/def_data.c:452 msgid "Check parent directories for writability when editing files with sudoedit" msgstr "Проверава родитељски директоријум за уписивошћу када уређује датотеке са „sudoedit“" -#: plugins/sudoers/def_data.c:436 +#: plugins/sudoers/def_data.c:456 msgid "Follow symbolic links when editing files with sudoedit" msgstr "Прати симболичке везе када уређује датотеке са „sudoedit“" -#: plugins/sudoers/def_data.c:440 +#: plugins/sudoers/def_data.c:460 msgid "Query the group plugin for unknown system groups" msgstr "Пропитује прикључак групе за непознатим групама система" -#: plugins/sudoers/def_data.c:444 +#: plugins/sudoers/def_data.c:464 msgid "Match netgroups based on the entire tuple: user, host and domain" msgstr "Упоређује мрежне групе на основу читавог слога: корисник, домаћин и домен" -#: plugins/sudoers/def_data.c:448 +#: plugins/sudoers/def_data.c:468 msgid "Allow commands to be run even if sudo cannot write to the audit log" msgstr "Допушта покретање наредби чак и ако судо не може да пише у дневник прегледа" -#: plugins/sudoers/def_data.c:452 +#: plugins/sudoers/def_data.c:472 msgid "Allow commands to be run even if sudo cannot write to the I/O log" msgstr "Допушта покретање наредби чак и ако судо не може да пише у дневник У/И" -#: plugins/sudoers/def_data.c:456 +#: plugins/sudoers/def_data.c:476 msgid "Allow commands to be run even if sudo cannot write to the log file" msgstr "Допушта покретање наредби чак и ако судо не може да пише у датотеку дневника" -#: plugins/sudoers/def_data.c:460 +#: plugins/sudoers/def_data.c:480 msgid "Resolve groups in sudoers and match on the group ID, not the name" msgstr "Решава групе у судоерсима и упоређује ИД групе, а не назив" -#: plugins/sudoers/def_data.c:464 +#: plugins/sudoers/def_data.c:484 #, c-format msgid "Log entries larger than this value will be split into multiple syslog messages: %u" msgstr "Уноси дневника већи од ове вредности биће подељени на више порука системског дневника: %u" -#: plugins/sudoers/def_data.c:468 +#: plugins/sudoers/def_data.c:488 #, c-format msgid "User that will own the I/O log files: %s" msgstr "Корисник који ће поседовати датотеке дневника У/И: %s" -#: plugins/sudoers/def_data.c:472 +#: plugins/sudoers/def_data.c:492 #, c-format msgid "Group that will own the I/O log files: %s" msgstr "Група која ће поседовати датотеке дневника У/И: %s" -#: plugins/sudoers/def_data.c:476 +#: plugins/sudoers/def_data.c:496 #, c-format msgid "File mode to use for the I/O log files: 0%o" msgstr "Режим датотеке за коришћење за датотеке дневника У/И: 0%o" -#: plugins/sudoers/def_data.c:480 +#: plugins/sudoers/def_data.c:500 #, c-format msgid "Execute commands by file descriptor instead of by path: %s" msgstr "Извршава наредбе описником датотеке уместо путањом: %s" -#: plugins/sudoers/def_data.c:484 +#: plugins/sudoers/def_data.c:504 msgid "Ignore unknown Defaults entries in sudoers instead of producing a warning" msgstr "Занемарује непознате уносе основности у судоерсу уместо да даје упозорење" -#: plugins/sudoers/def_data.c:488 +#: plugins/sudoers/def_data.c:508 #, c-format msgid "Time in seconds after which the command will be terminated: %u" msgstr "Време у секундама након ког ће наредба бити окончана: %u" -#: plugins/sudoers/def_data.c:492 +#: plugins/sudoers/def_data.c:512 msgid "Allow the user to specify a timeout on the command line" msgstr "Допушта кориснику да наведе време на линији наредби" -#: plugins/sudoers/def_data.c:496 +#: plugins/sudoers/def_data.c:516 msgid "Flush I/O log data to disk immediately instead of buffering it" msgstr "Пребацује У/И податке дневника на диск одмах уместо да га смешта у међумеморију" -#: plugins/sudoers/def_data.c:500 +#: plugins/sudoers/def_data.c:520 msgid "Include the process ID when logging via syslog" msgstr "Укључује ИБ процеса приликом пријављивања путем дневника система" -#: plugins/sudoers/def_data.c:504 +#: plugins/sudoers/def_data.c:524 #, c-format msgid "Type of authentication timestamp record: %s" msgstr "Врста временске ознаке потврђивања идентитета: %s" -#: plugins/sudoers/def_data.c:508 +#: plugins/sudoers/def_data.c:528 #, c-format msgid "Authentication failure message: %s" msgstr "Потврђивање идентитета није успело: %s" -#: plugins/sudoers/def_data.c:512 +#: plugins/sudoers/def_data.c:532 msgid "Ignore case when matching user names" msgstr "Занемарује величину слова приликом поклапања назива корисника" -#: plugins/sudoers/def_data.c:516 +#: plugins/sudoers/def_data.c:536 msgid "Ignore case when matching group names" msgstr "Занемарује величину слова приликом поклапања назива групе" -#: plugins/sudoers/def_data.c:520 +#: plugins/sudoers/def_data.c:540 msgid "Log when a command is allowed by sudoers" msgstr "Пише дневник када судоерси дозвољавају наредбу" -#: plugins/sudoers/def_data.c:524 +#: plugins/sudoers/def_data.c:544 msgid "Log when a command is denied by sudoers" msgstr "Пише дневник када судоерси не дозвољавају наредбу" -#: plugins/sudoers/def_data.c:528 +#: plugins/sudoers/def_data.c:548 msgid "Sudo log server(s) to connect to with optional port" msgstr "Судо сервер(и) дневника за повезивање са изборним прикључником" -#: plugins/sudoers/def_data.c:532 +#: plugins/sudoers/def_data.c:552 #, c-format msgid "Sudo log server timeout in seconds: %u" msgstr "Време истека судо сервера дневника у секундама: %u" -#: plugins/sudoers/def_data.c:536 +#: plugins/sudoers/def_data.c:556 msgid "Enable SO_KEEPALIVE socket option on the socket connected to the logserver" msgstr "Укључује „SO_KEEPALIVE“ опцију прикључнице са повезаном прикључницом са сервером дневника" -#: plugins/sudoers/def_data.c:540 +#: plugins/sudoers/def_data.c:560 #, c-format msgid "Path to the audit server's CA bundle file: %s" msgstr "Путања до датотеке групних издавача уверења сервера испитивања: %s" -#: plugins/sudoers/def_data.c:544 +#: plugins/sudoers/def_data.c:564 #, c-format msgid "Path to the sudoers certificate file: %s" msgstr "Путања до датотеке уверења судоерса: %s" -#: plugins/sudoers/def_data.c:548 +#: plugins/sudoers/def_data.c:568 #, c-format msgid "Path to the sudoers private key file: %s" msgstr "Путања до датотеке датотеке личног кључа судоерса: %s" -#: plugins/sudoers/def_data.c:552 +#: plugins/sudoers/def_data.c:572 msgid "Verify that the log server's certificate is valid" msgstr "Потврђује да је исправно уверење дневника сервера" -#: plugins/sudoers/def_data.c:556 +#: plugins/sudoers/def_data.c:576 msgid "Allow the use of unknown runas user and/or group ID" msgstr "Допушта коришћење непознатог „runas“ корисника и/или ИБ-а групе" -#: plugins/sudoers/def_data.c:560 +#: plugins/sudoers/def_data.c:580 msgid "Only permit running commands as a user with a valid shell" msgstr "Допушта покретање наредби као корисник само са исправном шкољком" -#: plugins/sudoers/def_data.c:564 +#: plugins/sudoers/def_data.c:584 msgid "Set the pam remote user to the user running sudo" msgstr "Поставља пам удаљеног корисника на корисника покретача судо-а" -#: plugins/sudoers/def_data.c:568 +#: plugins/sudoers/def_data.c:588 msgid "Set the pam remote host to the local host name" msgstr "Поставља пам удаљеног домаћина на назив локалног домаћина" -#: plugins/sudoers/def_data.c:572 +#: plugins/sudoers/def_data.c:592 #, c-format msgid "Working directory to change to before executing the command: %s" msgstr "Радни директоријум за прелазак пре извршавања наредбе: %s" -#: plugins/sudoers/def_data.c:576 +#: plugins/sudoers/def_data.c:596 #, c-format msgid "Root directory to change to before executing the command: %s" msgstr "Корени директоријум за прелазак пре извршавања наредбе: %s" -#: plugins/sudoers/def_data.c:580 +#: plugins/sudoers/def_data.c:600 #, c-format msgid "The format of logs to produce: %s" msgstr "Формат резултирајућих дневника: %s" -#: plugins/sudoers/def_data.c:584 +#: plugins/sudoers/def_data.c:604 msgid "Enable SELinux RBAC support" msgstr "Укључује СЕЛинукс РБАЦ подршку" -#: plugins/sudoers/def_data.c:588 +#: plugins/sudoers/def_data.c:608 #, c-format msgid "Path to the file that is created the first time sudo is run: %s" msgstr "Путања до датотеке која је створена приликом првог покретања судоа: %s" -#: plugins/sudoers/def_data.c:592 +#: plugins/sudoers/def_data.c:612 msgid "Intercept further commands and apply sudoers restrictions to them" msgstr "Пресреће будуће наредбе и примењује „sudoers“ ограничења на њима" -#: plugins/sudoers/def_data.c:596 +#: plugins/sudoers/def_data.c:616 msgid "Log sub-commands run by the original command" msgstr "Бележи поднаредбе које покрене изворна наредба" -#: plugins/sudoers/def_data.c:600 +#: plugins/sudoers/def_data.c:620 msgid "Log the exit status of commands" msgstr "Бележи стање излаза наредбе" -#: plugins/sudoers/def_data.c:604 +#: plugins/sudoers/def_data.c:624 msgid "Subsequent commands in an intercepted session must be authenticated" msgstr "Наредне наредбе у пресретнутој сесији морају бити аутентификоване" -#: plugins/sudoers/def_data.c:608 +#: plugins/sudoers/def_data.c:628 msgid "Allow an intercepted command to run set setuid or setgid programs" msgstr "Омогућава пресретнутој наредби да покрене поставку „setuid“ или „setgid“ програма" -#: plugins/sudoers/def_data.c:612 +#: plugins/sudoers/def_data.c:632 #, c-format msgid "The maximum size to which the process's address space may grow (in bytes): %s" msgstr "Највећа величина до које може да нарасте адресни простор процеса (у бајтовима): %s" -#: plugins/sudoers/def_data.c:616 +#: plugins/sudoers/def_data.c:636 #, c-format msgid "The largest size core dump file that may be created (in bytes): %s" msgstr "Највећа величина избачаја датотеке језгра која се може направити (у бајтовима): %s" -#: plugins/sudoers/def_data.c:620 +#: plugins/sudoers/def_data.c:640 #, c-format msgid "The maximum amount of CPU time that the process may use (in seconds): %s" msgstr "Највећа количина времена процесора које процес може да користи (у секундама): %s" -#: plugins/sudoers/def_data.c:624 +#: plugins/sudoers/def_data.c:644 #, c-format msgid "The maximum size of the data segment for the process (in bytes): %s" msgstr "Највећа величина сегмента података за процес (у бајтовима): %s" -#: plugins/sudoers/def_data.c:628 +#: plugins/sudoers/def_data.c:648 #, c-format msgid "The largest size file that the process may create (in bytes): %s" msgstr "Највећа величина датотеке коју процес може да направи (у бајтовима): %s" -#: plugins/sudoers/def_data.c:632 +#: plugins/sudoers/def_data.c:652 #, c-format msgid "The maximum number of locks that the process may establish: %s" msgstr "Највећи број закључавања која процес може да успостави: %s" -#: plugins/sudoers/def_data.c:636 +#: plugins/sudoers/def_data.c:656 #, c-format msgid "The maximum size that the process may lock in memory (in bytes): %s" msgstr "Највећа величина коју процес може да закључа у меморији (у бајтовима): %s" -#: plugins/sudoers/def_data.c:640 +#: plugins/sudoers/def_data.c:660 #, c-format msgid "The maximum number of files that the process may have open: %s" msgstr "Највећи број датотека које процес може да отвори: %s" -#: plugins/sudoers/def_data.c:644 +#: plugins/sudoers/def_data.c:664 #, c-format msgid "The maximum number of processes that the user may run simultaneously: %s" msgstr "Највећи број процеса које корисник може да покрене истовремено: %s" -#: plugins/sudoers/def_data.c:648 +#: plugins/sudoers/def_data.c:668 #, c-format msgid "The maximum size to which the process's resident set size may grow (in bytes): %s" msgstr "Највећа величина до које може да нарасте резидентна величина скупа процеса (у бајтовима): %s" -#: plugins/sudoers/def_data.c:652 +#: plugins/sudoers/def_data.c:672 #, c-format msgid "The maximum size to which the process's stack may grow (in bytes): %s" msgstr "Највећа величина до које може да нарасте спремник процеса (у бајтовима): %s" -#: plugins/sudoers/def_data.c:656 +#: plugins/sudoers/def_data.c:676 msgid "Attempt authentication even when in non-interactive mode" msgstr "Покушава потврђивање идентитета чак и када није у не-међудејственом режиму" -#: plugins/sudoers/def_data.c:660 +#: plugins/sudoers/def_data.c:680 msgid "Store plaintext passwords in I/O log input" msgstr "Смешта обично-текстуалне лозинке у У/И улаз дневника" -#: plugins/sudoers/def_data.c:664 +#: plugins/sudoers/def_data.c:684 msgid "List of regular expressions to use when matching a password prompt" msgstr "Списак регуларних израза за коришћење приликом поређења упита лозинке" -#: plugins/sudoers/def_data.c:668 +#: plugins/sudoers/def_data.c:688 #, c-format msgid "The mechanism used by the intercept and log_subcmds options: %s" msgstr "Механизам који користе опције „intercept“ и „log_subcmds“: %s" -#: plugins/sudoers/def_data.c:672 +#: plugins/sudoers/def_data.c:692 +msgid "Attempt to verify the command and arguments after execution" +msgstr "Покушава да провери наредбу и аргументе након извршавања" + +#: plugins/sudoers/def_data.c:696 #, c-format msgid "AppArmor profile to use in the new security context: %s" msgstr "АпАрмор профил за коришћење у новом контексту безбедности: %s" @@ -2552,31 +2643,40 @@ msgid "value \"%s\" is invalid for option \"%s\"" msgstr "вредност „%s“ је неисправна за опцију „%s“" -#: plugins/sudoers/defaults.c:1127 plugins/sudoers/policy.c:207 -#: plugins/sudoers/policy.c:216 +#: plugins/sudoers/defaults.c:1128 plugins/sudoers/policy.c:210 +#: plugins/sudoers/policy.c:219 #, c-format msgid "path name for \"%s\" too long" msgstr "назив путање за „%s“ је предуг" -#: plugins/sudoers/defaults.c:1133 +#: plugins/sudoers/defaults.c:1134 #, c-format msgid "values for \"%s\" must start with a '/', '~', or '*'" msgstr "вредност за „%s“ мора да почиње са /, ~ или *" -#: plugins/sudoers/defaults.c:1140 +#: plugins/sudoers/defaults.c:1141 #, c-format msgid "values for \"%s\" must start with a '/'" msgstr "вредност за „%s“ мора да почне /" -#: plugins/sudoers/env.c:412 +#: plugins/sudoers/editor.c:180 +#, c-format +msgid "ignoring editor: %.*s" +msgstr "занемарујем уређивача: %.*s" + +#: plugins/sudoers/editor.c:181 +msgid "editor arguments may not contain \"--\"" +msgstr "аргументи уређивача не могу да садрже „--“" + +#: plugins/sudoers/env.c:426 msgid "sudo_putenv: corrupted envp, length mismatch" msgstr "sudo_putenv: оштећено стави окружење, дужине не одговарају" -#: plugins/sudoers/env.c:1095 +#: plugins/sudoers/env.c:1113 msgid "unable to rebuild the environment" msgstr "не могу поново да изградим окружење" -#: plugins/sudoers/env.c:1169 +#: plugins/sudoers/env.c:1192 #, c-format msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "извините, није вам дозвољено да подесите следеће променљиве окружења: %s" @@ -2591,27 +2691,17 @@ msgid "%s: read error" msgstr "%s: грешка читања" -#: plugins/sudoers/group_plugin.c:83 -#, c-format -msgid "%s must be owned by uid %d" -msgstr "„%s“ мора бити у власништву јиб-а %d" - -#: plugins/sudoers/group_plugin.c:87 -#, c-format -msgid "%s must only be writable by owner" -msgstr "Само корисник може да пише у „%s“" - -#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:576 +#: plugins/sudoers/group_plugin.c:169 plugins/sudoers/sssd.c:576 #, c-format msgid "unable to load %s: %s" msgstr "не могу да учитам %s: %s" -#: plugins/sudoers/group_plugin.c:102 +#: plugins/sudoers/group_plugin.c:181 #, c-format msgid "unable to find symbol \"group_plugin\" in %s" msgstr "не могу да нађем симбол „group_plugin“ у „%s“" -#: plugins/sudoers/group_plugin.c:107 +#: plugins/sudoers/group_plugin.c:186 #, c-format msgid "%s: incompatible group plugin major version %d, expected %d" msgstr "%s: несагласно веће издање прикључка групе %d, очекивано је %d" @@ -2653,19 +2743,19 @@ msgstr "%s: унутрашња грешка, датотека У/И дневника за догађај %d није отворена" #: plugins/sudoers/iolog.c:1054 plugins/sudoers/iolog.c:1182 -#: plugins/sudoers/iolog.c:1287 plugins/sudoers/timestamp.c:849 -#: plugins/sudoers/timestamp.c:941 plugins/sudoers/visudo.c:546 -#: plugins/sudoers/visudo.c:552 +#: plugins/sudoers/iolog.c:1287 plugins/sudoers/timestamp.c:879 +#: plugins/sudoers/timestamp.c:971 plugins/sudoers/visudo.c:556 +#: plugins/sudoers/visudo.c:562 msgid "unable to read the clock" msgstr "не могу да прочитам сат" -#: plugins/sudoers/iolog.c:1279 plugins/sudoers/log_client.c:1228 -#: plugins/sudoers/log_client.c:1238 plugins/sudoers/log_client.c:1242 +#: plugins/sudoers/iolog.c:1279 plugins/sudoers/log_client.c:1192 +#: plugins/sudoers/log_client.c:1202 plugins/sudoers/log_client.c:1206 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: унутрашња грешка, неисправан сигнал %d" -#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:291 +#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:292 msgid "starttls not supported when using ldaps" msgstr "старттлс није подржано када се користи лдапс" @@ -2679,16 +2769,16 @@ msgid "you must set TLS_CERT in %s to use SSL" msgstr "морате да подесите „TLS_CERT“ у „%s“ да користите ССЛ" -#: plugins/sudoers/ldap.c:1712 +#: plugins/sudoers/ldap.c:1714 #, c-format msgid "unable to initialize LDAP: %s" msgstr "не могу да покренем ЛДАП: %s" -#: plugins/sudoers/ldap.c:1749 +#: plugins/sudoers/ldap.c:1751 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "„start_tls“ је наведено али ЛДАП библиотеке не подржавају „ldap_start_tls_s()“ или „ldap_start_tls_s_np()“" -#: plugins/sudoers/ldap.c:1886 plugins/sudoers/parse_ldif.c:747 +#: plugins/sudoers/ldap.c:1888 plugins/sudoers/parse_ldif.c:748 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "неисправна особина „sudoOrder“: %s" @@ -2698,12 +2788,12 @@ msgid "%s: port too large" msgstr "%s: прикључник је превелик" -#: plugins/sudoers/ldap_conf.c:260 +#: plugins/sudoers/ldap_conf.c:261 #, c-format msgid "unsupported LDAP uri type: %s" msgstr "неподржана врста ЛДАП путање: %s" -#: plugins/sudoers/ldap_conf.c:287 +#: plugins/sudoers/ldap_conf.c:288 msgid "unable to mix ldap and ldaps URIs" msgstr "не могу да помешам лдап и лдапс путање" @@ -2728,111 +2818,111 @@ msgid "unable to send audit message" msgstr "не могу да пошаљем поруку прегледа" -#: plugins/sudoers/log_client.c:120 plugins/sudoers/log_client.c:407 -#: plugins/sudoers/log_client.c:1475 plugins/sudoers/log_client.c:2083 +#: plugins/sudoers/log_client.c:125 plugins/sudoers/log_client.c:412 +#: plugins/sudoers/log_client.c:1439 plugins/sudoers/log_client.c:2055 msgid "error in event loop" msgstr "грешка у петљи догађаја" -#: plugins/sudoers/log_client.c:200 +#: plugins/sudoers/log_client.c:205 #, c-format msgid "Creation of new SSL_CTX object failed: %s" msgstr "Стварање новог „SSL_CTX“ објекта није успело: %s" -#: plugins/sudoers/log_client.c:225 +#: plugins/sudoers/log_client.c:230 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "не могу да учитам комплет ауторитета уверења „%s“" -#: plugins/sudoers/log_client.c:247 +#: plugins/sudoers/log_client.c:252 #, c-format msgid "unable to load certificate %s" msgstr "не могу да учитам уверење „%s“" -#: plugins/sudoers/log_client.c:261 +#: plugins/sudoers/log_client.c:266 #, c-format msgid "unable to load private key %s" msgstr "не могу да учитам лични кључ „%s“" -#: plugins/sudoers/log_client.c:270 +#: plugins/sudoers/log_client.c:275 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "Не могу да доделим ссл објекат: %s" -#: plugins/sudoers/log_client.c:359 plugins/sudoers/log_client.c:364 +#: plugins/sudoers/log_client.c:364 plugins/sudoers/log_client.c:369 #, c-format msgid "TLS connection to %s:%s failed: %s" msgstr "ТЛС повезивање са „%s:%s“ није успело: %s" -#: plugins/sudoers/log_client.c:538 +#: plugins/sudoers/log_client.c:543 msgid "TLS initialization was unsuccessful" msgstr "ТЛС покретање беше безуспешно" -#: plugins/sudoers/log_client.c:548 +#: plugins/sudoers/log_client.c:553 msgid "TLS handshake was unsuccessful" msgstr "ТЛС руковање беше безуспешно" -#: plugins/sudoers/log_client.c:1246 +#: plugins/sudoers/log_client.c:1210 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: унутрашња грешка, неисправно излазно стање %d" -#: plugins/sudoers/log_client.c:1775 plugins/sudoers/log_client.c:1799 +#: plugins/sudoers/log_client.c:1739 plugins/sudoers/log_client.c:1763 msgid "lost connection to log server" msgstr "изгубих везу са сервером дневника" -#: plugins/sudoers/log_client.c:1876 +#: plugins/sudoers/log_client.c:1840 msgid "missing write buffer" msgstr "недостаје међумеморија писања" -#: plugins/sudoers/log_client.c:2024 +#: plugins/sudoers/log_client.c:1994 msgid "unable to connect to log server" msgstr "не могу да се повежем на сервер дневника" -#: plugins/sudoers/logging.c:298 +#: plugins/sudoers/logging.c:290 msgid "user NOT in sudoers" msgstr "корисник НИЈЕ у судоерсу" -#: plugins/sudoers/logging.c:300 +#: plugins/sudoers/logging.c:292 msgid "user NOT authorized on host" msgstr "корисник НИЈЕ овлашћен на домаћину" -#: plugins/sudoers/logging.c:302 +#: plugins/sudoers/logging.c:294 msgid "command not allowed" msgstr "наредба није допуштена" -#: plugins/sudoers/logging.c:323 +#: plugins/sudoers/logging.c:315 #, c-format msgid "%s is not in the sudoers file.\n" msgstr "„%s“ није у датотеци судоерса.\n" -#: plugins/sudoers/logging.c:326 +#: plugins/sudoers/logging.c:318 #, c-format msgid "%s is not allowed to run sudo on %s.\n" msgstr "Кориснику „%s“ није допуштено да покрене судо на „%s“.\n" -#: plugins/sudoers/logging.c:329 +#: plugins/sudoers/logging.c:321 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Извините, корисник %s не може покренути судо на %s.\n" -#: plugins/sudoers/logging.c:332 +#: plugins/sudoers/logging.c:324 #, 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:342 +#: plugins/sudoers/logging.c:334 msgid "This incident has been reported to the administrator.\n" msgstr "Овај инцидент је пријављен администратору.\n" -#: plugins/sudoers/logging.c:373 plugins/sudoers/sudoers.c:643 -#: plugins/sudoers/sudoers.c:645 plugins/sudoers/sudoers.c:647 -#: plugins/sudoers/sudoers.c:649 plugins/sudoers/sudoers.c:799 -#: plugins/sudoers/sudoers.c:801 +#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:655 +#: plugins/sudoers/sudoers.c:657 plugins/sudoers/sudoers.c:659 +#: plugins/sudoers/sudoers.c:661 plugins/sudoers/sudoers.c:816 +#: plugins/sudoers/sudoers.c:818 #, c-format msgid "%s: command not found" msgstr "%s: нема такве наредбе" -#: plugins/sudoers/logging.c:375 plugins/sudoers/sudoers.c:639 +#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:651 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2841,7 +2931,7 @@ "занемарујем „%s“ пронађено у „.“\n" "Користите „sudo ./%s“ ако је то „%s“ које желите да покренете." -#: plugins/sudoers/logging.c:395 +#: plugins/sudoers/logging.c:391 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" @@ -2849,24 +2939,24 @@ msgstr[1] "%u покушаја нетачне лозинке" msgstr[2] "%u покушаја нетачне лозинке" -#: plugins/sudoers/logging.c:485 +#: plugins/sudoers/logging.c:481 msgid "authentication failure" msgstr "потврђивање идентитета није успело" -#: plugins/sudoers/logging.c:524 plugins/sudoers/logging.c:543 +#: plugins/sudoers/logging.c:520 plugins/sudoers/logging.c:539 msgid "a password is required" msgstr "потребна је лозинка" -#: plugins/sudoers/logging.c:806 plugins/sudoers/logging.c:818 +#: plugins/sudoers/logging.c:803 plugins/sudoers/logging.c:815 msgid "problem parsing sudoers" msgstr "проблем обраде судоерса" -#: plugins/sudoers/logging.c:879 plugins/sudoers/logging.c:891 +#: plugins/sudoers/logging.c:877 plugins/sudoers/logging.c:889 #, c-format msgid "%s:%d:%d: %s" msgstr "%s:%d:%d: %s" -#: plugins/sudoers/logging.c:1068 +#: plugins/sudoers/logging.c:1066 #, c-format msgid "unable to write log file: %s" msgstr "не могу да запишем датотеку дневника: %s" @@ -2881,7 +2971,7 @@ msgid "digest for %s (%s) is not in %s form" msgstr "приказ за %s (%s) није у %s облику" -#: plugins/sudoers/parse.c:585 +#: plugins/sudoers/parse.c:631 #, c-format msgid "" "\n" @@ -2890,7 +2980,7 @@ "\n" "ЛДАП улога: %s\n" -#: plugins/sudoers/parse.c:588 +#: plugins/sudoers/parse.c:634 msgid "" "\n" "Sudoers entry:\n" @@ -2898,110 +2988,110 @@ "\n" "Унос судоерса:\n" -#: plugins/sudoers/parse.c:590 +#: plugins/sudoers/parse.c:636 msgid " RunAsUsers: " msgstr " „Покрени-као“ корисници: " -#: plugins/sudoers/parse.c:605 +#: plugins/sudoers/parse.c:651 msgid " RunAsGroups: " msgstr " „Покрени-као“ групе: " -#: plugins/sudoers/parse.c:615 +#: plugins/sudoers/parse.c:661 msgid " Options: " msgstr " Опције: " -#: plugins/sudoers/parse.c:679 +#: plugins/sudoers/parse.c:725 msgid " Commands:\n" msgstr " Наредбе:\n" -#: plugins/sudoers/parse.c:870 +#: plugins/sudoers/parse.c:916 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Упоређује уносе основности за „%s“ на %s:\n" -#: plugins/sudoers/parse.c:888 +#: plugins/sudoers/parse.c:934 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Покрени-као и Наредбено-посебне основности за „%s“:\n" -#: plugins/sudoers/parse.c:906 +#: plugins/sudoers/parse.c:952 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "Корисник „%s“ може да покреће следеће наредбе на %s:\n" -#: plugins/sudoers/parse.c:921 +#: plugins/sudoers/parse.c:967 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "Корисник „%s“ нема права да покрене судо над „%s“.\n" -#: plugins/sudoers/parse_ldif.c:617 +#: plugins/sudoers/parse_ldif.c:618 #, c-format msgid "ignoring incomplete sudoRole: cn: %s" msgstr "занемарујем непотпуно „sudoRole“: cn: %s" -#: plugins/sudoers/parse_ldif.c:677 +#: plugins/sudoers/parse_ldif.c:678 #, c-format msgid "invalid LDIF attribute: %s" msgstr "неисправна особина „LDIF“: %s" -#: plugins/sudoers/policy.c:80 plugins/sudoers/policy.c:111 +#: plugins/sudoers/policy.c:82 plugins/sudoers/policy.c:113 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "судо челник је поставио неисправну „%.*s“" -#: plugins/sudoers/policy.c:351 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:360 plugins/sudoers/testsudoers.c:268 msgid "unable to parse network address list" msgstr "не могу да обрадим списак адреса мреже" -#: plugins/sudoers/policy.c:508 +#: plugins/sudoers/policy.c:528 msgid "user name not set by sudo front-end" msgstr "судо челник није поставио име корисника" -#: plugins/sudoers/policy.c:512 +#: plugins/sudoers/policy.c:532 msgid "user-ID not set by sudo front-end" msgstr "судо челник није поставио ИБ корисника" -#: plugins/sudoers/policy.c:516 +#: plugins/sudoers/policy.c:536 msgid "group-ID not set by sudo front-end" msgstr "судо челник није поставио ИБ групе" -#: plugins/sudoers/policy.c:520 +#: plugins/sudoers/policy.c:540 msgid "host name not set by sudo front-end" msgstr "судо челник није поставио назив домаћина" -#: plugins/sudoers/policy.c:706 +#: plugins/sudoers/policy.c:737 #, c-format msgid "invalid working directory: %s" msgstr "неисправан радни директоријум: %s" -#: plugins/sudoers/policy.c:886 +#: plugins/sudoers/policy.c:921 #, c-format msgid "invalid chroot directory: %s" msgstr "неисправан „chroot“ директоријум: %s" -#: plugins/sudoers/policy.c:1071 plugins/sudoers/visudo.c:254 -#: plugins/sudoers/visudo.c:896 +#: plugins/sudoers/policy.c:1108 plugins/sudoers/visudo.c:259 +#: plugins/sudoers/visudo.c:906 #, c-format msgid "unable to execute %s" msgstr "не могу да извршим „%s“" -#: plugins/sudoers/policy.c:1141 plugins/sudoers/policy.c:1178 -#: plugins/sudoers/policy.c:1200 plugins/sudoers/policy.c:1226 +#: plugins/sudoers/policy.c:1178 plugins/sudoers/policy.c:1215 +#: plugins/sudoers/policy.c:1237 plugins/sudoers/policy.c:1263 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s: неисправне заставице од судо челника: 0×%x" -#: plugins/sudoers/policy.c:1262 +#: plugins/sudoers/policy.c:1299 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Издање %s прикључка политике судоерса\n" -#: plugins/sudoers/policy.c:1264 +#: plugins/sudoers/policy.c:1301 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Граматика датотеке судоерса издање %d\n" -#: plugins/sudoers/policy.c:1268 +#: plugins/sudoers/policy.c:1305 #, c-format msgid "" "\n" @@ -3010,27 +3100,27 @@ "\n" "Путања судоерса: %s\n" -#: plugins/sudoers/policy.c:1271 +#: plugins/sudoers/policy.c:1308 #, c-format msgid "nsswitch path: %s\n" msgstr "путања нс-прекидача: %s\n" -#: plugins/sudoers/policy.c:1273 +#: plugins/sudoers/policy.c:1310 #, c-format msgid "ldap.conf path: %s\n" msgstr "путања лдап.подешавања: %s\n" -#: plugins/sudoers/policy.c:1274 +#: plugins/sudoers/policy.c:1311 #, c-format msgid "ldap.secret path: %s\n" msgstr "путања лдап.тајне: %s\n" -#: plugins/sudoers/policy.c:1307 +#: plugins/sudoers/policy.c:1344 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "немогу да региструјем прикачку врсте „%d“ (издање %d.%d)" -#: plugins/sudoers/policy.c:1325 +#: plugins/sudoers/policy.c:1362 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "немогу да поништим регистровање прикачке врсте „%d“ (издање %d.%d)" @@ -3077,24 +3167,24 @@ msgid "unable to cache group %s, already exists" msgstr "не могу да сместим у оставу групу „%s“, већ постоји" -#: plugins/sudoers/pwutil.c:880 plugins/sudoers/pwutil.c:931 -#: plugins/sudoers/pwutil.c:981 plugins/sudoers/pwutil.c:1033 +#: plugins/sudoers/pwutil.c:880 plugins/sudoers/pwutil.c:963 +#: plugins/sudoers/pwutil.c:1017 plugins/sudoers/pwutil.c:1071 #, c-format msgid "unable to cache group list for %s, already exists" msgstr "не могу да сместим у оставу списак групе за „%s“, већ постоји" -#: plugins/sudoers/pwutil.c:886 plugins/sudoers/pwutil.c:936 -#: plugins/sudoers/pwutil.c:987 plugins/sudoers/pwutil.c:1038 +#: plugins/sudoers/pwutil.c:886 plugins/sudoers/pwutil.c:968 +#: plugins/sudoers/pwutil.c:1023 plugins/sudoers/pwutil.c:1076 #, c-format msgid "unable to cache group list for %s" msgstr "не могу да сместим у оставу списак групе за „%s“" -#: plugins/sudoers/pwutil.c:925 +#: plugins/sudoers/pwutil.c:957 #, c-format msgid "unable to parse groups for %s" msgstr "не могу да обрадим групе за „%s“" -#: plugins/sudoers/pwutil.c:1027 +#: plugins/sudoers/pwutil.c:1065 #, c-format msgid "unable to parse gids for %s" msgstr "не могу да обрадим гид-ове за „%s“" @@ -3169,256 +3259,254 @@ msgid "unable to find symbol \"%s\" in %s" msgstr "не могу да нађем симбол „%s“ у „%s“" -#: plugins/sudoers/sudoers.c:258 +#: plugins/sudoers/sudoers.c:263 #, c-format msgid "unable to get defaults from %s" msgstr "не могу да добавим основности за „%s“" -#: plugins/sudoers/sudoers.c:265 +#: plugins/sudoers/sudoers.c:270 msgid "no valid sudoers sources found, quitting" msgstr "нисам пронашао исправне изворе судоерса, прекидам" -#: plugins/sudoers/sudoers.c:341 +#: plugins/sudoers/sudoers.c:346 #, c-format msgid "user not allowed to change root directory to %s" msgstr "кориснику није дозвољено да промени корени директоријум у „%s“" -#: plugins/sudoers/sudoers.c:343 +#: plugins/sudoers/sudoers.c:348 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "није вам допуштено да користите опцију „-R“ са „%s“" -#: plugins/sudoers/sudoers.c:368 +#: plugins/sudoers/sudoers.c:373 #, c-format msgid "user not allowed to change directory to %s" msgstr "кориснику није дозвољено да промени директоријум у „%s“" -#: plugins/sudoers/sudoers.c:369 +#: plugins/sudoers/sudoers.c:374 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "није вам допуштено да користите опцију „-D“ са „%s“" -#: plugins/sudoers/sudoers.c:396 +#: plugins/sudoers/sudoers.c:401 msgid "no command specified" msgstr "није наведена наредба" -#: plugins/sudoers/sudoers.c:421 +#: plugins/sudoers/sudoers.c:426 msgid "sudoers specifies that root is not allowed to sudo" msgstr "судоерси наводе да администратор није дозвољен у судоу" -#: plugins/sudoers/sudoers.c:471 +#: plugins/sudoers/sudoers.c:483 msgid "user not allowed to override closefrom limit" msgstr "кориснику није дозвољено да препише „closefrom“ ограничење" -#: plugins/sudoers/sudoers.c:472 +#: plugins/sudoers/sudoers.c:484 msgid "you are not permitted to use the -C option" msgstr "није вам допуштено да користите опцију „-C“" -#: plugins/sudoers/sudoers.c:532 +#: plugins/sudoers/sudoers.c:544 #, c-format msgid "timestamp owner (%s): No such user" msgstr "власник временске ознаке (%s): нема таквог корисника" -#: plugins/sudoers/sudoers.c:547 +#: plugins/sudoers/sudoers.c:559 msgid "no tty" msgstr "нема конзоле" -#: plugins/sudoers/sudoers.c:548 +#: plugins/sudoers/sudoers.c:560 msgid "sorry, you must have a tty to run sudo" msgstr "извините, морате имати конзолу да покренете судо" -#: plugins/sudoers/sudoers.c:555 +#: plugins/sudoers/sudoers.c:567 #, c-format msgid "invalid shell for user %s: %s" msgstr "неисправна шкољка за корисника „%s“: %s" -#: plugins/sudoers/sudoers.c:638 +#: plugins/sudoers/sudoers.c:650 msgid "command in current directory" msgstr "наредба у текућем директоријуму" -#: plugins/sudoers/sudoers.c:653 +#: plugins/sudoers/sudoers.c:665 msgid "\"cd\" is a shell built-in command, it cannot be run directly." msgstr "„cd“ је уграђена наредба шкољке, не може бити покренута директно." -#: plugins/sudoers/sudoers.c:655 +#: plugins/sudoers/sudoers.c:667 msgid "the -s option may be used to run a privileged shell." msgstr "опција „-s“ се може користити за покретање привилеговане шкољке." -#: plugins/sudoers/sudoers.c:657 +#: plugins/sudoers/sudoers.c:669 msgid "the -D option may be used to run a command in a specific directory." msgstr "опција „-D“ се може користити за покретање наредбе у специфичном директоријуму." -#: plugins/sudoers/sudoers.c:666 +#: plugins/sudoers/sudoers.c:678 msgid "user not allowed to set a command timeout" msgstr "кориснику није дозвољено да подеси време истека наредбе" -#: plugins/sudoers/sudoers.c:668 +#: plugins/sudoers/sudoers.c:680 msgid "sorry, you are not allowed set a command timeout" msgstr "извините, није вам дозвољено да подесите време истека наредбе" -#: plugins/sudoers/sudoers.c:676 +#: plugins/sudoers/sudoers.c:688 msgid "user not allowed to preserve the environment" msgstr "кориснику није дозвољено да сачува окружење" -#: plugins/sudoers/sudoers.c:678 +#: plugins/sudoers/sudoers.c:690 msgid "sorry, you are not allowed to preserve the environment" msgstr "извините, није вам дозвољено да сачувате окружење" -#: plugins/sudoers/sudoers.c:1053 +#: plugins/sudoers/sudoers.c:799 +msgid "error setting user-specified environment variables" +msgstr "грешка постављања променљивих окружења које је навео корисник" + +#: plugins/sudoers/sudoers.c:1112 msgid "sudoedit doesn't need to be run via sudo" msgstr "„sudoedit“ не треба да се покреће путем „sudo“-а" -#: plugins/sudoers/sudoers.c:1110 plugins/sudoers/sudoreplay.c:1584 +#: plugins/sudoers/sudoers.c:1157 plugins/sudoers/sudoreplay.c:1612 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "не могу да прочитам „%s“" -#: plugins/sudoers/sudoers.c:1135 plugins/sudoers/visudo.c:485 -#: plugins/sudoers/visudo.c:764 -#, c-format -msgid "unable to stat %s" -msgstr "не могу да добијем податке о „%s“" - -#: plugins/sudoers/sudoers.c:1139 plugins/sudoers/visudo.c:1058 +#: plugins/sudoers/sudoers.c:1186 plugins/sudoers/visudo.c:1066 #, c-format msgid "%s is not a regular file" msgstr "„%s“ није обична датотека" -#: plugins/sudoers/sudoers.c:1143 plugins/sudoers/timestamp.c:252 toke.l:1247 +#: plugins/sudoers/sudoers.c:1190 plugins/sudoers/timestamp.c:263 toke.l:1255 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s је у власништву уиб-а %u, а треба бити %u" -#: plugins/sudoers/sudoers.c:1147 toke.l:1252 +#: plugins/sudoers/sudoers.c:1194 plugins/sudoers/timestamp.c:270 toke.l:1260 #, c-format msgid "%s is world writable" msgstr "Сви могу да пишу у „%s“" -#: plugins/sudoers/sudoers.c:1151 toke.l:1255 +#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/timestamp.c:275 toke.l:1263 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s је у власништву уиб-а %u, а треба бити %u" -#: plugins/sudoers/sudoers.c:1184 +#: plugins/sudoers/sudoers.c:1233 #, c-format msgid "only root can use \"-c %s\"" msgstr "само администратор може да користи „-c %s“" -#: plugins/sudoers/sudoers.c:1203 +#: plugins/sudoers/sudoers.c:1252 #, c-format msgid "unknown login class %s" msgstr "непознат разред пријављивања „%s“" -#: plugins/sudoers/sudoers.c:1290 plugins/sudoers/sudoers.c:1305 +#: plugins/sudoers/sudoers.c:1339 plugins/sudoers/sudoers.c:1354 #, c-format msgid "unable to resolve host %s" msgstr "не могу да решим домаћина „%s“" -#: plugins/sudoers/sudoreplay.c:259 +#: plugins/sudoers/sudoreplay.c:252 #, c-format msgid "invalid filter option: %s" msgstr "неисправна опција пропусника: %s" -#: plugins/sudoers/sudoreplay.c:275 +#: plugins/sudoers/sudoreplay.c:268 #, c-format msgid "invalid max wait: %s" msgstr "неисправно најдуже чекање: %s" -#: plugins/sudoers/sudoreplay.c:298 +#: plugins/sudoers/sudoreplay.c:291 #, c-format msgid "invalid speed factor: %s" msgstr "неисправан чинилац брзине: %s" -#: plugins/sudoers/sudoreplay.c:333 +#: plugins/sudoers/sudoreplay.c:326 #, c-format msgid "invalid time offset %s" msgstr "неисправан временски помак „%s“" -#: plugins/sudoers/sudoreplay.c:342 +#: plugins/sudoers/sudoreplay.c:335 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:347 +#: plugins/sudoers/sudoreplay.c:340 #, c-format msgid "%s/timing: %s" msgstr "%s/временисање: %s" -#: plugins/sudoers/sudoreplay.c:375 +#: plugins/sudoers/sudoreplay.c:368 #, c-format msgid "Replaying sudo session: %s" msgstr "Понављам сесију судоа: %s" -#: plugins/sudoers/sudoreplay.c:637 +#: plugins/sudoers/sudoreplay.c:634 msgid "unable to set tty to raw mode" msgstr "не могу да подесим конзолу на сирови режим" -#: plugins/sudoers/sudoreplay.c:688 +#: plugins/sudoers/sudoreplay.c:685 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "Упозорење: ваш терминал је премали да би исправно приказао дневник.\n" -#: plugins/sudoers/sudoreplay.c:689 +#: plugins/sudoers/sudoreplay.c:686 #, 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:717 +#: plugins/sudoers/sudoreplay.c:714 msgid "Replay finished, press any key to restore the terminal." msgstr "Одговор је завршен, притисните неки тастер да повратите терминал." -#: plugins/sudoers/sudoreplay.c:1219 plugins/sudoers/sudoreplay.c:1249 +#: plugins/sudoers/sudoreplay.c:1216 plugins/sudoers/sudoreplay.c:1246 #, c-format msgid "ambiguous expression \"%s\"" msgstr "нејасан израз „%s“" -#: plugins/sudoers/sudoreplay.c:1271 +#: plugins/sudoers/sudoreplay.c:1268 msgid "unmatched ')' in expression" msgstr "непоклопљена ) у изразу" -#: plugins/sudoers/sudoreplay.c:1275 +#: plugins/sudoers/sudoreplay.c:1272 #, c-format msgid "unknown search term \"%s\"" msgstr "непознат појам претраге „%s“" -#: plugins/sudoers/sudoreplay.c:1290 +#: plugins/sudoers/sudoreplay.c:1287 #, c-format msgid "%s requires an argument" msgstr "„%s“ захтева аргумент" -#: plugins/sudoers/sudoreplay.c:1300 +#: plugins/sudoers/sudoreplay.c:1297 #, c-format msgid "could not parse date \"%s\"" msgstr "не могу да обрадим датум „%s“" -#: plugins/sudoers/sudoreplay.c:1309 +#: plugins/sudoers/sudoreplay.c:1306 msgid "unmatched '(' in expression" msgstr "непоклопљена ( у изразу" -#: plugins/sudoers/sudoreplay.c:1311 +#: plugins/sudoers/sudoreplay.c:1308 msgid "illegal trailing \"or\"" msgstr "недозвољено пратеће „или“" -#: plugins/sudoers/sudoreplay.c:1313 +#: plugins/sudoers/sudoreplay.c:1310 msgid "illegal trailing \"!\"" msgstr "недозвољени пратећи „!“" -#: plugins/sudoers/sudoreplay.c:1371 +#: plugins/sudoers/sudoreplay.c:1416 #, c-format msgid "unknown search type %d" msgstr "непозната врста претраге „%d“" -#: plugins/sudoers/sudoreplay.c:1651 +#: plugins/sudoers/sudoreplay.c:1678 #, 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:1654 +#: plugins/sudoers/sudoreplay.c:1680 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "употреба: %s [-h] [-d дир] -l [израз претраге]\n" -#: plugins/sudoers/sudoreplay.c:1663 +#: plugins/sudoers/sudoreplay.c:1694 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -3427,7 +3515,7 @@ "%s — понавља дневнике сесије судоа\n" "\n" -#: plugins/sudoers/sudoreplay.c:1665 +#: plugins/sudoers/sudoreplay.c:1696 msgid "" "\n" "Options:\n" @@ -3483,127 +3571,122 @@ "\n" "Наредба није поклопљена" -#: plugins/sudoers/timestamp.c:260 -#, c-format -msgid "%s is group writable" -msgstr "Група може да пише у „%s“" - -#: plugins/sudoers/timestamp.c:328 plugins/sudoers/timestamp.c:663 +#: plugins/sudoers/timestamp.c:354 plugins/sudoers/timestamp.c:693 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "не могу да скратим датотеку временске ознаке на %lld бајта" -#: plugins/sudoers/timestamp.c:860 +#: plugins/sudoers/timestamp.c:890 msgid "ignoring time stamp from the future" msgstr "занемарујем временску ознаку из будућности" -#: plugins/sudoers/timestamp.c:883 +#: plugins/sudoers/timestamp.c:913 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "временска ознака је превише у будућности: %20.20s" -#: plugins/sudoers/timestamp.c:1005 +#: plugins/sudoers/timestamp.c:1042 #, c-format msgid "unable to lock time stamp file %s" msgstr "не могу да закључам датотеку временске ознаке „%s“" -#: plugins/sudoers/timestamp.c:1049 plugins/sudoers/timestamp.c:1069 -#, c-format -msgid "lecture status path too long: %s/%s" -msgstr "путања стања обучавања је предуга: %s/%s" - #: plugins/sudoers/toke_util.c:156 msgid "sudoedit should not be specified with a path" msgstr "„sudoedit“ не треба да се наводи са путањом" -#: plugins/sudoers/visudo.c:249 +#: plugins/sudoers/visudo.c:254 msgid "the -x option will be removed in a future release" msgstr "опција „-x“ биће уклоњена у наредном издању" -#: plugins/sudoers/visudo.c:251 +#: plugins/sudoers/visudo.c:256 msgid "please consider using the cvtsudoers utility instead" msgstr "размотрите коришћење помагала „cvtsudoers“" -#: plugins/sudoers/visudo.c:306 plugins/sudoers/visudo.c:692 +#: plugins/sudoers/visudo.c:311 plugins/sudoers/visudo.c:702 #, c-format msgid "press return to edit %s: " msgstr "притисните „унеси“ да уредите „%s“: " -#: plugins/sudoers/visudo.c:321 +#: plugins/sudoers/visudo.c:326 #, c-format msgid "contents of edit session left in %s" msgstr "садржај сесије уређивања је остао у „%s“" -#: plugins/sudoers/visudo.c:397 +#: plugins/sudoers/visudo.c:403 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "наведени уређивач (%s) не постоји" -#: plugins/sudoers/visudo.c:399 +#: plugins/sudoers/visudo.c:408 #, c-format msgid "no editor found (editor path = %s)" msgstr "нисам пронашао уређивача (путања уређивача = %s)" -#: plugins/sudoers/visudo.c:505 plugins/sudoers/visudo.c:513 +#: plugins/sudoers/visudo.c:495 plugins/sudoers/visudo.c:774 +#, c-format +msgid "unable to stat %s" +msgstr "не могу да добијем податке о „%s“" + +#: plugins/sudoers/visudo.c:515 plugins/sudoers/visudo.c:523 msgid "write error" msgstr "грешка писања" -#: plugins/sudoers/visudo.c:559 +#: plugins/sudoers/visudo.c:569 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "не могу да добавим податке привремене датотеке (%s), %s је неизмењено" -#: plugins/sudoers/visudo.c:566 +#: plugins/sudoers/visudo.c:576 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "привремена датотека нулте дужине (%s), %s је неизмењено" -#: plugins/sudoers/visudo.c:572 +#: plugins/sudoers/visudo.c:582 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "уређивач (%s) није успео, %s је неизмењено" -#: plugins/sudoers/visudo.c:594 +#: plugins/sudoers/visudo.c:604 #, c-format msgid "%s unchanged" msgstr "„%s“ је неизмењено" -#: plugins/sudoers/visudo.c:639 +#: plugins/sudoers/visudo.c:649 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "не могу поново да отворим привремену датотеку (%s), %s је неизмењено." -#: plugins/sudoers/visudo.c:652 +#: plugins/sudoers/visudo.c:662 #, c-format msgid "unable to parse temporary file (%s), unknown error" msgstr "не могу да обрадим привремену датотеку (%s), непозната грешка" -#: plugins/sudoers/visudo.c:738 plugins/sudoers/visudo.c:768 -#: plugins/sudoers/visudo.c:775 +#: plugins/sudoers/visudo.c:748 plugins/sudoers/visudo.c:778 +#: plugins/sudoers/visudo.c:785 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "не могу да подесим (јиб, гиб) за %s на (%u, %u)" -#: plugins/sudoers/visudo.c:803 +#: plugins/sudoers/visudo.c:813 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "„%s“ и „%s“ нису на истом систему датотека, користим „mv“ за преименовање" -#: plugins/sudoers/visudo.c:814 +#: plugins/sudoers/visudo.c:824 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "наредба није успела: „%s %s %s“, %s је неизмењено" -#: plugins/sudoers/visudo.c:821 +#: plugins/sudoers/visudo.c:831 #, c-format msgid "error renaming %s, %s unchanged" msgstr "грешка преименовања „%s“, %s је неизмењено" -#: plugins/sudoers/visudo.c:841 +#: plugins/sudoers/visudo.c:851 msgid "What now? " msgstr "Шта сада? " -#: plugins/sudoers/visudo.c:855 +#: plugins/sudoers/visudo.c:865 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -3615,41 +3698,41 @@ " x — излази без чувања измена у датотеци судоерса\n" " Q — прекида и чува измене у датотеци судоерса (ОПАСНО!)\n" -#: plugins/sudoers/visudo.c:901 +#: plugins/sudoers/visudo.c:911 #, c-format msgid "unable to run %s" msgstr "не могу да покренем %s" -#: plugins/sudoers/visudo.c:932 +#: plugins/sudoers/visudo.c:942 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s: погрешан власник (јиб, гиб) треба бити (%u, %u)\n" -#: plugins/sudoers/visudo.c:943 +#: plugins/sudoers/visudo.c:953 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s: лоша овлашћења, требају бити у режиму 0%o\n" -#: plugins/sudoers/visudo.c:991 plugins/sudoers/visudo.c:998 +#: plugins/sudoers/visudo.c:999 plugins/sudoers/visudo.c:1006 #, c-format msgid "%s: parsed OK\n" msgstr "%s: успешно је обрађено\n" -#: plugins/sudoers/visudo.c:1017 +#: plugins/sudoers/visudo.c:1025 #, c-format msgid "%s busy, try again later" msgstr "„%s“ је заузет, покушајте касније" -#: plugins/sudoers/visudo.c:1021 +#: plugins/sudoers/visudo.c:1029 msgid "Edit anyway? [y/N]" msgstr "Да ипак уреим? [д/Н]" -#: plugins/sudoers/visudo.c:1117 +#: plugins/sudoers/visudo.c:1130 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Упозорење: %s:%d:%d: некоришћено „%s“ „%s“" -#: plugins/sudoers/visudo.c:1229 +#: plugins/sudoers/visudo.c:1242 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3658,25 +3741,27 @@ "%s — безбедно уређује датотеку судоерса\n" "\n" -#: plugins/sudoers/visudo.c:1231 +#: plugins/sudoers/visudo.c:1244 msgid "" "\n" "Options:\n" " -c, --check check-only mode\n" " -f, --file=sudoers specify sudoers file location\n" " -h, --help display help message and exit\n" +" -I, --no-includes do not edit include files\n" " -q, --quiet less verbose (quiet) syntax error messages\n" " -s, --strict strict syntax checking\n" " -V, --version display version information and exit\n" msgstr "" "\n" "Опције:\n" -" -c, --check режим само провере\n" -" -f, --file=судоерс наводи место датотеке судоерса\n" -" -h, --help приказује поруку помоћи и излази\n" -" -q, --quiet мање опширне (тихе) поруке грешке синтаксе\n" -" -s, --strict строга провера синтаксе\n" -" -V, --version приказује податке о издању и излази\n" +" -c, --check режим само провере\n" +" -f, --file=судоерс наводи место датотеке судоерса\n" +" -h, --help приказује поруку помоћи и излази\n" +" -I, --no-includes не уређује датотеке укључења\n" +" -q, --quiet мање опширне (тихе) поруке грешке синтаксе\n" +" -s, --strict строга провера синтаксе\n" +" -V, --version приказује податке о издању и излази\n" #: toke.l:189 msgid "empty string" @@ -3702,14 +3787,26 @@ msgid "invalid IPv6 address" msgstr "неисправна ИПв6 адреса" -#: toke.l:868 +#: toke.l:876 msgid "unexpected line break in string" msgstr "неочекивани прекид реда у нисци" -#: toke.l:1218 +#: toke.l:1226 msgid "too many levels of includes" msgstr "превише нивоа укључивања" +#~ msgid "%s must be owned by uid %d" +#~ msgstr "„%s“ мора бити у власништву јиб-а %d" + +#~ msgid "%s must only be writable by owner" +#~ msgstr "Само корисник може да пише у „%s“" + +#~ msgid "%s is group writable" +#~ msgstr "Група може да пише у „%s“" + +#~ msgid "lecture status path too long: %s/%s" +#~ msgstr "путања стања обучавања је предуга: %s/%s" + #~ msgid "Error: %s:%d:%d: cycle in %s \"%s\"" #~ msgstr "Грешка: %s:%d:%d: циклус у „%s“ „%s“" diff -Nru sudo-1.9.13p3/plugins/sudoers/po/sudoers.pot sudo-1.9.14p2/plugins/sudoers/po/sudoers.pot --- sudo-1.9.13p3/plugins/sudoers/po/sudoers.pot 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/po/sudoers.pot 2023-07-15 15:37:21.000000000 +0000 @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.13\n" +"Project-Id-Version: sudo 1.9.14\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,7 +17,7 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: confstr.sh:1 gram.y:1220 plugins/sudoers/logging.c:866 +#: confstr.sh:1 gram.y:1240 plugins/sudoers/logging.c:885 msgid "syntax error" msgstr "" @@ -41,33 +41,33 @@ msgid "Sorry, try again." msgstr "" -#: gram.y:237 gram.y:304 gram.y:313 gram.y:322 gram.y:332 gram.y:342 gram.y:366 -#: gram.y:393 gram.y:402 gram.y:410 gram.y:419 gram.y:428 gram.y:502 gram.y:512 -#: gram.y:524 gram.y:572 gram.y:581 gram.y:590 gram.y:599 gram.y:731 gram.y:739 -#: gram.y:750 gram.y:762 gram.y:781 gram.y:944 gram.y:949 gram.y:957 gram.y:971 -#: gram.y:977 gram.y:1099 gram.y:1108 gram.y:1116 gram.y:1125 gram.y:1134 -#: gram.y:1163 gram.y:1172 gram.y:1180 gram.y:1280 gram.y:1410 gram.y:1777 -#: gram.y:1827 lib/eventlog/eventlog.c:235 lib/eventlog/eventlog.c:312 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:834 -#: lib/eventlog/eventlog.c:1135 lib/iolog/iolog_filter.c:142 +#: gram.y:236 gram.y:303 gram.y:312 gram.y:321 gram.y:331 gram.y:341 gram.y:365 +#: gram.y:392 gram.y:401 gram.y:409 gram.y:418 gram.y:427 gram.y:501 gram.y:511 +#: gram.y:523 gram.y:571 gram.y:580 gram.y:589 gram.y:598 gram.y:730 gram.y:738 +#: gram.y:749 gram.y:761 gram.y:780 gram.y:943 gram.y:948 gram.y:956 gram.y:970 +#: gram.y:976 gram.y:988 gram.y:994 gram.y:1119 gram.y:1128 gram.y:1136 +#: gram.y:1145 gram.y:1154 gram.y:1183 gram.y:1192 gram.y:1200 gram.y:1300 +#: gram.y:1430 gram.y:1808 gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:313 lib/eventlog/eventlog.c:755 +#: lib/eventlog/eventlog.c:832 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:472 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 #: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:233 -#: lib/iolog/iolog_json.c:150 lib/iolog/iolog_json.c:382 -#: lib/iolog/iolog_json.c:412 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:212 -#: logsrvd/iolog_writer.c:95 logsrvd/iolog_writer.c:100 -#: logsrvd/iolog_writer.c:134 logsrvd/iolog_writer.c:182 -#: logsrvd/iolog_writer.c:215 logsrvd/iolog_writer.c:225 -#: logsrvd/iolog_writer.c:254 logsrvd/iolog_writer.c:275 -#: logsrvd/iolog_writer.c:287 logsrvd/iolog_writer.c:297 -#: logsrvd/iolog_writer.c:307 logsrvd/iolog_writer.c:317 -#: logsrvd/iolog_writer.c:329 logsrvd/iolog_writer.c:364 -#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:377 -#: logsrvd/iolog_writer.c:383 logsrvd/iolog_writer.c:567 -#: logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 logsrvd/logsrvd.c:310 -#: logsrvd/logsrvd.c:1050 logsrvd/logsrvd.c:1113 logsrvd/logsrvd.c:1582 -#: logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 logsrvd/logsrvd.c:1988 +#: 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:212 logsrvd/iolog_writer.c:95 +#: logsrvd/iolog_writer.c:100 logsrvd/iolog_writer.c:134 +#: logsrvd/iolog_writer.c:182 logsrvd/iolog_writer.c:215 +#: logsrvd/iolog_writer.c:225 logsrvd/iolog_writer.c:254 +#: logsrvd/iolog_writer.c:275 logsrvd/iolog_writer.c:287 +#: logsrvd/iolog_writer.c:297 logsrvd/iolog_writer.c:307 +#: logsrvd/iolog_writer.c:317 logsrvd/iolog_writer.c:329 +#: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 +#: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:1058 logsrvd/logsrvd.c:1121 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 #: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 #: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 #: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 @@ -82,29 +82,31 @@ #: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1743 #: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:216 #: logsrvd/logsrvd_journal.c:217 logsrvd/logsrvd_journal.c:273 -#: logsrvd/logsrvd_journal.c:433 logsrvd/logsrvd_journal.c:435 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:216 -#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:279 -#: logsrvd/logsrvd_local.c:417 logsrvd/logsrvd_local.c:466 -#: logsrvd/logsrvd_local.c:467 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:473 logsrvd/logsrvd_queue.c:159 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/logsrvd_relay.c:444 logsrvd/logsrvd_relay.c:743 -#: logsrvd/logsrvd_relay.c:850 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 -#: logsrvd/sendlog.c:291 logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 -#: logsrvd/sendlog.c:1801 plugins/sudoers/audit.c:116 -#: plugins/sudoers/auth/bsdauth.c:150 plugins/sudoers/auth/kerb5.c:121 +#: logsrvd/logsrvd_journal.c:278 logsrvd/logsrvd_journal.c:438 +#: logsrvd/logsrvd_journal.c:440 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:216 logsrvd/logsrvd_local.c:278 +#: logsrvd/logsrvd_local.c:279 logsrvd/logsrvd_local.c:417 +#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:467 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:473 +#: logsrvd/logsrvd_queue.c:159 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/logsrvd_relay.c:446 +#: logsrvd/logsrvd_relay.c:745 logsrvd/logsrvd_relay.c:852 +#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:292 +#: logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 logsrvd/sendlog.c:624 +#: logsrvd/sendlog.c:1810 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/bsdauth.c:152 plugins/sudoers/auth/kerb5.c:121 #: plugins/sudoers/auth/kerb5.c:148 plugins/sudoers/auth/pam.c:687 #: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:175 plugins/sudoers/cvtsudoers.c:192 -#: plugins/sudoers/cvtsudoers.c:203 plugins/sudoers/cvtsudoers.c:333 -#: plugins/sudoers/cvtsudoers.c:372 plugins/sudoers/cvtsudoers.c:392 -#: plugins/sudoers/cvtsudoers.c:537 plugins/sudoers/cvtsudoers.c:670 -#: plugins/sudoers/cvtsudoers.c:688 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:870 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:246 +#: plugins/sudoers/canon_path.c:129 plugins/sudoers/canon_path.c:160 +#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:132 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:193 +#: plugins/sudoers/cvtsudoers.c:204 plugins/sudoers/cvtsudoers.c:334 +#: plugins/sudoers/cvtsudoers.c:373 plugins/sudoers/cvtsudoers.c:393 +#: plugins/sudoers/cvtsudoers.c:538 plugins/sudoers/cvtsudoers.c:691 +#: plugins/sudoers/cvtsudoers.c:709 plugins/sudoers/cvtsudoers.c:883 +#: plugins/sudoers/cvtsudoers.c:891 plugins/sudoers/cvtsudoers.c:1386 +#: plugins/sudoers/cvtsudoers.c:1390 plugins/sudoers/cvtsudoers.c:1492 +#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:247 #: 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:376 @@ -122,143 +124,152 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1158 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:212 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:689 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:691 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:294 plugins/sudoers/ldap_util.c:301 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:402 -#: plugins/sudoers/log_client.c:715 plugins/sudoers/log_client.c:736 -#: plugins/sudoers/log_client.c:1415 plugins/sudoers/log_client.c:1536 -#: plugins/sudoers/log_client.c:1636 plugins/sudoers/log_client.c:1972 -#: plugins/sudoers/log_client.c:2031 plugins/sudoers/logging.c:110 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/match_command.c:335 plugins/sudoers/match_command.c:603 -#: plugins/sudoers/match_command.c:654 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:776 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:267 plugins/sudoers/parse.c:284 -#: plugins/sudoers/parse.c:303 plugins/sudoers/parse.c:322 -#: plugins/sudoers/parse.c:339 plugins/sudoers/parse.c:362 -#: plugins/sudoers/parse.c:373 plugins/sudoers/parse_ldif.c:153 -#: plugins/sudoers/parse_ldif.c:184 plugins/sudoers/parse_ldif.c:253 -#: plugins/sudoers/parse_ldif.c:261 plugins/sudoers/parse_ldif.c:266 -#: plugins/sudoers/parse_ldif.c:342 plugins/sudoers/parse_ldif.c:353 -#: plugins/sudoers/parse_ldif.c:380 plugins/sudoers/parse_ldif.c:397 -#: plugins/sudoers/parse_ldif.c:409 plugins/sudoers/parse_ldif.c:413 -#: plugins/sudoers/parse_ldif.c:427 plugins/sudoers/parse_ldif.c:484 -#: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:628 -#: plugins/sudoers/parse_ldif.c:653 plugins/sudoers/parse_ldif.c:711 -#: plugins/sudoers/parse_ldif.c:728 plugins/sudoers/parse_ldif.c:756 -#: plugins/sudoers/parse_ldif.c:763 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 -#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 -#: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 -#: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 -#: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:185 -#: plugins/sudoers/sssd.c:414 plugins/sudoers/sssd.c:479 -#: plugins/sudoers/sssd.c:505 plugins/sudoers/sssd.c:568 -#: plugins/sudoers/sssd.c:761 plugins/sudoers/strvec_join.c:53 -#: plugins/sudoers/stubs.c:112 plugins/sudoers/stubs.c:120 -#: plugins/sudoers/sudoers.c:354 plugins/sudoers/sudoers.c:380 -#: plugins/sudoers/sudoers.c:447 plugins/sudoers/sudoers.c:464 -#: plugins/sudoers/sudoers.c:505 plugins/sudoers/sudoers.c:849 -#: plugins/sudoers/sudoers.c:902 plugins/sudoers/sudoers.c:1054 -#: plugins/sudoers/sudoers.c:1114 plugins/sudoers/sudoers.c:1369 +#: plugins/sudoers/log_client.c:717 plugins/sudoers/log_client.c:739 +#: plugins/sudoers/log_client.c:744 plugins/sudoers/log_client.c:1423 +#: plugins/sudoers/log_client.c:1544 plugins/sudoers/log_client.c:1667 +#: plugins/sudoers/log_client.c:1986 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:846 plugins/sudoers/match_command.c:295 +#: plugins/sudoers/match_command.c:563 plugins/sudoers/match_command.c:629 +#: plugins/sudoers/match_command.c:724 plugins/sudoers/match_command.c:770 +#: plugins/sudoers/match_digest.c:82 plugins/sudoers/parse.c:279 +#: plugins/sudoers/parse.c:296 plugins/sudoers/parse.c:315 +#: plugins/sudoers/parse.c:334 plugins/sudoers/parse.c:351 +#: plugins/sudoers/parse.c:374 plugins/sudoers/parse.c:385 +#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 +#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:261 +#: plugins/sudoers/parse_ldif.c:266 plugins/sudoers/parse_ldif.c:342 +#: plugins/sudoers/parse_ldif.c:353 plugins/sudoers/parse_ldif.c:380 +#: plugins/sudoers/parse_ldif.c:397 plugins/sudoers/parse_ldif.c:409 +#: plugins/sudoers/parse_ldif.c:413 plugins/sudoers/parse_ldif.c:427 +#: plugins/sudoers/parse_ldif.c:484 plugins/sudoers/parse_ldif.c:598 +#: plugins/sudoers/parse_ldif.c:628 plugins/sudoers/parse_ldif.c:653 +#: plugins/sudoers/parse_ldif.c:711 plugins/sudoers/parse_ldif.c:728 +#: plugins/sudoers/parse_ldif.c:756 plugins/sudoers/parse_ldif.c:763 +#: plugins/sudoers/policy.c:622 plugins/sudoers/policy.c:1050 +#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:199 +#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 +#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:587 +#: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:857 +#: plugins/sudoers/pwutil.c:945 plugins/sudoers/pwutil.c:993 +#: plugins/sudoers/pwutil.c:1052 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 +#: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1325 plugins/sudoers/sudoers.c:1513 #: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 #: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 #: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 -#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 -#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:588 -#: plugins/sudoers/timestamp.c:451 plugins/sudoers/timestamp.c:495 -#: plugins/sudoers/timestamp.c:1017 plugins/sudoers/timestamp.c:1146 -#: plugins/sudoers/toke_util.c:78 plugins/sudoers/toke_util.c:106 -#: plugins/sudoers/toke_util.c:131 plugins/sudoers/toke_util.c:161 -#: plugins/sudoers/toke_util.c:200 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:150 plugins/sudoers/visudo.c:385 -#: plugins/sudoers/visudo.c:391 plugins/sudoers/visudo.c:502 -#: plugins/sudoers/visudo.c:1056 toke.l:1031 toke.l:1163 toke.l:1234 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 +#: plugins/sudoers/toke_util.c:161 plugins/sudoers/toke_util.c:200 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1087 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1299 msgid "unable to allocate memory" msgstr "" -#: gram.y:623 +#: gram.y:622 msgid "a digest requires a path name" msgstr "" -#: gram.y:645 +#: gram.y:644 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "" -#: gram.y:651 +#: gram.y:650 msgid "\"CWD\" path too long" msgstr "" -#: gram.y:661 +#: gram.y:660 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "" -#: gram.y:667 +#: gram.y:666 msgid "\"CHROOT\" path too long" msgstr "" -#: gram.y:802 +#: gram.y:801 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "" -#: gram.y:825 +#: gram.y:824 msgid "invalid notbefore value" msgstr "" -#: gram.y:834 +#: gram.y:833 msgid "invalid notafter value" msgstr "" -#: gram.y:844 plugins/sudoers/policy.c:385 +#: gram.y:843 plugins/sudoers/policy.c:381 msgid "timeout value too large" msgstr "" -#: gram.y:846 plugins/sudoers/policy.c:387 +#: gram.y:845 plugins/sudoers/policy.c:383 msgid "invalid timeout value" msgstr "" -#: gram.y:967 plugins/sudoers/sudoers.c:1072 +#: gram.y:966 plugins/sudoers/sudoers.c:1192 msgid "command too long" msgstr "" -#: gram.y:1224 plugins/sudoers/check_aliases.c:96 -#: plugins/sudoers/defaults.c:1276 +#: gram.y:1000 +msgid "expected a fully-qualified path name" +msgstr "" + +#: gram.y:1244 plugins/sudoers/check_aliases.c:96 +#: plugins/sudoers/defaults.c:1275 #, c-format msgid "%s:%d:%d: %s\n" msgstr "" -#: gram.y:1278 +#: gram.y:1298 #, c-format msgid "Alias \"%s\" already defined" msgstr "" -#: gram.y:1777 gram.y:1827 lib/eventlog/eventlog.c:235 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:830 -#: lib/eventlog/eventlog.c:833 lib/eventlog/eventlog.c:1135 -#: lib/iolog/iolog_filter.c:142 lib/iolog/iolog_filter.c:202 -#: lib/iolog/iolog_filter.c:232 lib/iolog/iolog_json.c:150 -#: lib/iolog/iolog_json.c:381 lib/iolog/iolog_json.c:412 +#: gram.y:1808 gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:755 lib/eventlog/eventlog.c:828 +#: lib/eventlog/eventlog.c:831 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:471 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 +#: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:232 #: 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 @@ -273,13 +284,13 @@ #: logsrvd/iolog_writer.c:316 logsrvd/iolog_writer.c:328 #: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 #: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 -#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 -#: logsrvd/logsrvd.c:310 logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:490 -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:611 -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:732 -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1439 logsrvd/logsrvd.c:1446 -#: logsrvd/logsrvd.c:1582 logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 -#: logsrvd/logsrvd.c:1988 logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:530 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:668 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:1132 +#: logsrvd/logsrvd.c:1447 logsrvd/logsrvd.c:1454 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 +#: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 #: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 #: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 #: logsrvd/logsrvd_conf.c:626 logsrvd/logsrvd_conf.c:649 @@ -294,26 +305,27 @@ #: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:125 #: logsrvd/logsrvd_journal.c:216 logsrvd/logsrvd_journal.c:246 #: logsrvd/logsrvd_journal.c:250 logsrvd/logsrvd_journal.c:258 -#: logsrvd/logsrvd_journal.c:281 logsrvd/logsrvd_journal.c:285 -#: logsrvd/logsrvd_journal.c:433 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:290 +#: logsrvd/logsrvd_journal.c:438 logsrvd/logsrvd_local.c:215 #: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:466 #: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:491 #: logsrvd/logsrvd_queue.c:158 logsrvd/logsrvd_queue.c:189 #: logsrvd/logsrvd_queue.c:266 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 -#: logsrvd/sendlog.c:291 logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 -#: logsrvd/sendlog.c:1503 logsrvd/sendlog.c:1510 logsrvd/sendlog.c:1733 -#: logsrvd/sendlog.c:1801 logsrvd/tls_init.c:305 logsrvd/tls_init.c:329 -#: logsrvd/tls_init.c:340 plugins/sudoers/audit.c:116 +#: logsrvd/sendlog.c:292 logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 +#: logsrvd/sendlog.c:624 logsrvd/sendlog.c:1512 logsrvd/sendlog.c:1519 +#: logsrvd/sendlog.c:1742 logsrvd/sendlog.c:1810 logsrvd/tls_init.c:305 +#: logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 plugins/sudoers/audit.c:116 #: plugins/sudoers/auth/pam.c:502 plugins/sudoers/auth/pam.c:687 -#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/check_aliases.c:168 -#: plugins/sudoers/cvtsudoers.c:131 plugins/sudoers/cvtsudoers.c:174 -#: plugins/sudoers/cvtsudoers.c:191 plugins/sudoers/cvtsudoers.c:202 -#: plugins/sudoers/cvtsudoers.c:332 plugins/sudoers/cvtsudoers.c:536 -#: plugins/sudoers/cvtsudoers.c:669 plugins/sudoers/cvtsudoers.c:687 -#: plugins/sudoers/cvtsudoers.c:862 plugins/sudoers/cvtsudoers.c:869 -#: plugins/sudoers/cvtsudoers.c:1365 plugins/sudoers/cvtsudoers.c:1369 -#: plugins/sudoers/cvtsudoers.c:1471 plugins/sudoers/cvtsudoers_csv.c:182 -#: plugins/sudoers/cvtsudoers_csv.c:245 plugins/sudoers/cvtsudoers_json.c:75 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/canon_path.c:129 +#: plugins/sudoers/canon_path.c:160 plugins/sudoers/check_aliases.c:168 +#: plugins/sudoers/cvtsudoers.c:132 plugins/sudoers/cvtsudoers.c:175 +#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:203 +#: plugins/sudoers/cvtsudoers.c:333 plugins/sudoers/cvtsudoers.c:537 +#: plugins/sudoers/cvtsudoers.c:690 plugins/sudoers/cvtsudoers.c:708 +#: plugins/sudoers/cvtsudoers.c:883 plugins/sudoers/cvtsudoers.c:890 +#: plugins/sudoers/cvtsudoers.c:1386 plugins/sudoers/cvtsudoers.c:1390 +#: plugins/sudoers/cvtsudoers.c:1492 plugins/sudoers/cvtsudoers_csv.c:182 +#: plugins/sudoers/cvtsudoers_csv.c:246 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:375 plugins/sudoers/cvtsudoers_ldif.c:429 @@ -332,42 +344,43 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1157 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:211 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:688 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:690 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:293 plugins/sudoers/ldap_util.c:300 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:228 #: plugins/sudoers/log_client.c:250 plugins/sudoers/log_client.c:264 -#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:715 -#: plugins/sudoers/log_client.c:736 plugins/sudoers/log_client.c:1415 -#: plugins/sudoers/log_client.c:1536 plugins/sudoers/log_client.c:1636 -#: plugins/sudoers/log_client.c:1972 plugins/sudoers/log_client.c:2031 -#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:188 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/logging.c:880 plugins/sudoers/logging.c:892 -#: plugins/sudoers/match_command.c:334 plugins/sudoers/match_command.c:602 -#: plugins/sudoers/match_command.c:653 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:775 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:266 plugins/sudoers/parse.c:283 -#: plugins/sudoers/parse.c:302 plugins/sudoers/parse.c:321 -#: plugins/sudoers/parse.c:338 plugins/sudoers/parse.c:361 -#: plugins/sudoers/parse.c:372 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:717 +#: plugins/sudoers/log_client.c:739 plugins/sudoers/log_client.c:744 +#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1544 +#: plugins/sudoers/log_client.c:1667 plugins/sudoers/log_client.c:1986 +#: plugins/sudoers/log_client.c:2045 plugins/sudoers/logging.c:110 +#: plugins/sudoers/logging.c:188 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:734 plugins/sudoers/logging.c:846 +#: plugins/sudoers/logging.c:899 plugins/sudoers/logging.c:906 +#: plugins/sudoers/match_command.c:294 plugins/sudoers/match_command.c:562 +#: plugins/sudoers/match_command.c:628 plugins/sudoers/match_command.c:724 +#: plugins/sudoers/match_command.c:769 plugins/sudoers/match_digest.c:82 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:295 +#: plugins/sudoers/parse.c:314 plugins/sudoers/parse.c:333 +#: plugins/sudoers/parse.c:350 plugins/sudoers/parse.c:373 +#: plugins/sudoers/parse.c:384 plugins/sudoers/parse_ldif.c:152 #: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 #: plugins/sudoers/parse_ldif.c:260 plugins/sudoers/parse_ldif.c:265 #: plugins/sudoers/parse_ldif.c:341 plugins/sudoers/parse_ldif.c:352 @@ -377,56 +390,60 @@ #: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:627 #: plugins/sudoers/parse_ldif.c:652 plugins/sudoers/parse_ldif.c:710 #: plugins/sudoers/parse_ldif.c:727 plugins/sudoers/parse_ldif.c:755 -#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:154 -#: plugins/sudoers/policy.c:163 plugins/sudoers/policy.c:172 -#: plugins/sudoers/policy.c:201 plugins/sudoers/policy.c:370 -#: plugins/sudoers/policy.c:385 plugins/sudoers/policy.c:387 -#: plugins/sudoers/policy.c:425 plugins/sudoers/policy.c:434 -#: plugins/sudoers/policy.c:482 plugins/sudoers/policy.c:492 -#: plugins/sudoers/policy.c:501 plugins/sudoers/policy.c:510 -#: plugins/sudoers/policy.c:519 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:166 +#: plugins/sudoers/policy.c:196 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:381 plugins/sudoers/policy.c:383 +#: plugins/sudoers/policy.c:421 plugins/sudoers/policy.c:430 +#: plugins/sudoers/policy.c:478 plugins/sudoers/policy.c:488 +#: plugins/sudoers/policy.c:497 plugins/sudoers/policy.c:506 +#: plugins/sudoers/policy.c:515 plugins/sudoers/policy.c:622 +#: plugins/sudoers/policy.c:1050 plugins/sudoers/prompt.c:93 #: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 #: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 #: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 #: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 #: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 plugins/sudoers/sssd.c:144 #: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 #: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 -#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:761 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:112 -#: plugins/sudoers/stubs.c:120 plugins/sudoers/sudoers.c:354 -#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:447 -#: plugins/sudoers/sudoers.c:464 plugins/sudoers/sudoers.c:505 -#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:902 -#: plugins/sudoers/sudoers.c:1054 plugins/sudoers/sudoers.c:1114 -#: plugins/sudoers/sudoers.c:1369 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:562 plugins/sudoers/sudoreplay.c:1278 -#: plugins/sudoers/sudoreplay.c:1334 plugins/sudoers/sudoreplay.c:1530 -#: plugins/sudoers/sudoreplay.c:1534 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:588 plugins/sudoers/timestamp.c:451 -#: plugins/sudoers/timestamp.c:495 plugins/sudoers/timestamp.c:1017 -#: plugins/sudoers/timestamp.c:1146 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1324 plugins/sudoers/sudoers.c:1513 +#: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 +#: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 #: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 #: plugins/sudoers/toke_util.c:160 plugins/sudoers/toke_util.c:200 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:150 -#: plugins/sudoers/visudo.c:385 plugins/sudoers/visudo.c:391 -#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:1056 toke.l:1031 -#: toke.l:1163 toke.l:1226 toke.l:1234 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1086 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1288 toke.l:1299 #, c-format msgid "%s: %s" msgstr "" -#: lib/eventlog/eventlog.c:303 +#: lib/eventlog/eventlog.c:304 #, c-format msgid "unable to dup stdin: %m" msgstr "" -#: lib/eventlog/eventlog.c:345 +#: lib/eventlog/eventlog.c:346 #, c-format msgid "unable to execute %s: %m" msgstr "" @@ -445,96 +462,96 @@ msgid "unable to open pipe: %m" msgstr "" -#: lib/eventlog/eventlog.c:960 +#: lib/eventlog/eventlog.c:958 #, c-format msgid "%8s : %s" msgstr "" -#: lib/eventlog/eventlog.c:989 +#: lib/eventlog/eventlog.c:987 #, c-format msgid "%8s : (command continued) %s" msgstr "" -#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1242 -#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 -#, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "" - -#: lib/iolog/iolog_json.c:140 +#: lib/eventlog/parse_json.c:175 #, c-format msgid "expected JSON_STRING, got %d" msgstr "" -#: lib/iolog/iolog_json.c:145 +#: lib/eventlog/parse_json.c:180 msgid "JSON_ARRAY too large" msgstr "" -#: lib/iolog/iolog_json.c:404 +#: lib/eventlog/parse_json.c:494 msgid "missing double quote in name" msgstr "" -#: lib/iolog/iolog_json.c:511 +#: lib/eventlog/parse_json.c:612 msgid "missing JSON_OBJECT" msgstr "" -#: lib/iolog/iolog_json.c:515 +#: lib/eventlog/parse_json.c:616 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "" -#: lib/iolog/iolog_json.c:632 +#: lib/eventlog/parse_json.c:750 #, c-format msgid "json stack exhausted (max %u frames)" msgstr "" -#: lib/iolog/iolog_json.c:706 +#: lib/eventlog/parse_json.c:828 msgid "objects must consist of name:value pairs" msgstr "" -#: lib/iolog/iolog_json.c:711 lib/iolog/iolog_json.c:742 -#: lib/iolog/iolog_json.c:786 lib/iolog/iolog_json.c:808 -#: lib/iolog/iolog_json.c:830 lib/iolog/iolog_json.c:852 -#: lib/iolog/iolog_json.c:874 +#: lib/eventlog/parse_json.c:833 lib/eventlog/parse_json.c:864 +#: lib/eventlog/parse_json.c:908 lib/eventlog/parse_json.c:930 +#: lib/eventlog/parse_json.c:952 lib/eventlog/parse_json.c:974 +#: lib/eventlog/parse_json.c:996 msgid "missing separator between values" msgstr "" -#: lib/iolog/iolog_json.c:726 lib/iolog/iolog_json.c:900 +#: lib/eventlog/parse_json.c:848 lib/eventlog/parse_json.c:1022 msgid "unmatched close brace" msgstr "" -#: lib/iolog/iolog_json.c:737 +#: lib/eventlog/parse_json.c:859 msgid "unexpected array" msgstr "" -#: lib/iolog/iolog_json.c:757 lib/iolog/iolog_json.c:903 +#: lib/eventlog/parse_json.c:879 lib/eventlog/parse_json.c:1025 msgid "unmatched close bracket" msgstr "" -#: lib/iolog/iolog_json.c:768 +#: lib/eventlog/parse_json.c:890 msgid "unexpected string" msgstr "" -#: lib/iolog/iolog_json.c:779 +#: lib/eventlog/parse_json.c:901 msgid "missing colon after name" msgstr "" -#: lib/iolog/iolog_json.c:800 lib/iolog/iolog_json.c:822 +#: lib/eventlog/parse_json.c:922 lib/eventlog/parse_json.c:944 msgid "unexpected boolean" msgstr "" -#: lib/iolog/iolog_json.c:844 +#: lib/eventlog/parse_json.c:966 msgid "unexpected null" msgstr "" -#: lib/iolog/iolog_json.c:865 +#: lib/eventlog/parse_json.c:987 msgid "unexpected number" msgstr "" -#: lib/iolog/iolog_json.c:912 +#: lib/eventlog/parse_json.c:1033 msgid "parse error" msgstr "" +#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1241 +#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "" + #: lib/iolog/iolog_legacy.c:65 #, c-format msgid "%s: invalid log file" @@ -571,13 +588,13 @@ msgstr "" #: lib/iolog/iolog_mkdirs.c:123 lib/iolog/iolog_mkdtemp.c:79 -#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:209 +#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:234 #, c-format msgid "unable to mkdir %s" msgstr "" -#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:757 -#: plugins/sudoers/visudo.c:791 plugins/sudoers/visudo.c:797 +#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:760 +#: plugins/sudoers/visudo.c:794 plugins/sudoers/visudo.c:800 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "" @@ -609,8 +626,8 @@ msgid "%s: protocol error: NULL value found in %s" msgstr "" -#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:980 -#: plugins/sudoers/policy.c:593 +#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:993 +#: plugins/sudoers/policy.c:589 msgid "unable to generate UUID" msgstr "" @@ -662,26 +679,26 @@ msgid "invalid I/O log %s: %s referenced but not present" msgstr "" -#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:385 +#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:390 #, c-format msgid "%s: unable to find resume point [%lld, %ld]" msgstr "" -#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:428 +#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:433 #: logsrvd/logsrvd_queue.c:115 logsrvd/tls_init.c:256 -#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:730 -#: plugins/sudoers/cvtsudoers.c:751 plugins/sudoers/cvtsudoers.c:1431 -#: plugins/sudoers/cvtsudoers_csv.c:695 plugins/sudoers/cvtsudoers_json.c:898 -#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1152 -#: plugins/sudoers/sudoers.c:1182 plugins/sudoers/sudoreplay.c:1496 -#: plugins/sudoers/timestamp.c:460 plugins/sudoers/tsdump.c:128 -#: plugins/sudoers/visudo.c:975 +#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:751 +#: plugins/sudoers/cvtsudoers.c:772 plugins/sudoers/cvtsudoers.c:1452 +#: plugins/sudoers/cvtsudoers_csv.c:697 plugins/sudoers/cvtsudoers_json.c:902 +#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1310 +#: plugins/sudoers/sudoers.c:1334 plugins/sudoers/sudoreplay.c:1496 +#: plugins/sudoers/timestamp.c:485 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:982 #, c-format msgid "unable to open %s" msgstr "" -#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:105 -#: logsrvd/logsrv_util.c:112 plugins/sudoers/sudoreplay.c:355 +#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:111 +#: logsrvd/logsrv_util.c:118 plugins/sudoers/sudoreplay.c:355 #: plugins/sudoers/sudoreplay.c:361 #, c-format msgid "unable to open %s/%s" @@ -697,17 +714,17 @@ msgid "unable to rename %s to %s" msgstr "" -#: logsrvd/logsrv_util.c:147 logsrvd/logsrv_util.c:176 +#: logsrvd/logsrv_util.c:153 logsrvd/logsrv_util.c:182 #, c-format msgid "%s/%s: unable to find resume point [%lld, %ld]" msgstr "" -#: logsrvd/logsrv_util.c:159 +#: logsrvd/logsrv_util.c:165 #, c-format msgid "missing I/O log file %s/%s" msgstr "" -#: logsrvd/logsrv_util.c:166 +#: logsrvd/logsrv_util.c:172 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "" @@ -716,31 +733,31 @@ msgid "unable to connect to relay" msgstr "" -#: logsrvd/logsrvd.c:330 logsrvd/logsrvd_relay.c:842 +#: logsrvd/logsrvd.c:338 logsrvd/logsrvd_relay.c:844 #, c-format msgid "server message too large: %zu" msgstr "" -#: logsrvd/logsrvd.c:422 logsrvd/logsrvd.c:545 logsrvd/logsrvd.c:631 -#: logsrvd/logsrvd.c:873 logsrvd/logsrvd.c:887 logsrvd/logsrvd.c:1049 -#: logsrvd/logsrvd.c:1174 logsrvd/logsrvd.c:1347 logsrvd/logsrvd.c:1365 -#: logsrvd/logsrvd.c:1464 logsrvd/logsrvd.c:1589 logsrvd/logsrvd.c:1773 -#: logsrvd/logsrvd_journal.c:497 logsrvd/logsrvd_local.c:238 +#: logsrvd/logsrvd.c:430 logsrvd/logsrvd.c:553 logsrvd/logsrvd.c:639 +#: logsrvd/logsrvd.c:881 logsrvd/logsrvd.c:895 logsrvd/logsrvd.c:1057 +#: logsrvd/logsrvd.c:1182 logsrvd/logsrvd.c:1355 logsrvd/logsrvd.c:1373 +#: logsrvd/logsrvd.c:1472 logsrvd/logsrvd.c:1597 logsrvd/logsrvd.c:1784 +#: logsrvd/logsrvd_journal.c:502 logsrvd/logsrvd_local.c:238 #: logsrvd/logsrvd_queue.c:164 logsrvd/logsrvd_relay.c:172 #: logsrvd/logsrvd_relay.c:249 logsrvd/logsrvd_relay.c:253 -#: logsrvd/logsrvd_relay.c:389 logsrvd/logsrvd_relay.c:581 -#: logsrvd/logsrvd_relay.c:742 logsrvd/logsrvd_relay.c:1131 -#: logsrvd/sendlog.c:1291 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 -#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:278 -#: plugins/sudoers/iolog.c:1031 plugins/sudoers/iolog.c:1164 -#: plugins/sudoers/iolog.c:1262 plugins/sudoers/log_client.c:121 +#: logsrvd/logsrvd_relay.c:391 logsrvd/logsrvd_relay.c:583 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:1133 +#: logsrvd/sendlog.c:1300 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:277 +#: plugins/sudoers/iolog.c:1030 plugins/sudoers/iolog.c:1163 +#: plugins/sudoers/iolog.c:1261 plugins/sudoers/log_client.c:121 #: plugins/sudoers/log_client.c:343 plugins/sudoers/log_client.c:359 -#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:611 -#: plugins/sudoers/log_client.c:618 plugins/sudoers/log_client.c:1103 -#: plugins/sudoers/log_client.c:1384 plugins/sudoers/log_client.c:1425 -#: plugins/sudoers/log_client.c:1433 plugins/sudoers/log_client.c:1592 -#: plugins/sudoers/log_client.c:1710 plugins/sudoers/log_client.c:2039 -#: plugins/sudoers/log_client.c:2047 plugins/sudoers/logging.c:147 +#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:613 +#: plugins/sudoers/log_client.c:620 plugins/sudoers/log_client.c:1111 +#: plugins/sudoers/log_client.c:1392 plugins/sudoers/log_client.c:1433 +#: plugins/sudoers/log_client.c:1441 plugins/sudoers/log_client.c:1600 +#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:2053 +#: plugins/sudoers/log_client.c:2061 plugins/sudoers/logging.c:147 #: plugins/sudoers/logging.c:205 plugins/sudoers/sudoreplay.c:519 #: plugins/sudoers/sudoreplay.c:566 plugins/sudoers/sudoreplay.c:808 #: plugins/sudoers/sudoreplay.c:920 plugins/sudoers/sudoreplay.c:1011 @@ -750,189 +767,190 @@ msgid "unable to add event to queue" msgstr "" -#: logsrvd/logsrvd.c:446 logsrvd/logsrvd.c:483 logsrvd/logsrvd.c:515 -#: logsrvd/logsrvd.c:569 logsrvd/logsrvd.c:648 logsrvd/logsrvd.c:684 -#: logsrvd/logsrvd.c:720 logsrvd/logsrvd.c:756 logsrvd/logsrvd_relay.c:510 -#: logsrvd/logsrvd_relay.c:543 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:577 logsrvd/logsrvd.c:656 logsrvd/logsrvd.c:692 +#: logsrvd/logsrvd.c:728 logsrvd/logsrvd.c:764 logsrvd/logsrvd_relay.c:512 +#: logsrvd/logsrvd_relay.c:545 #, c-format msgid "unexpected state %d for %s" msgstr "" -#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 -#: logsrvd/logsrvd.c:570 logsrvd/logsrvd.c:649 logsrvd/logsrvd.c:685 -#: logsrvd/logsrvd.c:721 logsrvd/logsrvd.c:757 logsrvd/logsrvd_relay.c:512 -#: logsrvd/logsrvd_relay.c:545 +#: logsrvd/logsrvd.c:455 logsrvd/logsrvd.c:492 logsrvd/logsrvd.c:524 +#: logsrvd/logsrvd.c:578 logsrvd/logsrvd.c:657 logsrvd/logsrvd.c:693 +#: logsrvd/logsrvd.c:729 logsrvd/logsrvd.c:765 logsrvd/logsrvd_relay.c:514 +#: logsrvd/logsrvd_relay.c:547 msgid "state machine error" msgstr "" -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:454 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:462 msgid "invalid AcceptMessage" msgstr "" -#: logsrvd/logsrvd.c:490 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:499 msgid "invalid RejectMessage" msgstr "" -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:530 logsrvd/logsrvd.c:531 msgid "invalid ExitMessage" msgstr "" -#: logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:577 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:585 msgid "invalid RestartMessage" msgstr "" -#: logsrvd/logsrvd.c:611 logsrvd/logsrvd.c:612 +#: logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:620 msgid "invalid AlertMessage" msgstr "" -#: logsrvd/logsrvd.c:653 logsrvd/logsrvd.c:689 logsrvd/logsrvd.c:725 +#: logsrvd/logsrvd.c:661 logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:733 #, c-format msgid "%s: unexpected IoBuffer" msgstr "" -#: logsrvd/logsrvd.c:654 logsrvd/logsrvd.c:690 logsrvd/logsrvd.c:726 +#: logsrvd/logsrvd.c:662 logsrvd/logsrvd.c:698 logsrvd/logsrvd.c:734 msgid "protocol error" msgstr "" -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:661 +#: logsrvd/logsrvd.c:668 logsrvd/logsrvd.c:669 msgid "invalid IoBuffer" msgstr "" -#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:697 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:705 msgid "invalid ChangeWindowSize" msgstr "" -#: logsrvd/logsrvd.c:732 logsrvd/logsrvd.c:733 +#: logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:741 msgid "invalid CommandSuspend" msgstr "" -#: logsrvd/logsrvd.c:782 logsrvd/logsrvd_journal.c:296 -#: logsrvd/logsrvd_relay.c:652 logsrvd/sendlog.c:1192 -#: plugins/sudoers/log_client.c:1582 +#: logsrvd/logsrvd.c:790 logsrvd/logsrvd_journal.c:301 +#: logsrvd/logsrvd_relay.c:654 logsrvd/sendlog.c:1201 +#: plugins/sudoers/log_client.c:1590 #, c-format msgid "unable to unpack %s size %zu" msgstr "" -#: logsrvd/logsrvd.c:827 logsrvd/logsrvd_journal.c:370 -#: logsrvd/logsrvd_relay.c:676 +#: logsrvd/logsrvd.c:835 logsrvd/logsrvd_journal.c:375 +#: logsrvd/logsrvd_relay.c:678 #, c-format msgid "unexpected type_case value %d in %s from %s" msgstr "" -#: logsrvd/logsrvd.c:829 +#: logsrvd/logsrvd.c:837 msgid "unrecognized ClientMessage type" msgstr "" -#: logsrvd/logsrvd.c:919 +#: logsrvd/logsrvd.c:927 #, c-format msgid "timed out writing to client %s" msgstr "" -#: logsrvd/logsrvd.c:924 logsrvd/logsrvd_relay.c:914 logsrvd/sendlog.c:1395 +#: logsrvd/logsrvd.c:932 logsrvd/logsrvd_relay.c:916 logsrvd/sendlog.c:1404 #, c-format msgid "missing write buffer for client %s" msgstr "" -#: logsrvd/logsrvd.c:1020 +#: logsrvd/logsrvd.c:1028 #, c-format msgid "timed out reading from client %s" msgstr "" -#: logsrvd/logsrvd.c:1061 logsrvd/logsrvd_relay.c:777 +#: logsrvd/logsrvd.c:1069 logsrvd/logsrvd_relay.c:779 #, c-format msgid "EOF from %s without proper TLS shutdown" msgstr "" -#: logsrvd/logsrvd.c:1105 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:322 -#: plugins/sudoers/log_client.c:721 +#: logsrvd/logsrvd.c:1113 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:331 +#: plugins/sudoers/log_client.c:723 #, c-format msgid "client message too large: %zu" msgstr "" -#: logsrvd/logsrvd.c:1106 logsrvd/logsrvd_journal.c:259 +#: logsrvd/logsrvd.c:1114 logsrvd/logsrvd_journal.c:259 #: logsrvd/logsrvd_journal.c:260 msgid "client message too large" msgstr "" -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1125 +#: logsrvd/logsrvd.c:1132 logsrvd/logsrvd.c:1133 msgid "invalid ClientMessage" msgstr "" -#: logsrvd/logsrvd.c:1425 +#: logsrvd/logsrvd.c:1433 msgid "unable to get remote IP addr" msgstr "" -#: logsrvd/logsrvd.c:1456 logsrvd/tls_client.c:203 +#: logsrvd/logsrvd.c:1464 logsrvd/tls_client.c:203 #: plugins/sudoers/log_client.c:281 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "" -#: logsrvd/logsrvd.c:1639 logsrvd/logsrvd.c:1992 +#: logsrvd/logsrvd.c:1647 logsrvd/logsrvd.c:2003 msgid "unable to setup listen socket" msgstr "" -#: logsrvd/logsrvd.c:1756 +#: logsrvd/logsrvd.c:1767 #, c-format msgid "unexpected signal %d" msgstr "" -#: logsrvd/logsrvd.c:1894 +#: logsrvd/logsrvd.c:1905 msgid "sudo log server" msgstr "" -#: logsrvd/logsrvd.c:1896 logsrvd/sendlog.c:121 +#: logsrvd/logsrvd.c:1907 logsrvd/sendlog.c:121 msgid "Options:" msgstr "" -#: logsrvd/logsrvd.c:1898 +#: logsrvd/logsrvd.c:1909 msgid "path to configuration file" msgstr "" -#: logsrvd/logsrvd.c:1900 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1911 logsrvd/sendlog.c:123 msgid "display help message and exit" msgstr "" -#: logsrvd/logsrvd.c:1902 +#: logsrvd/logsrvd.c:1913 msgid "do not fork, run in the foreground" msgstr "" -#: logsrvd/logsrvd.c:1904 +#: logsrvd/logsrvd.c:1915 msgid "percent chance connections will drop" msgstr "" -#: logsrvd/logsrvd.c:1906 logsrvd/sendlog.c:153 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:153 msgid "display version information and exit" msgstr "" -#: logsrvd/logsrvd.c:1956 logsrvd/sendlog.c:1702 +#: logsrvd/logsrvd.c:1967 logsrvd/sendlog.c:1711 msgid "Protobuf-C version 1.3 or higher required" msgstr "" -#: logsrvd/logsrvd.c:1972 +#: logsrvd/logsrvd.c:1983 #, c-format msgid "invalid random drop value: %s" msgstr "" -#: logsrvd/logsrvd.c:1975 logsrvd/sendlog.c:1756 -#: plugins/sudoers/cvtsudoers.c:246 plugins/sudoers/sudoreplay.c:294 -#: plugins/sudoers/visudo.c:182 +#: logsrvd/logsrvd.c:1986 logsrvd/sendlog.c:1765 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/sudoreplay.c:294 +#: plugins/sudoers/visudo.c:186 #, c-format msgid "%s version %s\n" msgstr "" #: logsrvd/logsrvd_conf.c:422 plugins/sudoers/check.c:358 #: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:122 -#: plugins/sudoers/policy.c:1271 plugins/sudoers/sudoers.c:512 -#: plugins/sudoers/sudoers.c:1411 plugins/sudoers/testsudoers.c:215 -#: plugins/sudoers/testsudoers.c:382 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:939 +#: plugins/sudoers/sudoers.c:1041 plugins/sudoers/sudoers.c:1062 +#: plugins/sudoers/sudoers.c:1555 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:393 #, c-format msgid "unknown user %s" msgstr "" #: logsrvd/logsrvd_conf.c:439 plugins/sudoers/iolog.c:148 -#: plugins/sudoers/sudoers.c:517 plugins/sudoers/sudoers.c:1445 -#: plugins/sudoers/testsudoers.c:406 +#: plugins/sudoers/sudoers.c:453 plugins/sudoers/sudoers.c:1589 +#: plugins/sudoers/testsudoers.c:417 #, c-format msgid "unknown group %s" msgstr "" @@ -1004,8 +1022,8 @@ msgid "%s:%d [%s] illegal key: %s" msgstr "" -#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:268 -#: plugins/sudoers/logging.c:1033 +#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:269 +#: plugins/sudoers/logging.c:1046 #, c-format msgid "unable to open log file %s" msgstr "" @@ -1018,13 +1036,13 @@ msgid "unable to initialize relay TLS context" msgstr "" -#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:424 -#: logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:434 msgid "unable to create journal file" msgstr "" #: logsrvd/logsrvd_journal.c:153 logsrvd/logsrvd_queue.c:109 -#: plugins/sudoers/visudo.c:1028 +#: plugins/sudoers/visudo.c:1038 #, c-format msgid "unable to lock %s" msgstr "" @@ -1037,8 +1055,8 @@ msgid "unable to open journal file" msgstr "" -#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:460 -#: logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:470 msgid "unable to write journal file" msgstr "" @@ -1047,20 +1065,20 @@ msgstr "" #: logsrvd/logsrvd_journal.c:247 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:282 logsrvd/logsrvd_journal.c:283 +#: logsrvd/logsrvd_journal.c:287 logsrvd/logsrvd_journal.c:288 msgid "unexpected EOF reading journal file" msgstr "" #: logsrvd/logsrvd_journal.c:251 logsrvd/logsrvd_journal.c:252 -#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:287 +#: logsrvd/logsrvd_journal.c:291 logsrvd/logsrvd_journal.c:292 msgid "error reading journal file" msgstr "" -#: logsrvd/logsrvd_journal.c:298 logsrvd/logsrvd_journal.c:384 +#: logsrvd/logsrvd_journal.c:303 logsrvd/logsrvd_journal.c:389 msgid "invalid journal file, unable to restart" msgstr "" -#: logsrvd/logsrvd_journal.c:443 +#: logsrvd/logsrvd_journal.c:448 #, c-format msgid "unable to seek to [%lld, %ld] in journal file %s" msgstr "" @@ -1118,7 +1136,7 @@ #: logsrvd/logsrvd_local.c:599 logsrvd/logsrvd_local.c:607 #: logsrvd/logsrvd_local.c:655 logsrvd/logsrvd_local.c:690 -#: plugins/sudoers/sudoreplay.c:344 +#: plugins/sudoers/sudoreplay.c:344 toke.l:982 toke.l:985 #, c-format msgid "%s/%s: %s" msgstr "" @@ -1139,69 +1157,69 @@ msgid "error writing CommandSuspend" msgstr "" -#: logsrvd/logsrvd_relay.c:435 +#: logsrvd/logsrvd_relay.c:437 msgid "TLS handshake with relay host failed" msgstr "" -#: logsrvd/logsrvd_relay.c:463 +#: logsrvd/logsrvd_relay.c:465 msgid "unable to connect to relay host" msgstr "" -#: logsrvd/logsrvd_relay.c:518 +#: logsrvd/logsrvd_relay.c:520 #, c-format msgid "%s: invalid ServerHello, missing server_id" msgstr "" -#: logsrvd/logsrvd_relay.c:520 logsrvd/sendlog.c:1096 -#: plugins/sudoers/log_client.c:1468 +#: logsrvd/logsrvd_relay.c:522 logsrvd/sendlog.c:1105 +#: plugins/sudoers/log_client.c:1476 msgid "invalid ServerHello" msgstr "" -#: logsrvd/logsrvd_relay.c:679 +#: logsrvd/logsrvd_relay.c:681 msgid "unrecognized ServerMessage type" msgstr "" -#: logsrvd/logsrvd_relay.c:708 +#: logsrvd/logsrvd_relay.c:710 #, c-format msgid "timed out reading from relay %s (%s)" msgstr "" -#: logsrvd/logsrvd_relay.c:710 +#: logsrvd/logsrvd_relay.c:712 msgid "timeout reading from relay" msgstr "" -#: logsrvd/logsrvd_relay.c:762 +#: logsrvd/logsrvd_relay.c:764 msgid "relay host name does not match certificate" msgstr "" -#: logsrvd/logsrvd_relay.c:768 logsrvd/logsrvd_relay.c:782 -#: logsrvd/logsrvd_relay.c:789 +#: logsrvd/logsrvd_relay.c:770 logsrvd/logsrvd_relay.c:784 +#: logsrvd/logsrvd_relay.c:791 msgid "error reading from relay" msgstr "" -#: logsrvd/logsrvd_relay.c:810 +#: logsrvd/logsrvd_relay.c:812 msgid "unable to read from relay" msgstr "" -#: logsrvd/logsrvd_relay.c:825 logsrvd/logsrvd_relay.c:943 +#: logsrvd/logsrvd_relay.c:827 logsrvd/logsrvd_relay.c:945 msgid "relay server closed connection" msgstr "" -#: logsrvd/logsrvd_relay.c:843 +#: logsrvd/logsrvd_relay.c:845 msgid "server message too large" msgstr "" -#: logsrvd/logsrvd_relay.c:907 +#: logsrvd/logsrvd_relay.c:909 #, c-format msgid "timed out writing to relay %s (%s)" msgstr "" -#: logsrvd/logsrvd_relay.c:909 +#: logsrvd/logsrvd_relay.c:911 msgid "timeout writing to relay" msgstr "" -#: logsrvd/logsrvd_relay.c:962 logsrvd/logsrvd_relay.c:969 -#: logsrvd/logsrvd_relay.c:981 +#: logsrvd/logsrvd_relay.c:964 logsrvd/logsrvd_relay.c:971 +#: logsrvd/logsrvd_relay.c:983 msgid "error writing to relay" msgstr "" @@ -1266,79 +1284,79 @@ msgid "unable to get server IP addr" msgstr "" -#: logsrvd/sendlog.c:300 plugins/sudoers/sudoreplay.c:868 +#: logsrvd/sendlog.c:309 plugins/sudoers/sudoreplay.c:868 #, c-format msgid "unable to read %s/%s: %s" msgstr "" -#: logsrvd/sendlog.c:1020 plugins/sudoers/iolog.c:949 -#: plugins/sudoers/iolog.c:1024 +#: logsrvd/sendlog.c:1029 plugins/sudoers/iolog.c:948 +#: plugins/sudoers/iolog.c:1023 #, c-format msgid "unexpected I/O event %d" msgstr "" -#: logsrvd/sendlog.c:1073 logsrvd/sendlog.c:1090 logsrvd/sendlog.c:1124 -#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1394 -#: plugins/sudoers/log_client.c:1462 plugins/sudoers/log_client.c:1501 +#: logsrvd/sendlog.c:1082 logsrvd/sendlog.c:1099 logsrvd/sendlog.c:1133 +#: plugins/sudoers/log_client.c:1126 plugins/sudoers/log_client.c:1402 +#: plugins/sudoers/log_client.c:1470 plugins/sudoers/log_client.c:1509 #, c-format msgid "%s: unexpected state %d" msgstr "" -#: logsrvd/sendlog.c:1160 plugins/sudoers/log_client.c:1550 +#: logsrvd/sendlog.c:1169 plugins/sudoers/log_client.c:1558 #, c-format msgid "error message received from server: %s" msgstr "" -#: logsrvd/sendlog.c:1173 plugins/sudoers/log_client.c:1563 +#: logsrvd/sendlog.c:1182 plugins/sudoers/log_client.c:1571 #, c-format msgid "abort message received from server: %s" msgstr "" -#: logsrvd/sendlog.c:1232 plugins/sudoers/log_client.c:1613 +#: logsrvd/sendlog.c:1241 plugins/sudoers/log_client.c:1621 #, c-format msgid "%s: unexpected type_case value %d" msgstr "" -#: logsrvd/sendlog.c:1261 +#: logsrvd/sendlog.c:1270 msgid "timeout reading from server" msgstr "" -#: logsrvd/sendlog.c:1310 plugins/sudoers/log_client.c:1729 +#: logsrvd/sendlog.c:1319 plugins/sudoers/log_client.c:1743 msgid "host name does not match certificate" msgstr "" -#: logsrvd/sendlog.c:1343 +#: logsrvd/sendlog.c:1352 msgid "premature EOF" msgstr "" -#: logsrvd/sendlog.c:1356 plugins/sudoers/log_client.c:1776 +#: logsrvd/sendlog.c:1365 plugins/sudoers/log_client.c:1790 #, c-format msgid "server message too large: %u" msgstr "" -#: logsrvd/sendlog.c:1412 +#: logsrvd/sendlog.c:1421 msgid "timeout writing to server" msgstr "" -#: logsrvd/sendlog.c:1779 +#: logsrvd/sendlog.c:1788 msgid "both restart point and iolog ID must be specified" msgstr "" -#: logsrvd/sendlog.c:1783 +#: logsrvd/sendlog.c:1792 msgid "a restart point may not be set when no I/O is sent" msgstr "" -#: logsrvd/sendlog.c:1859 +#: logsrvd/sendlog.c:1868 #, c-format msgid "exited prematurely with state %d" msgstr "" -#: logsrvd/sendlog.c:1860 +#: logsrvd/sendlog.c:1869 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "" -#: logsrvd/sendlog.c:1862 +#: logsrvd/sendlog.c:1871 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "" @@ -1396,12 +1414,12 @@ msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "" -#: plugins/sudoers/audit.c:269 plugins/sudoers/audit.c:429 -#: plugins/sudoers/log_client.c:951 plugins/sudoers/log_client.c:1000 -#: plugins/sudoers/log_client.c:1049 plugins/sudoers/log_client.c:1174 -#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:693 -#: plugins/sudoers/logging.c:796 plugins/sudoers/logging.c:987 -#: plugins/sudoers/policy.c:125 +#: plugins/sudoers/audit.c:268 plugins/sudoers/audit.c:428 +#: plugins/sudoers/log_client.c:959 plugins/sudoers/log_client.c:1008 +#: plugins/sudoers/log_client.c:1057 plugins/sudoers/log_client.c:1182 +#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:711 +#: plugins/sudoers/logging.c:833 plugins/sudoers/logging.c:1000 +#: plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "" @@ -1410,28 +1428,28 @@ msgid "unable to change password for %s" msgstr "" -#: plugins/sudoers/auth/bsdauth.c:74 +#: plugins/sudoers/auth/bsdauth.c:77 #, c-format msgid "unable to get login class for user %s" msgstr "" -#: plugins/sudoers/auth/bsdauth.c:79 -msgid "unable to begin bsd authentication" +#: plugins/sudoers/auth/bsdauth.c:84 +msgid "invalid authentication type" msgstr "" -#: plugins/sudoers/auth/bsdauth.c:87 -msgid "invalid authentication type" +#: plugins/sudoers/auth/bsdauth.c:89 +msgid "unable to begin BSD authentication" msgstr "" #: plugins/sudoers/auth/bsdauth.c:96 msgid "unable to initialize BSD authentication" msgstr "" -#: plugins/sudoers/auth/bsdauth.c:186 +#: plugins/sudoers/auth/bsdauth.c:188 msgid "your account has expired" msgstr "" -#: plugins/sudoers/auth/bsdauth.c:188 +#: plugins/sudoers/auth/bsdauth.c:190 msgid "approval failed" msgstr "" @@ -1644,13 +1662,12 @@ msgstr "" #: plugins/sudoers/check.c:353 plugins/sudoers/check.c:363 -#: plugins/sudoers/parse.c:82 plugins/sudoers/sudoers.c:945 -#: plugins/sudoers/sudoers.c:966 plugins/sudoers/tsdump.c:119 +#: plugins/sudoers/parse.c:80 plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid %u" msgstr "" -#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1279 +#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1278 #, c-format msgid "%s: %s\n" msgstr "" @@ -1665,91 +1682,91 @@ msgid "%s \"%s\" referenced but not defined" msgstr "" -#: plugins/sudoers/cvtsudoers.c:209 +#: plugins/sudoers/cvtsudoers.c:210 #, c-format msgid "order increment: %s: %s" msgstr "" -#: plugins/sudoers/cvtsudoers.c:228 +#: plugins/sudoers/cvtsudoers.c:229 #, c-format msgid "starting order: %s: %s" msgstr "" -#: plugins/sudoers/cvtsudoers.c:238 +#: plugins/sudoers/cvtsudoers.c:239 #, c-format msgid "order padding: %s: %s" msgstr "" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/visudo.c:184 +#: plugins/sudoers/cvtsudoers.c:249 plugins/sudoers/visudo.c:188 #, c-format msgid "%s grammar version %d\n" msgstr "" -#: plugins/sudoers/cvtsudoers.c:277 plugins/sudoers/testsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:278 plugins/sudoers/testsudoers.c:163 #, c-format msgid "unsupported input format %s" msgstr "" -#: plugins/sudoers/cvtsudoers.c:295 +#: plugins/sudoers/cvtsudoers.c:296 #, c-format msgid "unsupported output format %s" msgstr "" -#: plugins/sudoers/cvtsudoers.c:385 +#: plugins/sudoers/cvtsudoers.c:386 #, c-format msgid "%s: input and output files must be different" msgstr "" -#: plugins/sudoers/cvtsudoers.c:399 plugins/sudoers/sudoers.c:166 -#: plugins/sudoers/sudoers.c:222 plugins/sudoers/testsudoers.c:254 -#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:654 +#: plugins/sudoers/cvtsudoers.c:400 plugins/sudoers/sudoers.c:163 +#: plugins/sudoers/sudoers.c:221 plugins/sudoers/testsudoers.c:263 +#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:657 msgid "unable to initialize sudoers default values" msgstr "" -#: plugins/sudoers/cvtsudoers.c:525 plugins/sudoers/ldap_conf.c:434 +#: plugins/sudoers/cvtsudoers.c:526 plugins/sudoers/ldap_conf.c:431 #, c-format msgid "%s: %s: %s: %s" msgstr "" -#: plugins/sudoers/cvtsudoers.c:584 +#: plugins/sudoers/cvtsudoers.c:605 #, c-format msgid "%s: unknown key word %s" msgstr "" -#: plugins/sudoers/cvtsudoers.c:630 +#: plugins/sudoers/cvtsudoers.c:651 #, c-format msgid "invalid defaults type: %s" msgstr "" -#: plugins/sudoers/cvtsudoers.c:653 +#: plugins/sudoers/cvtsudoers.c:674 #, c-format msgid "invalid suppression type: %s" msgstr "" -#: plugins/sudoers/cvtsudoers.c:694 plugins/sudoers/cvtsudoers.c:710 +#: plugins/sudoers/cvtsudoers.c:715 plugins/sudoers/cvtsudoers.c:731 #, c-format msgid "invalid filter: %s" msgstr "" -#: plugins/sudoers/cvtsudoers.c:754 plugins/sudoers/visudo.c:982 +#: plugins/sudoers/cvtsudoers.c:775 plugins/sudoers/visudo.c:992 #, c-format msgid "failed to parse %s file, unknown error" msgstr "" -#: plugins/sudoers/cvtsudoers.c:1478 plugins/sudoers/sudoreplay.c:1142 -#: plugins/sudoers/timestamp.c:343 plugins/sudoers/timestamp.c:346 +#: plugins/sudoers/cvtsudoers.c:1499 plugins/sudoers/sudoreplay.c:1142 +#: plugins/sudoers/timestamp.c:368 plugins/sudoers/timestamp.c:371 #, c-format msgid "unable to write to %s" msgstr "" -#: plugins/sudoers/cvtsudoers.c:1506 +#: plugins/sudoers/cvtsudoers.c:1527 #, c-format msgid "" "%s - convert between sudoers file formats\n" "\n" msgstr "" -#: plugins/sudoers/cvtsudoers.c:1508 +#: plugins/sudoers/cvtsudoers.c:1529 msgid "" "\n" "Options:\n" @@ -1775,37 +1792,36 @@ #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 #: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:340 #: plugins/sudoers/env.c:347 plugins/sudoers/env.c:458 -#: plugins/sudoers/ldap.c:528 plugins/sudoers/ldap.c:761 -#: plugins/sudoers/ldap.c:1134 plugins/sudoers/ldap_conf.c:222 -#: plugins/sudoers/ldap_conf.c:313 plugins/sudoers/ldap_util.c:486 +#: plugins/sudoers/ldap.c:509 plugins/sudoers/ldap.c:626 +#: plugins/sudoers/ldap.c:999 plugins/sudoers/ldap_conf.c:219 +#: plugins/sudoers/ldap_conf.c:310 plugins/sudoers/ldap_util.c:486 #: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:461 -#: plugins/sudoers/logging.c:817 plugins/sudoers/logging.c:827 -#: plugins/sudoers/policy.c:807 plugins/sudoers/policy.c:818 +#: plugins/sudoers/policy.c:824 plugins/sudoers/policy.c:835 #: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 #: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/sudoreplay.c:1339 plugins/sudoers/sudoreplay.c:1345 -#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/toke_util.c:213 toke.l:995 toke.l:1197 +#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/toke_util.c:213 toke.l:996 toke.l:1259 #, c-format msgid "internal error, %s overflow" msgstr "" -#: plugins/sudoers/cvtsudoers_csv.c:452 plugins/sudoers/cvtsudoers_csv.c:466 -#: plugins/sudoers/cvtsudoers_json.c:657 plugins/sudoers/cvtsudoers_json.c:672 +#: plugins/sudoers/cvtsudoers_csv.c:454 plugins/sudoers/cvtsudoers_csv.c:468 +#: plugins/sudoers/cvtsudoers_json.c:661 plugins/sudoers/cvtsudoers_json.c:676 #: plugins/sudoers/cvtsudoers_ldif.c:347 plugins/sudoers/cvtsudoers_ldif.c:360 -#: plugins/sudoers/ldap.c:512 +#: plugins/sudoers/ldap.c:493 msgid "unable to get GMT time" msgstr "" -#: plugins/sudoers/cvtsudoers_csv.c:457 plugins/sudoers/cvtsudoers_csv.c:471 -#: plugins/sudoers/cvtsudoers_json.c:662 plugins/sudoers/cvtsudoers_json.c:677 +#: plugins/sudoers/cvtsudoers_csv.c:459 plugins/sudoers/cvtsudoers_csv.c:473 +#: plugins/sudoers/cvtsudoers_json.c:666 plugins/sudoers/cvtsudoers_json.c:681 #: plugins/sudoers/cvtsudoers_ldif.c:352 plugins/sudoers/cvtsudoers_ldif.c:365 -#: plugins/sudoers/ldap.c:520 +#: plugins/sudoers/ldap.c:501 msgid "unable to format timestamp" msgstr "" -#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:515 -#: plugins/sudoers/cvtsudoers_json.c:728 +#: plugins/sudoers/cvtsudoers_json.c:481 plugins/sudoers/cvtsudoers_json.c:516 +#: plugins/sudoers/cvtsudoers_json.c:732 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" msgstr "" @@ -2630,18 +2646,18 @@ msgid "value \"%s\" is invalid for option \"%s\"" msgstr "" -#: plugins/sudoers/defaults.c:1128 plugins/sudoers/policy.c:210 -#: plugins/sudoers/policy.c:219 +#: plugins/sudoers/defaults.c:1127 plugins/sudoers/policy.c:205 +#: plugins/sudoers/policy.c:214 #, c-format msgid "path name for \"%s\" too long" msgstr "" -#: plugins/sudoers/defaults.c:1134 +#: plugins/sudoers/defaults.c:1133 #, c-format msgid "values for \"%s\" must start with a '/', '~', or '*'" msgstr "" -#: plugins/sudoers/defaults.c:1141 +#: plugins/sudoers/defaults.c:1140 #, c-format msgid "values for \"%s\" must start with a '/'" msgstr "" @@ -2669,12 +2685,12 @@ "sorry, you are not allowed to set the following environment variables: %s" msgstr "" -#: plugins/sudoers/filedigest.c:49 +#: plugins/sudoers/filedigest.c:50 #, c-format -msgid "unsupported digest type %d for %s" +msgid "unsupported digest type %u for %s" msgstr "" -#: plugins/sudoers/filedigest.c:78 +#: plugins/sudoers/filedigest.c:79 #, c-format msgid "%s: read error" msgstr "" @@ -2708,82 +2724,82 @@ msgid "Local IP address and netmask pairs:\n" msgstr "" -#: plugins/sudoers/iolog.c:685 +#: plugins/sudoers/iolog.c:684 msgid "unable to update sequence file" msgstr "" -#: plugins/sudoers/iolog.c:719 plugins/sudoers/iolog.c:907 -#: plugins/sudoers/iolog.c:1069 plugins/sudoers/iolog.c:1076 -#: plugins/sudoers/iolog.c:1197 plugins/sudoers/iolog.c:1204 -#: plugins/sudoers/iolog.c:1303 plugins/sudoers/iolog.c:1310 +#: plugins/sudoers/iolog.c:718 plugins/sudoers/iolog.c:906 +#: plugins/sudoers/iolog.c:1068 plugins/sudoers/iolog.c:1075 +#: plugins/sudoers/iolog.c:1196 plugins/sudoers/iolog.c:1203 +#: plugins/sudoers/iolog.c:1302 plugins/sudoers/iolog.c:1309 #, c-format msgid "unable to write to I/O log file: %s" msgstr "" -#: plugins/sudoers/iolog.c:727 +#: plugins/sudoers/iolog.c:726 #, c-format msgid "unable to create %s/%s" msgstr "" -#: plugins/sudoers/iolog.c:955 +#: plugins/sudoers/iolog.c:954 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "" -#: plugins/sudoers/iolog.c:1054 plugins/sudoers/iolog.c:1182 -#: plugins/sudoers/iolog.c:1287 plugins/sudoers/timestamp.c:879 -#: plugins/sudoers/timestamp.c:971 plugins/sudoers/visudo.c:556 -#: plugins/sudoers/visudo.c:562 +#: plugins/sudoers/iolog.c:1053 plugins/sudoers/iolog.c:1181 +#: plugins/sudoers/iolog.c:1286 plugins/sudoers/timestamp.c:904 +#: plugins/sudoers/timestamp.c:996 plugins/sudoers/visudo.c:559 +#: plugins/sudoers/visudo.c:565 msgid "unable to read the clock" msgstr "" -#: plugins/sudoers/iolog.c:1279 plugins/sudoers/log_client.c:1192 -#: plugins/sudoers/log_client.c:1202 plugins/sudoers/log_client.c:1206 +#: plugins/sudoers/iolog.c:1278 plugins/sudoers/log_client.c:1200 +#: plugins/sudoers/log_client.c:1210 plugins/sudoers/log_client.c:1214 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "" -#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:292 +#: plugins/sudoers/ldap.c:154 plugins/sudoers/ldap_conf.c:289 msgid "starttls not supported when using ldaps" msgstr "" -#: plugins/sudoers/ldap.c:248 +#: plugins/sudoers/ldap.c:225 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "" -#: plugins/sudoers/ldap.c:251 +#: plugins/sudoers/ldap.c:228 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "" -#: plugins/sudoers/ldap.c:1714 +#: plugins/sudoers/ldap.c:1587 #, c-format msgid "unable to initialize LDAP: %s" msgstr "" -#: plugins/sudoers/ldap.c:1751 +#: plugins/sudoers/ldap.c:1624 msgid "" "start_tls specified but LDAP libs do not support ldap_start_tls_s() or " "ldap_start_tls_s_np()" msgstr "" -#: plugins/sudoers/ldap.c:1888 plugins/sudoers/parse_ldif.c:748 +#: plugins/sudoers/ldap.c:1761 plugins/sudoers/parse_ldif.c:748 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "" -#: plugins/sudoers/ldap_conf.c:200 +#: plugins/sudoers/ldap_conf.c:197 #, c-format msgid "%s: port too large" msgstr "" -#: plugins/sudoers/ldap_conf.c:261 +#: plugins/sudoers/ldap_conf.c:258 #, c-format msgid "unsupported LDAP uri type: %s" msgstr "" -#: plugins/sudoers/ldap_conf.c:288 +#: plugins/sudoers/ldap_conf.c:285 msgid "unable to mix ldap and ldaps URIs" msgstr "" @@ -2809,7 +2825,7 @@ msgstr "" #: plugins/sudoers/log_client.c:125 plugins/sudoers/log_client.c:412 -#: plugins/sudoers/log_client.c:1439 plugins/sudoers/log_client.c:2055 +#: plugins/sudoers/log_client.c:1447 plugins/sudoers/log_client.c:2069 msgid "error in event loop" msgstr "" @@ -2843,28 +2859,28 @@ msgid "TLS connection to %s:%s failed: %s" msgstr "" -#: plugins/sudoers/log_client.c:543 +#: plugins/sudoers/log_client.c:545 msgid "TLS initialization was unsuccessful" msgstr "" -#: plugins/sudoers/log_client.c:553 +#: plugins/sudoers/log_client.c:555 msgid "TLS handshake was unsuccessful" msgstr "" -#: plugins/sudoers/log_client.c:1210 +#: plugins/sudoers/log_client.c:1218 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "" -#: plugins/sudoers/log_client.c:1739 plugins/sudoers/log_client.c:1763 +#: plugins/sudoers/log_client.c:1753 plugins/sudoers/log_client.c:1777 msgid "lost connection to log server" msgstr "" -#: plugins/sudoers/log_client.c:1840 +#: plugins/sudoers/log_client.c:1854 msgid "missing write buffer" msgstr "" -#: plugins/sudoers/log_client.c:1994 +#: plugins/sudoers/log_client.c:2008 msgid "unable to connect to log server" msgstr "" @@ -2897,22 +2913,22 @@ #: plugins/sudoers/logging.c:324 #, c-format -msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" +msgid "Sorry, user %s is not allowed to execute '%s%s%s%s' as %s%s%s on %s.\n" msgstr "" #: plugins/sudoers/logging.c:334 msgid "This incident has been reported to the administrator.\n" msgstr "" -#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:657 plugins/sudoers/sudoers.c:659 -#: plugins/sudoers/sudoers.c:661 plugins/sudoers/sudoers.c:816 -#: plugins/sudoers/sudoers.c:818 +#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:566 +#: plugins/sudoers/sudoers.c:567 plugins/sudoers/sudoers.c:569 +#: plugins/sudoers/sudoers.c:570 plugins/sudoers/sudoers.c:791 +#: plugins/sudoers/sudoers.c:793 #, c-format msgid "%s: command not found" msgstr "" -#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:651 +#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:562 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2934,75 +2950,75 @@ msgid "a password is required" msgstr "" -#: plugins/sudoers/logging.c:803 plugins/sudoers/logging.c:815 +#: plugins/sudoers/logging.c:855 msgid "problem parsing sudoers" msgstr "" -#: plugins/sudoers/logging.c:877 plugins/sudoers/logging.c:889 +#: plugins/sudoers/logging.c:896 plugins/sudoers/logging.c:904 #, c-format msgid "%s:%d:%d: %s" msgstr "" -#: plugins/sudoers/logging.c:1066 +#: plugins/sudoers/logging.c:1079 #, c-format msgid "unable to write log file: %s" msgstr "" -#: plugins/sudoers/match_digest.c:112 +#: plugins/sudoers/match_digest.c:101 #, c-format msgid "digest for %s (%s) bad length %zu, expected %zu" msgstr "" -#: plugins/sudoers/match_digest.c:131 +#: plugins/sudoers/match_digest.c:120 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "" -#: plugins/sudoers/parse.c:631 +#: plugins/sudoers/parse.c:643 #, c-format msgid "" "\n" "LDAP Role: %s\n" msgstr "" -#: plugins/sudoers/parse.c:634 +#: plugins/sudoers/parse.c:646 msgid "" "\n" "Sudoers entry:\n" msgstr "" -#: plugins/sudoers/parse.c:636 +#: plugins/sudoers/parse.c:648 msgid " RunAsUsers: " msgstr "" -#: plugins/sudoers/parse.c:651 +#: plugins/sudoers/parse.c:663 msgid " RunAsGroups: " msgstr "" -#: plugins/sudoers/parse.c:661 +#: plugins/sudoers/parse.c:673 msgid " Options: " msgstr "" -#: plugins/sudoers/parse.c:725 +#: plugins/sudoers/parse.c:737 msgid " Commands:\n" msgstr "" -#: plugins/sudoers/parse.c:916 +#: plugins/sudoers/parse.c:928 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "" -#: plugins/sudoers/parse.c:934 +#: plugins/sudoers/parse.c:946 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "" -#: plugins/sudoers/parse.c:952 +#: plugins/sudoers/parse.c:964 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "" -#: plugins/sudoers/parse.c:967 +#: plugins/sudoers/parse.c:979 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "" @@ -3017,91 +3033,99 @@ msgid "invalid LDIF attribute: %s" msgstr "" -#: plugins/sudoers/policy.c:82 plugins/sudoers/policy.c:113 +#: plugins/sudoers/pivot.c:74 +msgid "unable to restore root directory" +msgstr "" + +#: plugins/sudoers/pivot.c:82 +msgid "unable to restore current working directory" +msgstr "" + +#: 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:360 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:356 plugins/sudoers/testsudoers.c:277 msgid "unable to parse network address list" msgstr "" -#: plugins/sudoers/policy.c:528 +#: plugins/sudoers/policy.c:524 msgid "user name not set by sudo front-end" msgstr "" -#: plugins/sudoers/policy.c:532 +#: plugins/sudoers/policy.c:528 msgid "user-ID not set by sudo front-end" msgstr "" -#: plugins/sudoers/policy.c:536 +#: plugins/sudoers/policy.c:532 msgid "group-ID not set by sudo front-end" msgstr "" -#: plugins/sudoers/policy.c:540 +#: plugins/sudoers/policy.c:536 msgid "host name not set by sudo front-end" msgstr "" -#: plugins/sudoers/policy.c:737 +#: plugins/sudoers/policy.c:754 #, c-format msgid "invalid working directory: %s" msgstr "" -#: plugins/sudoers/policy.c:921 +#: plugins/sudoers/policy.c:938 #, c-format msgid "invalid chroot directory: %s" msgstr "" -#: plugins/sudoers/policy.c:1108 plugins/sudoers/visudo.c:259 -#: plugins/sudoers/visudo.c:906 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/visudo.c:910 +#: plugins/sudoers/visudo.c:1209 #, c-format msgid "unable to execute %s" msgstr "" -#: plugins/sudoers/policy.c:1178 plugins/sudoers/policy.c:1215 -#: plugins/sudoers/policy.c:1237 plugins/sudoers/policy.c:1263 +#: plugins/sudoers/policy.c:1195 plugins/sudoers/policy.c:1230 +#: plugins/sudoers/policy.c:1252 plugins/sudoers/policy.c:1274 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "" -#: plugins/sudoers/policy.c:1299 +#: plugins/sudoers/policy.c:1294 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "" -#: plugins/sudoers/policy.c:1301 +#: plugins/sudoers/policy.c:1296 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "" -#: plugins/sudoers/policy.c:1305 +#: plugins/sudoers/policy.c:1300 #, c-format msgid "" "\n" "Sudoers path: %s\n" msgstr "" -#: plugins/sudoers/policy.c:1308 +#: plugins/sudoers/policy.c:1303 #, c-format msgid "nsswitch path: %s\n" msgstr "" -#: plugins/sudoers/policy.c:1310 +#: plugins/sudoers/policy.c:1305 #, c-format msgid "ldap.conf path: %s\n" msgstr "" -#: plugins/sudoers/policy.c:1311 +#: plugins/sudoers/policy.c:1306 #, c-format msgid "ldap.secret path: %s\n" msgstr "" -#: plugins/sudoers/policy.c:1344 +#: plugins/sudoers/policy.c:1339 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "" -#: plugins/sudoers/policy.c:1362 +#: plugins/sudoers/policy.c:1357 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "" @@ -3170,48 +3194,48 @@ msgid "unable to parse gids for %s" msgstr "" -#: 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 +#: plugins/sudoers/set_perms.c:115 plugins/sudoers/set_perms.c:451 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1178 +#: plugins/sudoers/set_perms.c:1481 msgid "perm stack overflow" msgstr "" -#: 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 +#: plugins/sudoers/set_perms.c:126 plugins/sudoers/set_perms.c:382 +#: plugins/sudoers/set_perms.c:462 plugins/sudoers/set_perms.c:730 +#: plugins/sudoers/set_perms.c:874 plugins/sudoers/set_perms.c:1102 +#: plugins/sudoers/set_perms.c:1189 plugins/sudoers/set_perms.c:1414 +#: plugins/sudoers/set_perms.c:1492 plugins/sudoers/set_perms.c:1583 msgid "perm stack underflow" msgstr "" -#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 -#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 +#: plugins/sudoers/set_perms.c:186 plugins/sudoers/set_perms.c:509 +#: plugins/sudoers/set_perms.c:1243 plugins/sudoers/set_perms.c:1526 msgid "unable to change to root gid" msgstr "" -#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 -#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 +#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:606 +#: plugins/sudoers/set_perms.c:1006 plugins/sudoers/set_perms.c:1320 msgid "unable to change to runas gid" msgstr "" -#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 -#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 +#: plugins/sudoers/set_perms.c:282 plugins/sudoers/set_perms.c:611 +#: plugins/sudoers/set_perms.c:1011 plugins/sudoers/set_perms.c:1325 msgid "unable to set runas group vector" msgstr "" -#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 -#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:293 plugins/sudoers/set_perms.c:622 +#: plugins/sudoers/set_perms.c:1020 plugins/sudoers/set_perms.c:1334 msgid "unable to change to runas uid" msgstr "" -#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 -#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 +#: plugins/sudoers/set_perms.c:315 plugins/sudoers/set_perms.c:644 +#: plugins/sudoers/set_perms.c:1040 plugins/sudoers/set_perms.c:1354 msgid "unable to change to sudoers gid" msgstr "" -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 msgid "too many processes" msgstr "" @@ -3240,150 +3264,150 @@ msgid "unable to find symbol \"%s\" in %s" msgstr "" -#: plugins/sudoers/sudoers.c:263 +#: plugins/sudoers/sudoers.c:261 #, c-format msgid "unable to get defaults from %s" msgstr "" -#: plugins/sudoers/sudoers.c:270 +#: plugins/sudoers/sudoers.c:268 msgid "no valid sudoers sources found, quitting" msgstr "" -#: plugins/sudoers/sudoers.c:346 +#: plugins/sudoers/sudoers.c:344 #, c-format msgid "user not allowed to change root directory to %s" msgstr "" -#: plugins/sudoers/sudoers.c:348 +#: plugins/sudoers/sudoers.c:346 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "" -#: plugins/sudoers/sudoers.c:373 +#: plugins/sudoers/sudoers.c:371 #, c-format msgid "user not allowed to change directory to %s" msgstr "" -#: plugins/sudoers/sudoers.c:374 +#: plugins/sudoers/sudoers.c:372 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "" -#: plugins/sudoers/sudoers.c:401 -msgid "no command specified" -msgstr "" - -#: plugins/sudoers/sudoers.c:426 +#: plugins/sudoers/sudoers.c:412 msgid "sudoers specifies that root is not allowed to sudo" msgstr "" -#: plugins/sudoers/sudoers.c:483 +#: plugins/sudoers/sudoers.c:421 msgid "user not allowed to override closefrom limit" msgstr "" -#: plugins/sudoers/sudoers.c:484 +#: plugins/sudoers/sudoers.c:422 msgid "you are not permitted to use the -C option" msgstr "" -#: plugins/sudoers/sudoers.c:544 -#, c-format -msgid "timestamp owner (%s): No such user" -msgstr "" - -#: plugins/sudoers/sudoers.c:559 +#: plugins/sudoers/sudoers.c:468 msgid "no tty" msgstr "" -#: plugins/sudoers/sudoers.c:560 +#: plugins/sudoers/sudoers.c:469 msgid "sorry, you must have a tty to run sudo" msgstr "" -#: plugins/sudoers/sudoers.c:567 +#: plugins/sudoers/sudoers.c:477 #, c-format msgid "invalid shell for user %s: %s" msgstr "" -#: plugins/sudoers/sudoers.c:650 +#: plugins/sudoers/sudoers.c:561 msgid "command in current directory" msgstr "" -#: plugins/sudoers/sudoers.c:665 +#: plugins/sudoers/sudoers.c:574 msgid "\"cd\" is a shell built-in command, it cannot be run directly." msgstr "" -#: plugins/sudoers/sudoers.c:667 +#: plugins/sudoers/sudoers.c:576 msgid "the -s option may be used to run a privileged shell." msgstr "" -#: plugins/sudoers/sudoers.c:669 +#: plugins/sudoers/sudoers.c:578 msgid "the -D option may be used to run a command in a specific directory." msgstr "" -#: plugins/sudoers/sudoers.c:678 +#: plugins/sudoers/sudoers.c:587 msgid "user not allowed to set a command timeout" msgstr "" -#: plugins/sudoers/sudoers.c:680 +#: plugins/sudoers/sudoers.c:589 msgid "sorry, you are not allowed set a command timeout" msgstr "" -#: plugins/sudoers/sudoers.c:688 +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to preserve the environment" msgstr "" -#: plugins/sudoers/sudoers.c:690 +#: plugins/sudoers/sudoers.c:599 msgid "sorry, you are not allowed to preserve the environment" msgstr "" -#: plugins/sudoers/sudoers.c:799 +#: plugins/sudoers/sudoers.c:635 +msgid "no command specified" +msgstr "" + +#: plugins/sudoers/sudoers.c:774 msgid "error setting user-specified environment variables" msgstr "" -#: plugins/sudoers/sudoers.c:1112 +#: plugins/sudoers/sudoers.c:1239 msgid "sudoedit doesn't need to be run via sudo" msgstr "" -#: plugins/sudoers/sudoers.c:1157 plugins/sudoers/sudoreplay.c:1612 +#: plugins/sudoers/sudoers.c:1314 plugins/sudoers/sudoreplay.c:1612 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "" -#: plugins/sudoers/sudoers.c:1186 plugins/sudoers/visudo.c:1066 +#: plugins/sudoers/sudoers.c:1337 plugins/sudoers/visudo.c:1114 #, c-format msgid "%s is not a regular file" msgstr "" -#: plugins/sudoers/sudoers.c:1190 plugins/sudoers/timestamp.c:263 toke.l:1255 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/timestamp.c:288 toke.l:1325 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "" -#: plugins/sudoers/sudoers.c:1194 plugins/sudoers/timestamp.c:270 toke.l:1260 +#: plugins/sudoers/sudoers.c:1345 plugins/sudoers/timestamp.c:295 toke.l:1330 #, c-format msgid "%s is world writable" msgstr "" -#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/timestamp.c:275 toke.l:1263 +#: plugins/sudoers/sudoers.c:1349 plugins/sudoers/timestamp.c:300 toke.l:1333 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "" -#: plugins/sudoers/sudoers.c:1233 +#: plugins/sudoers/sudoers.c:1377 #, c-format msgid "only root can use \"-c %s\"" msgstr "" -#: plugins/sudoers/sudoers.c:1252 +#: plugins/sudoers/sudoers.c:1396 #, c-format msgid "unknown login class %s" msgstr "" -#: plugins/sudoers/sudoers.c:1339 plugins/sudoers/sudoers.c:1354 +#: plugins/sudoers/sudoers.c:1483 plugins/sudoers/sudoers.c:1498 #, c-format msgid "unable to resolve host %s" msgstr "" +#: plugins/sudoers/sudoers.c:1636 +#, c-format +msgid "%s:%d:%d timestampowner: unknown user %s" +msgstr "" + #: plugins/sudoers/sudoreplay.c:252 #, c-format msgid "invalid filter option: %s" @@ -3511,43 +3535,43 @@ " -V, --version display version information and exit" msgstr "" -#: plugins/sudoers/testsudoers.c:344 +#: plugins/sudoers/testsudoers.c:355 msgid "\thost unmatched" msgstr "" -#: plugins/sudoers/testsudoers.c:347 +#: plugins/sudoers/testsudoers.c:358 msgid "" "\n" "Command allowed" msgstr "" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command denied" msgstr "" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command unmatched" msgstr "" -#: plugins/sudoers/timestamp.c:354 plugins/sudoers/timestamp.c:693 +#: plugins/sudoers/timestamp.c:379 plugins/sudoers/timestamp.c:718 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "" -#: plugins/sudoers/timestamp.c:890 +#: plugins/sudoers/timestamp.c:915 msgid "ignoring time stamp from the future" msgstr "" -#: plugins/sudoers/timestamp.c:913 +#: plugins/sudoers/timestamp.c:938 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "" -#: plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1067 #, c-format msgid "unable to lock time stamp file %s" msgstr "" @@ -3556,99 +3580,91 @@ msgid "sudoedit should not be specified with a path" msgstr "" -#: plugins/sudoers/visudo.c:254 -msgid "the -x option will be removed in a future release" -msgstr "" - -#: plugins/sudoers/visudo.c:256 -msgid "please consider using the cvtsudoers utility instead" -msgstr "" - -#: plugins/sudoers/visudo.c:311 plugins/sudoers/visudo.c:702 +#: plugins/sudoers/visudo.c:314 plugins/sudoers/visudo.c:705 #, c-format msgid "press return to edit %s: " msgstr "" -#: plugins/sudoers/visudo.c:326 +#: plugins/sudoers/visudo.c:329 #, c-format msgid "contents of edit session left in %s" msgstr "" -#: plugins/sudoers/visudo.c:403 +#: plugins/sudoers/visudo.c:406 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "" -#: plugins/sudoers/visudo.c:408 +#: plugins/sudoers/visudo.c:411 #, c-format msgid "no editor found (editor path = %s)" msgstr "" -#: plugins/sudoers/visudo.c:495 plugins/sudoers/visudo.c:774 +#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:777 #, c-format msgid "unable to stat %s" msgstr "" -#: plugins/sudoers/visudo.c:515 plugins/sudoers/visudo.c:523 +#: plugins/sudoers/visudo.c:518 plugins/sudoers/visudo.c:526 msgid "write error" msgstr "" -#: plugins/sudoers/visudo.c:569 +#: plugins/sudoers/visudo.c:572 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "" -#: plugins/sudoers/visudo.c:576 +#: plugins/sudoers/visudo.c:579 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "" -#: plugins/sudoers/visudo.c:582 +#: plugins/sudoers/visudo.c:585 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "" -#: plugins/sudoers/visudo.c:604 +#: plugins/sudoers/visudo.c:607 #, c-format msgid "%s unchanged" msgstr "" -#: plugins/sudoers/visudo.c:649 +#: plugins/sudoers/visudo.c:652 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "" -#: plugins/sudoers/visudo.c:662 +#: plugins/sudoers/visudo.c:665 #, c-format msgid "unable to parse temporary file (%s), unknown error" msgstr "" -#: plugins/sudoers/visudo.c:748 plugins/sudoers/visudo.c:778 -#: plugins/sudoers/visudo.c:785 +#: plugins/sudoers/visudo.c:751 plugins/sudoers/visudo.c:781 +#: plugins/sudoers/visudo.c:788 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "" -#: plugins/sudoers/visudo.c:813 +#: plugins/sudoers/visudo.c:816 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "" -#: plugins/sudoers/visudo.c:824 +#: plugins/sudoers/visudo.c:827 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "" -#: plugins/sudoers/visudo.c:831 +#: plugins/sudoers/visudo.c:834 #, c-format msgid "error renaming %s, %s unchanged" msgstr "" -#: plugins/sudoers/visudo.c:851 +#: plugins/sudoers/visudo.c:855 msgid "What now? " msgstr "" -#: plugins/sudoers/visudo.c:865 +#: plugins/sudoers/visudo.c:869 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -3656,48 +3672,56 @@ " (Q)uit and save changes to sudoers file (DANGER!)\n" msgstr "" -#: plugins/sudoers/visudo.c:911 +#: plugins/sudoers/visudo.c:915 #, c-format msgid "unable to run %s" msgstr "" -#: plugins/sudoers/visudo.c:942 +#: plugins/sudoers/visudo.c:946 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "" -#: plugins/sudoers/visudo.c:953 +#: plugins/sudoers/visudo.c:957 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "" -#: plugins/sudoers/visudo.c:999 plugins/sudoers/visudo.c:1006 +#: plugins/sudoers/visudo.c:1009 plugins/sudoers/visudo.c:1016 #, c-format msgid "%s: parsed OK\n" msgstr "" -#: plugins/sudoers/visudo.c:1025 +#: plugins/sudoers/visudo.c:1035 #, c-format msgid "%s busy, try again later" msgstr "" -#: plugins/sudoers/visudo.c:1029 +#: plugins/sudoers/visudo.c:1039 msgid "Edit anyway? [y/N]" msgstr "" -#: plugins/sudoers/visudo.c:1130 +#: plugins/sudoers/visudo.c:1197 +msgid "the -x option will be removed in a future release" +msgstr "" + +#: plugins/sudoers/visudo.c:1199 +msgid "please consider using the cvtsudoers utility instead" +msgstr "" + +#: plugins/sudoers/visudo.c:1219 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "" -#: plugins/sudoers/visudo.c:1242 +#: plugins/sudoers/visudo.c:1332 #, c-format msgid "" "%s - safely edit the sudoers file\n" "\n" msgstr "" -#: plugins/sudoers/visudo.c:1244 +#: plugins/sudoers/visudo.c:1334 msgid "" "\n" "Options:\n" @@ -3710,34 +3734,42 @@ " -V, --version display version information and exit\n" msgstr "" -#: toke.l:189 +#: toke.l:184 msgid "empty string" msgstr "" -#: toke.l:201 toke.l:571 +#: toke.l:196 toke.l:566 msgid "empty group" msgstr "" -#: toke.l:211 toke.l:569 +#: toke.l:206 toke.l:564 msgid "empty netgroup" msgstr "" -#: toke.l:289 +#: toke.l:284 msgid "unterminated regular expression" msgstr "" -#: toke.l:363 toke.l:375 toke.l:387 toke.l:403 toke.l:422 toke.l:462 +#: toke.l:358 toke.l:370 toke.l:382 toke.l:398 toke.l:417 toke.l:457 msgid "invalid line continuation" msgstr "" -#: toke.l:608 toke.l:620 +#: toke.l:603 toke.l:615 msgid "invalid IPv6 address" msgstr "" -#: toke.l:876 +#: toke.l:863 msgid "unexpected line break in string" msgstr "" -#: toke.l:1226 +#: toke.l:983 +msgid "ignoring editor backup file" +msgstr "" + +#: toke.l:986 +msgid "ignoring file name containing '.'" +msgstr "" + +#: toke.l:1289 msgid "too many levels of includes" msgstr "" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/plugins/sudoers/po/uk.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/plugins/sudoers/po/uk.mo differ diff -Nru sudo-1.9.13p3/plugins/sudoers/po/uk.po sudo-1.9.14p2/plugins/sudoers/po/uk.po --- sudo-1.9.13p3/plugins/sudoers/po/uk.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/po/uk.po 2023-07-15 15:37:21.000000000 +0000 @@ -4,10 +4,10 @@ # Yuri Chornoivan , 2011-2021, 2022, 2023. msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.13b2\n" +"Project-Id-Version: sudoers 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-26 21:00+0200\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-08 19:41+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -18,7 +18,7 @@ "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:1220 plugins/sudoers/logging.c:866 +#: confstr.sh:1 gram.y:1240 plugins/sudoers/logging.c:885 msgid "syntax error" msgstr "синтаксична помилка" @@ -42,34 +42,34 @@ msgid "Sorry, try again." msgstr "Вибачте, повторіть спробу." -#: gram.y:237 gram.y:304 gram.y:313 gram.y:322 gram.y:332 gram.y:342 -#: gram.y:366 gram.y:393 gram.y:402 gram.y:410 gram.y:419 gram.y:428 -#: gram.y:502 gram.y:512 gram.y:524 gram.y:572 gram.y:581 gram.y:590 -#: gram.y:599 gram.y:731 gram.y:739 gram.y:750 gram.y:762 gram.y:781 -#: gram.y:944 gram.y:949 gram.y:957 gram.y:971 gram.y:977 gram.y:1099 -#: gram.y:1108 gram.y:1116 gram.y:1125 gram.y:1134 gram.y:1163 gram.y:1172 -#: gram.y:1180 gram.y:1280 gram.y:1410 gram.y:1777 gram.y:1827 -#: lib/eventlog/eventlog.c:235 lib/eventlog/eventlog.c:312 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:834 -#: lib/eventlog/eventlog.c:1135 lib/iolog/iolog_filter.c:142 +#: gram.y:236 gram.y:303 gram.y:312 gram.y:321 gram.y:331 gram.y:341 +#: gram.y:365 gram.y:392 gram.y:401 gram.y:409 gram.y:418 gram.y:427 +#: gram.y:501 gram.y:511 gram.y:523 gram.y:571 gram.y:580 gram.y:589 +#: gram.y:598 gram.y:730 gram.y:738 gram.y:749 gram.y:761 gram.y:780 +#: gram.y:943 gram.y:948 gram.y:956 gram.y:970 gram.y:976 gram.y:988 +#: gram.y:994 gram.y:1119 gram.y:1128 gram.y:1136 gram.y:1145 gram.y:1154 +#: gram.y:1183 gram.y:1192 gram.y:1200 gram.y:1300 gram.y:1430 gram.y:1808 +#: gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:313 lib/eventlog/eventlog.c:755 +#: lib/eventlog/eventlog.c:832 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:472 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 #: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:233 -#: lib/iolog/iolog_json.c:150 lib/iolog/iolog_json.c:382 -#: lib/iolog/iolog_json.c:412 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:212 -#: logsrvd/iolog_writer.c:95 logsrvd/iolog_writer.c:100 -#: logsrvd/iolog_writer.c:134 logsrvd/iolog_writer.c:182 -#: logsrvd/iolog_writer.c:215 logsrvd/iolog_writer.c:225 -#: logsrvd/iolog_writer.c:254 logsrvd/iolog_writer.c:275 -#: logsrvd/iolog_writer.c:287 logsrvd/iolog_writer.c:297 -#: logsrvd/iolog_writer.c:307 logsrvd/iolog_writer.c:317 -#: logsrvd/iolog_writer.c:329 logsrvd/iolog_writer.c:364 -#: logsrvd/iolog_writer.c:370 logsrvd/iolog_writer.c:377 -#: logsrvd/iolog_writer.c:383 logsrvd/iolog_writer.c:567 -#: logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 logsrvd/logsrvd.c:310 -#: logsrvd/logsrvd.c:1050 logsrvd/logsrvd.c:1113 logsrvd/logsrvd.c:1582 -#: logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 logsrvd/logsrvd.c:1988 +#: 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:212 logsrvd/iolog_writer.c:95 +#: logsrvd/iolog_writer.c:100 logsrvd/iolog_writer.c:134 +#: logsrvd/iolog_writer.c:182 logsrvd/iolog_writer.c:215 +#: logsrvd/iolog_writer.c:225 logsrvd/iolog_writer.c:254 +#: logsrvd/iolog_writer.c:275 logsrvd/iolog_writer.c:287 +#: logsrvd/iolog_writer.c:297 logsrvd/iolog_writer.c:307 +#: logsrvd/iolog_writer.c:317 logsrvd/iolog_writer.c:329 +#: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 +#: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:1058 logsrvd/logsrvd.c:1121 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 #: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 #: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 #: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 @@ -84,29 +84,31 @@ #: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1743 #: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:216 #: logsrvd/logsrvd_journal.c:217 logsrvd/logsrvd_journal.c:273 -#: logsrvd/logsrvd_journal.c:433 logsrvd/logsrvd_journal.c:435 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:216 -#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:279 -#: logsrvd/logsrvd_local.c:417 logsrvd/logsrvd_local.c:466 -#: logsrvd/logsrvd_local.c:467 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:473 logsrvd/logsrvd_queue.c:159 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/logsrvd_relay.c:444 logsrvd/logsrvd_relay.c:743 -#: logsrvd/logsrvd_relay.c:850 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 -#: logsrvd/sendlog.c:291 logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 -#: logsrvd/sendlog.c:1801 plugins/sudoers/audit.c:116 -#: plugins/sudoers/auth/bsdauth.c:150 plugins/sudoers/auth/kerb5.c:121 +#: logsrvd/logsrvd_journal.c:278 logsrvd/logsrvd_journal.c:438 +#: logsrvd/logsrvd_journal.c:440 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:216 logsrvd/logsrvd_local.c:278 +#: logsrvd/logsrvd_local.c:279 logsrvd/logsrvd_local.c:417 +#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:467 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:473 +#: logsrvd/logsrvd_queue.c:159 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/logsrvd_relay.c:446 +#: logsrvd/logsrvd_relay.c:745 logsrvd/logsrvd_relay.c:852 +#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:292 +#: logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 logsrvd/sendlog.c:624 +#: logsrvd/sendlog.c:1810 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/bsdauth.c:152 plugins/sudoers/auth/kerb5.c:121 #: plugins/sudoers/auth/kerb5.c:148 plugins/sudoers/auth/pam.c:687 #: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:175 plugins/sudoers/cvtsudoers.c:192 -#: plugins/sudoers/cvtsudoers.c:203 plugins/sudoers/cvtsudoers.c:333 -#: plugins/sudoers/cvtsudoers.c:372 plugins/sudoers/cvtsudoers.c:392 -#: plugins/sudoers/cvtsudoers.c:537 plugins/sudoers/cvtsudoers.c:670 -#: plugins/sudoers/cvtsudoers.c:688 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:870 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:246 +#: plugins/sudoers/canon_path.c:129 plugins/sudoers/canon_path.c:160 +#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:132 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:193 +#: plugins/sudoers/cvtsudoers.c:204 plugins/sudoers/cvtsudoers.c:334 +#: plugins/sudoers/cvtsudoers.c:373 plugins/sudoers/cvtsudoers.c:393 +#: plugins/sudoers/cvtsudoers.c:538 plugins/sudoers/cvtsudoers.c:691 +#: plugins/sudoers/cvtsudoers.c:709 plugins/sudoers/cvtsudoers.c:883 +#: plugins/sudoers/cvtsudoers.c:891 plugins/sudoers/cvtsudoers.c:1386 +#: plugins/sudoers/cvtsudoers.c:1390 plugins/sudoers/cvtsudoers.c:1492 +#: plugins/sudoers/cvtsudoers_csv.c:183 plugins/sudoers/cvtsudoers_csv.c:247 #: 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:376 @@ -124,143 +126,152 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1158 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:212 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:689 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:691 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:294 plugins/sudoers/ldap_util.c:301 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:402 -#: plugins/sudoers/log_client.c:715 plugins/sudoers/log_client.c:736 -#: plugins/sudoers/log_client.c:1415 plugins/sudoers/log_client.c:1536 -#: plugins/sudoers/log_client.c:1636 plugins/sudoers/log_client.c:1972 -#: plugins/sudoers/log_client.c:2031 plugins/sudoers/logging.c:110 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/match_command.c:335 plugins/sudoers/match_command.c:603 -#: plugins/sudoers/match_command.c:654 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:776 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:267 plugins/sudoers/parse.c:284 -#: plugins/sudoers/parse.c:303 plugins/sudoers/parse.c:322 -#: plugins/sudoers/parse.c:339 plugins/sudoers/parse.c:362 -#: plugins/sudoers/parse.c:373 plugins/sudoers/parse_ldif.c:153 -#: plugins/sudoers/parse_ldif.c:184 plugins/sudoers/parse_ldif.c:253 -#: plugins/sudoers/parse_ldif.c:261 plugins/sudoers/parse_ldif.c:266 -#: plugins/sudoers/parse_ldif.c:342 plugins/sudoers/parse_ldif.c:353 -#: plugins/sudoers/parse_ldif.c:380 plugins/sudoers/parse_ldif.c:397 -#: plugins/sudoers/parse_ldif.c:409 plugins/sudoers/parse_ldif.c:413 -#: plugins/sudoers/parse_ldif.c:427 plugins/sudoers/parse_ldif.c:484 -#: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:628 -#: plugins/sudoers/parse_ldif.c:653 plugins/sudoers/parse_ldif.c:711 -#: plugins/sudoers/parse_ldif.c:728 plugins/sudoers/parse_ldif.c:756 -#: plugins/sudoers/parse_ldif.c:763 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 -#: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 -#: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 -#: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 -#: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:185 -#: plugins/sudoers/sssd.c:414 plugins/sudoers/sssd.c:479 -#: plugins/sudoers/sssd.c:505 plugins/sudoers/sssd.c:568 -#: plugins/sudoers/sssd.c:761 plugins/sudoers/strvec_join.c:53 -#: plugins/sudoers/stubs.c:112 plugins/sudoers/stubs.c:120 -#: plugins/sudoers/sudoers.c:354 plugins/sudoers/sudoers.c:380 -#: plugins/sudoers/sudoers.c:447 plugins/sudoers/sudoers.c:464 -#: plugins/sudoers/sudoers.c:505 plugins/sudoers/sudoers.c:849 -#: plugins/sudoers/sudoers.c:902 plugins/sudoers/sudoers.c:1054 -#: plugins/sudoers/sudoers.c:1114 plugins/sudoers/sudoers.c:1369 +#: plugins/sudoers/log_client.c:717 plugins/sudoers/log_client.c:739 +#: plugins/sudoers/log_client.c:744 plugins/sudoers/log_client.c:1423 +#: plugins/sudoers/log_client.c:1544 plugins/sudoers/log_client.c:1667 +#: plugins/sudoers/log_client.c:1986 plugins/sudoers/log_client.c:2045 +#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:846 plugins/sudoers/match_command.c:295 +#: plugins/sudoers/match_command.c:563 plugins/sudoers/match_command.c:629 +#: plugins/sudoers/match_command.c:724 plugins/sudoers/match_command.c:770 +#: plugins/sudoers/match_digest.c:82 plugins/sudoers/parse.c:279 +#: plugins/sudoers/parse.c:296 plugins/sudoers/parse.c:315 +#: plugins/sudoers/parse.c:334 plugins/sudoers/parse.c:351 +#: plugins/sudoers/parse.c:374 plugins/sudoers/parse.c:385 +#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 +#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:261 +#: plugins/sudoers/parse_ldif.c:266 plugins/sudoers/parse_ldif.c:342 +#: plugins/sudoers/parse_ldif.c:353 plugins/sudoers/parse_ldif.c:380 +#: plugins/sudoers/parse_ldif.c:397 plugins/sudoers/parse_ldif.c:409 +#: plugins/sudoers/parse_ldif.c:413 plugins/sudoers/parse_ldif.c:427 +#: plugins/sudoers/parse_ldif.c:484 plugins/sudoers/parse_ldif.c:598 +#: plugins/sudoers/parse_ldif.c:628 plugins/sudoers/parse_ldif.c:653 +#: plugins/sudoers/parse_ldif.c:711 plugins/sudoers/parse_ldif.c:728 +#: plugins/sudoers/parse_ldif.c:756 plugins/sudoers/parse_ldif.c:763 +#: plugins/sudoers/policy.c:622 plugins/sudoers/policy.c:1050 +#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:199 +#: plugins/sudoers/pwutil.c:270 plugins/sudoers/pwutil.c:348 +#: plugins/sudoers/pwutil.c:522 plugins/sudoers/pwutil.c:587 +#: plugins/sudoers/pwutil.c:659 plugins/sudoers/pwutil.c:857 +#: plugins/sudoers/pwutil.c:945 plugins/sudoers/pwutil.c:993 +#: plugins/sudoers/pwutil.c:1052 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 +#: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1325 plugins/sudoers/sudoers.c:1513 #: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 #: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 #: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 -#: plugins/sudoers/testsudoers.c:120 plugins/sudoers/testsudoers.c:224 -#: plugins/sudoers/testsudoers.c:241 plugins/sudoers/testsudoers.c:588 -#: plugins/sudoers/timestamp.c:451 plugins/sudoers/timestamp.c:495 -#: plugins/sudoers/timestamp.c:1017 plugins/sudoers/timestamp.c:1146 -#: plugins/sudoers/toke_util.c:78 plugins/sudoers/toke_util.c:106 -#: plugins/sudoers/toke_util.c:131 plugins/sudoers/toke_util.c:161 -#: plugins/sudoers/toke_util.c:200 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:150 plugins/sudoers/visudo.c:385 -#: plugins/sudoers/visudo.c:391 plugins/sudoers/visudo.c:502 -#: plugins/sudoers/visudo.c:1056 toke.l:1031 toke.l:1163 toke.l:1234 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 +#: plugins/sudoers/toke_util.c:161 plugins/sudoers/toke_util.c:200 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1087 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1299 msgid "unable to allocate memory" msgstr "не вдалося отримати потрібний об’єм пам’яті" -#: gram.y:623 +#: gram.y:622 msgid "a digest requires a path name" msgstr "для контрольної суми слід вказати шлях" -#: gram.y:645 +#: gram.y:644 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "значення «CWD» мають починатися з «/», «~» або «*»" -#: gram.y:651 +#: gram.y:650 msgid "\"CWD\" path too long" msgstr "Шлях «CWD» є надто довгим" -#: gram.y:661 +#: gram.y:660 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "значення «CHROOT» мають починатися з «/», «~» або «*»" -#: gram.y:667 +#: gram.y:666 msgid "\"CHROOT\" path too long" msgstr "Шлях «CHROOT» є надто довгим" -#: gram.y:802 +#: gram.y:801 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "синтаксична помилка, як назву замінника використано зарезервоване слово %s" -#: gram.y:825 +#: gram.y:824 msgid "invalid notbefore value" msgstr "некоректне значення notbefore" -#: gram.y:834 +#: gram.y:833 msgid "invalid notafter value" msgstr "некоректне значення notafter" -#: gram.y:844 plugins/sudoers/policy.c:385 +#: gram.y:843 plugins/sudoers/policy.c:381 msgid "timeout value too large" msgstr "значення часу очікування є надто великим" -#: gram.y:846 plugins/sudoers/policy.c:387 +#: gram.y:845 plugins/sudoers/policy.c:383 msgid "invalid timeout value" msgstr "некоректне значення часу очікування" -#: gram.y:967 plugins/sudoers/sudoers.c:1072 +#: gram.y:966 plugins/sudoers/sudoers.c:1192 msgid "command too long" msgstr "надто довга команда" -#: gram.y:1224 plugins/sudoers/check_aliases.c:96 -#: plugins/sudoers/defaults.c:1276 +#: gram.y:1000 +msgid "expected a fully-qualified path name" +msgstr "мало бути вказано назву шляху повністю" + +#: gram.y:1244 plugins/sudoers/check_aliases.c:96 +#: plugins/sudoers/defaults.c:1275 #, c-format msgid "%s:%d:%d: %s\n" msgstr "%s:%d:%d: %s\n" -#: gram.y:1278 +#: gram.y:1298 #, c-format msgid "Alias \"%s\" already defined" msgstr "Замінник «%s» вже визначено" -#: gram.y:1777 gram.y:1827 lib/eventlog/eventlog.c:235 -#: lib/eventlog/eventlog.c:757 lib/eventlog/eventlog.c:830 -#: lib/eventlog/eventlog.c:833 lib/eventlog/eventlog.c:1135 -#: lib/iolog/iolog_filter.c:142 lib/iolog/iolog_filter.c:202 -#: lib/iolog/iolog_filter.c:232 lib/iolog/iolog_json.c:150 -#: lib/iolog/iolog_json.c:381 lib/iolog/iolog_json.c:412 +#: gram.y:1808 gram.y:1819 gram.y:1901 lib/eventlog/eventlog.c:236 +#: lib/eventlog/eventlog.c:755 lib/eventlog/eventlog.c:828 +#: lib/eventlog/eventlog.c:831 lib/eventlog/eventlog.c:1133 +#: lib/eventlog/parse_json.c:185 lib/eventlog/parse_json.c:471 +#: lib/eventlog/parse_json.c:502 lib/iolog/iolog_filter.c:142 +#: lib/iolog/iolog_filter.c:202 lib/iolog/iolog_filter.c:232 #: 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 @@ -275,55 +286,56 @@ #: logsrvd/iolog_writer.c:316 logsrvd/iolog_writer.c:328 #: logsrvd/iolog_writer.c:364 logsrvd/iolog_writer.c:370 #: logsrvd/iolog_writer.c:377 logsrvd/iolog_writer.c:383 -#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:69 logsrvd/logsrvd.c:301 -#: logsrvd/logsrvd.c:310 logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:490 -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:611 -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:732 -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1439 logsrvd/logsrvd.c:1446 -#: logsrvd/logsrvd.c:1582 logsrvd/logsrvd.c:1587 logsrvd/logsrvd.c:1771 -#: logsrvd/logsrvd.c:1988 logsrvd/logsrvd_conf.c:357 -#: logsrvd/logsrvd_conf.c:370 logsrvd/logsrvd_conf.c:511 -#: logsrvd/logsrvd_conf.c:534 logsrvd/logsrvd_conf.c:538 -#: logsrvd/logsrvd_conf.c:556 logsrvd/logsrvd_conf.c:626 -#: logsrvd/logsrvd_conf.c:649 logsrvd/logsrvd_conf.c:678 -#: logsrvd/logsrvd_conf.c:692 logsrvd/logsrvd_conf.c:706 -#: logsrvd/logsrvd_conf.c:720 logsrvd/logsrvd_conf.c:734 -#: logsrvd/logsrvd_conf.c:748 logsrvd/logsrvd_conf.c:829 -#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1053 -#: logsrvd/logsrvd_conf.c:1448 logsrvd/logsrvd_conf.c:1595 -#: logsrvd/logsrvd_conf.c:1621 logsrvd/logsrvd_conf.c:1633 -#: logsrvd/logsrvd_conf.c:1640 logsrvd/logsrvd_conf.c:1646 -#: logsrvd/logsrvd_conf.c:1742 logsrvd/logsrvd_journal.c:76 -#: logsrvd/logsrvd_journal.c:125 logsrvd/logsrvd_journal.c:216 -#: logsrvd/logsrvd_journal.c:246 logsrvd/logsrvd_journal.c:250 -#: logsrvd/logsrvd_journal.c:258 logsrvd/logsrvd_journal.c:281 -#: logsrvd/logsrvd_journal.c:285 logsrvd/logsrvd_journal.c:433 -#: logsrvd/logsrvd_local.c:215 logsrvd/logsrvd_local.c:278 -#: logsrvd/logsrvd_local.c:466 logsrvd/logsrvd_local.c:472 -#: logsrvd/logsrvd_local.c:491 logsrvd/logsrvd_queue.c:158 -#: logsrvd/logsrvd_queue.c:189 logsrvd/logsrvd_queue.c:266 -#: logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 logsrvd/sendlog.c:291 -#: logsrvd/sendlog.c:338 logsrvd/sendlog.c:615 logsrvd/sendlog.c:1503 -#: logsrvd/sendlog.c:1510 logsrvd/sendlog.c:1733 logsrvd/sendlog.c:1801 -#: logsrvd/tls_init.c:305 logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 -#: plugins/sudoers/audit.c:116 plugins/sudoers/auth/pam.c:502 -#: plugins/sudoers/auth/pam.c:687 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/check_aliases.c:168 plugins/sudoers/cvtsudoers.c:131 -#: plugins/sudoers/cvtsudoers.c:174 plugins/sudoers/cvtsudoers.c:191 -#: plugins/sudoers/cvtsudoers.c:202 plugins/sudoers/cvtsudoers.c:332 -#: plugins/sudoers/cvtsudoers.c:536 plugins/sudoers/cvtsudoers.c:669 -#: plugins/sudoers/cvtsudoers.c:687 plugins/sudoers/cvtsudoers.c:862 -#: plugins/sudoers/cvtsudoers.c:869 plugins/sudoers/cvtsudoers.c:1365 -#: plugins/sudoers/cvtsudoers.c:1369 plugins/sudoers/cvtsudoers.c:1471 -#: plugins/sudoers/cvtsudoers_csv.c:182 plugins/sudoers/cvtsudoers_csv.c:245 -#: 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:375 -#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:437 -#: plugins/sudoers/cvtsudoers_ldif.c:448 plugins/sudoers/cvtsudoers_ldif.c:455 -#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:480 -#: plugins/sudoers/cvtsudoers_ldif.c:488 plugins/sudoers/cvtsudoers_ldif.c:635 -#: plugins/sudoers/cvtsudoers_merge.c:47 plugins/sudoers/cvtsudoers_merge.c:51 +#: logsrvd/iolog_writer.c:567 logsrvd/logsrv_util.c:92 logsrvd/logsrvd.c:323 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:530 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:668 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:1132 +#: logsrvd/logsrvd.c:1447 logsrvd/logsrvd.c:1454 logsrvd/logsrvd.c:1590 +#: logsrvd/logsrvd.c:1595 logsrvd/logsrvd.c:1782 logsrvd/logsrvd.c:1999 +#: logsrvd/logsrvd_conf.c:357 logsrvd/logsrvd_conf.c:370 +#: logsrvd/logsrvd_conf.c:511 logsrvd/logsrvd_conf.c:534 +#: logsrvd/logsrvd_conf.c:538 logsrvd/logsrvd_conf.c:556 +#: logsrvd/logsrvd_conf.c:626 logsrvd/logsrvd_conf.c:649 +#: logsrvd/logsrvd_conf.c:678 logsrvd/logsrvd_conf.c:692 +#: logsrvd/logsrvd_conf.c:706 logsrvd/logsrvd_conf.c:720 +#: logsrvd/logsrvd_conf.c:734 logsrvd/logsrvd_conf.c:748 +#: logsrvd/logsrvd_conf.c:829 logsrvd/logsrvd_conf.c:1036 +#: logsrvd/logsrvd_conf.c:1053 logsrvd/logsrvd_conf.c:1448 +#: logsrvd/logsrvd_conf.c:1595 logsrvd/logsrvd_conf.c:1621 +#: logsrvd/logsrvd_conf.c:1633 logsrvd/logsrvd_conf.c:1640 +#: logsrvd/logsrvd_conf.c:1646 logsrvd/logsrvd_conf.c:1742 +#: logsrvd/logsrvd_journal.c:76 logsrvd/logsrvd_journal.c:125 +#: logsrvd/logsrvd_journal.c:216 logsrvd/logsrvd_journal.c:246 +#: logsrvd/logsrvd_journal.c:250 logsrvd/logsrvd_journal.c:258 +#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:290 +#: logsrvd/logsrvd_journal.c:438 logsrvd/logsrvd_local.c:215 +#: logsrvd/logsrvd_local.c:278 logsrvd/logsrvd_local.c:466 +#: logsrvd/logsrvd_local.c:472 logsrvd/logsrvd_local.c:491 +#: logsrvd/logsrvd_queue.c:158 logsrvd/logsrvd_queue.c:189 +#: logsrvd/logsrvd_queue.c:266 logsrvd/sendlog.c:251 logsrvd/sendlog.c:260 +#: logsrvd/sendlog.c:292 logsrvd/sendlog.c:298 logsrvd/sendlog.c:347 +#: logsrvd/sendlog.c:624 logsrvd/sendlog.c:1512 logsrvd/sendlog.c:1519 +#: logsrvd/sendlog.c:1742 logsrvd/sendlog.c:1810 logsrvd/tls_init.c:305 +#: logsrvd/tls_init.c:329 logsrvd/tls_init.c:340 plugins/sudoers/audit.c:116 +#: plugins/sudoers/auth/pam.c:502 plugins/sudoers/auth/pam.c:687 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/canon_path.c:129 +#: plugins/sudoers/canon_path.c:160 plugins/sudoers/check_aliases.c:168 +#: plugins/sudoers/cvtsudoers.c:132 plugins/sudoers/cvtsudoers.c:175 +#: plugins/sudoers/cvtsudoers.c:192 plugins/sudoers/cvtsudoers.c:203 +#: plugins/sudoers/cvtsudoers.c:333 plugins/sudoers/cvtsudoers.c:537 +#: plugins/sudoers/cvtsudoers.c:690 plugins/sudoers/cvtsudoers.c:708 +#: plugins/sudoers/cvtsudoers.c:883 plugins/sudoers/cvtsudoers.c:890 +#: plugins/sudoers/cvtsudoers.c:1386 plugins/sudoers/cvtsudoers.c:1390 +#: plugins/sudoers/cvtsudoers.c:1492 plugins/sudoers/cvtsudoers_csv.c:182 +#: plugins/sudoers/cvtsudoers_csv.c:246 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:375 plugins/sudoers/cvtsudoers_ldif.c:429 +#: plugins/sudoers/cvtsudoers_ldif.c:437 plugins/sudoers/cvtsudoers_ldif.c:448 +#: plugins/sudoers/cvtsudoers_ldif.c:455 plugins/sudoers/cvtsudoers_ldif.c:467 +#: plugins/sudoers/cvtsudoers_ldif.c:480 plugins/sudoers/cvtsudoers_ldif.c:488 +#: plugins/sudoers/cvtsudoers_ldif.c:635 plugins/sudoers/cvtsudoers_merge.c:47 +#: plugins/sudoers/cvtsudoers_merge.c:51 #: plugins/sudoers/cvtsudoers_merge.c:353 #: plugins/sudoers/cvtsudoers_merge.c:399 #: plugins/sudoers/cvtsudoers_merge.c:445 @@ -335,42 +347,43 @@ #: plugins/sudoers/cvtsudoers_merge.c:633 #: plugins/sudoers/cvtsudoers_merge.c:1157 #: plugins/sudoers/cvtsudoers_merge.c:1231 plugins/sudoers/defaults.c:434 -#: plugins/sudoers/defaults.c:658 plugins/sudoers/defaults.c:1019 -#: plugins/sudoers/defaults.c:1187 plugins/sudoers/editor.c:197 +#: plugins/sudoers/defaults.c:657 plugins/sudoers/defaults.c:1018 +#: plugins/sudoers/defaults.c:1186 plugins/sudoers/editor.c:197 #: plugins/sudoers/env.c:263 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/filedigest.c:55 plugins/sudoers/filedigest.c:71 #: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:211 #: plugins/sudoers/interfaces.c:68 plugins/sudoers/iolog.c:268 -#: plugins/sudoers/iolog.c:668 plugins/sudoers/iolog.c:694 -#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:466 -#: plugins/sudoers/ldap.c:757 plugins/sudoers/ldap.c:921 -#: plugins/sudoers/ldap.c:1337 plugins/sudoers/ldap.c:1763 -#: plugins/sudoers/ldap.c:1800 plugins/sudoers/ldap.c:2016 -#: plugins/sudoers/ldap.c:2117 plugins/sudoers/ldap.c:2133 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:250 -#: plugins/sudoers/ldap_conf.c:302 plugins/sudoers/ldap_conf.c:338 -#: plugins/sudoers/ldap_conf.c:444 plugins/sudoers/ldap_conf.c:459 -#: plugins/sudoers/ldap_conf.c:564 plugins/sudoers/ldap_conf.c:597 -#: plugins/sudoers/ldap_conf.c:688 plugins/sudoers/ldap_conf.c:771 +#: plugins/sudoers/iolog.c:667 plugins/sudoers/iolog.c:693 +#: plugins/sudoers/ldap.c:161 plugins/sudoers/ldap.c:447 +#: plugins/sudoers/ldap.c:622 plugins/sudoers/ldap.c:786 +#: plugins/sudoers/ldap.c:1210 plugins/sudoers/ldap.c:1636 +#: plugins/sudoers/ldap.c:1673 plugins/sudoers/ldap.c:1888 +#: plugins/sudoers/ldap.c:1997 plugins/sudoers/ldap.c:2013 +#: plugins/sudoers/ldap_conf.c:215 plugins/sudoers/ldap_conf.c:247 +#: plugins/sudoers/ldap_conf.c:299 plugins/sudoers/ldap_conf.c:335 +#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 +#: plugins/sudoers/ldap_conf.c:562 plugins/sudoers/ldap_conf.c:595 +#: plugins/sudoers/ldap_conf.c:690 plugins/sudoers/ldap_conf.c:773 #: plugins/sudoers/ldap_util.c:293 plugins/sudoers/ldap_util.c:300 #: plugins/sudoers/ldap_util.c:614 plugins/sudoers/linux_audit.c:86 #: plugins/sudoers/log_client.c:117 plugins/sudoers/log_client.c:228 #: plugins/sudoers/log_client.c:250 plugins/sudoers/log_client.c:264 -#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:715 -#: plugins/sudoers/log_client.c:736 plugins/sudoers/log_client.c:1415 -#: plugins/sudoers/log_client.c:1536 plugins/sudoers/log_client.c:1636 -#: plugins/sudoers/log_client.c:1972 plugins/sudoers/log_client.c:2031 -#: plugins/sudoers/logging.c:110 plugins/sudoers/logging.c:188 -#: plugins/sudoers/logging.c:189 plugins/sudoers/logging.c:457 -#: plugins/sudoers/logging.c:672 plugins/sudoers/logging.c:809 -#: plugins/sudoers/logging.c:880 plugins/sudoers/logging.c:892 -#: plugins/sudoers/match_command.c:334 plugins/sudoers/match_command.c:602 -#: plugins/sudoers/match_command.c:653 plugins/sudoers/match_command.c:728 -#: plugins/sudoers/match_command.c:775 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:266 plugins/sudoers/parse.c:283 -#: plugins/sudoers/parse.c:302 plugins/sudoers/parse.c:321 -#: plugins/sudoers/parse.c:338 plugins/sudoers/parse.c:361 -#: plugins/sudoers/parse.c:372 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/log_client.c:402 plugins/sudoers/log_client.c:717 +#: plugins/sudoers/log_client.c:739 plugins/sudoers/log_client.c:744 +#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1544 +#: plugins/sudoers/log_client.c:1667 plugins/sudoers/log_client.c:1986 +#: plugins/sudoers/log_client.c:2045 plugins/sudoers/logging.c:110 +#: plugins/sudoers/logging.c:188 plugins/sudoers/logging.c:189 +#: plugins/sudoers/logging.c:457 plugins/sudoers/logging.c:690 +#: plugins/sudoers/logging.c:734 plugins/sudoers/logging.c:846 +#: plugins/sudoers/logging.c:899 plugins/sudoers/logging.c:906 +#: plugins/sudoers/match_command.c:294 plugins/sudoers/match_command.c:562 +#: plugins/sudoers/match_command.c:628 plugins/sudoers/match_command.c:724 +#: plugins/sudoers/match_command.c:769 plugins/sudoers/match_digest.c:82 +#: plugins/sudoers/parse.c:278 plugins/sudoers/parse.c:295 +#: plugins/sudoers/parse.c:314 plugins/sudoers/parse.c:333 +#: plugins/sudoers/parse.c:350 plugins/sudoers/parse.c:373 +#: plugins/sudoers/parse.c:384 plugins/sudoers/parse_ldif.c:152 #: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 #: plugins/sudoers/parse_ldif.c:260 plugins/sudoers/parse_ldif.c:265 #: plugins/sudoers/parse_ldif.c:341 plugins/sudoers/parse_ldif.c:352 @@ -380,56 +393,60 @@ #: plugins/sudoers/parse_ldif.c:598 plugins/sudoers/parse_ldif.c:627 #: plugins/sudoers/parse_ldif.c:652 plugins/sudoers/parse_ldif.c:710 #: plugins/sudoers/parse_ldif.c:727 plugins/sudoers/parse_ldif.c:755 -#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:154 -#: plugins/sudoers/policy.c:163 plugins/sudoers/policy.c:172 -#: plugins/sudoers/policy.c:201 plugins/sudoers/policy.c:370 -#: plugins/sudoers/policy.c:385 plugins/sudoers/policy.c:387 -#: plugins/sudoers/policy.c:425 plugins/sudoers/policy.c:434 -#: plugins/sudoers/policy.c:482 plugins/sudoers/policy.c:492 -#: plugins/sudoers/policy.c:501 plugins/sudoers/policy.c:510 -#: plugins/sudoers/policy.c:519 plugins/sudoers/policy.c:626 -#: plugins/sudoers/policy.c:1033 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/parse_ldif.c:762 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:166 +#: plugins/sudoers/policy.c:196 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:381 plugins/sudoers/policy.c:383 +#: plugins/sudoers/policy.c:421 plugins/sudoers/policy.c:430 +#: plugins/sudoers/policy.c:478 plugins/sudoers/policy.c:488 +#: plugins/sudoers/policy.c:497 plugins/sudoers/policy.c:506 +#: plugins/sudoers/policy.c:515 plugins/sudoers/policy.c:622 +#: plugins/sudoers/policy.c:1050 plugins/sudoers/prompt.c:93 #: plugins/sudoers/pwutil.c:199 plugins/sudoers/pwutil.c:270 #: plugins/sudoers/pwutil.c:348 plugins/sudoers/pwutil.c:522 #: plugins/sudoers/pwutil.c:587 plugins/sudoers/pwutil.c:659 #: plugins/sudoers/pwutil.c:857 plugins/sudoers/pwutil.c:945 #: plugins/sudoers/pwutil.c:993 plugins/sudoers/pwutil.c:1052 -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 plugins/sudoers/sssd.c:144 #: plugins/sudoers/sssd.c:185 plugins/sudoers/sssd.c:414 #: plugins/sudoers/sssd.c:479 plugins/sudoers/sssd.c:505 -#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:761 -#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:112 -#: plugins/sudoers/stubs.c:120 plugins/sudoers/sudoers.c:354 -#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:447 -#: plugins/sudoers/sudoers.c:464 plugins/sudoers/sudoers.c:505 -#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:902 -#: plugins/sudoers/sudoers.c:1054 plugins/sudoers/sudoers.c:1114 -#: plugins/sudoers/sudoers.c:1369 plugins/sudoers/sudoreplay.c:559 -#: plugins/sudoers/sudoreplay.c:562 plugins/sudoers/sudoreplay.c:1278 -#: plugins/sudoers/sudoreplay.c:1334 plugins/sudoers/sudoreplay.c:1530 -#: plugins/sudoers/sudoreplay.c:1534 plugins/sudoers/testsudoers.c:120 -#: plugins/sudoers/testsudoers.c:224 plugins/sudoers/testsudoers.c:241 -#: plugins/sudoers/testsudoers.c:588 plugins/sudoers/timestamp.c:451 -#: plugins/sudoers/timestamp.c:495 plugins/sudoers/timestamp.c:1017 -#: plugins/sudoers/timestamp.c:1146 plugins/sudoers/toke_util.c:78 +#: plugins/sudoers/sssd.c:568 plugins/sudoers/sssd.c:762 +#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:126 +#: plugins/sudoers/stubs.c:134 plugins/sudoers/sudoers.c:352 +#: plugins/sudoers/sudoers.c:378 plugins/sudoers/sudoers.c:441 +#: plugins/sudoers/sudoers.c:673 plugins/sudoers/sudoers.c:683 +#: plugins/sudoers/sudoers.c:824 plugins/sudoers/sudoers.c:890 +#: plugins/sudoers/sudoers.c:946 plugins/sudoers/sudoers.c:998 +#: plugins/sudoers/sudoers.c:1174 plugins/sudoers/sudoers.c:1241 +#: plugins/sudoers/sudoers.c:1324 plugins/sudoers/sudoers.c:1513 +#: plugins/sudoers/sudoreplay.c:559 plugins/sudoers/sudoreplay.c:562 +#: plugins/sudoers/sudoreplay.c:1278 plugins/sudoers/sudoreplay.c:1334 +#: plugins/sudoers/sudoreplay.c:1530 plugins/sudoers/sudoreplay.c:1534 +#: plugins/sudoers/testsudoers.c:123 plugins/sudoers/testsudoers.c:220 +#: plugins/sudoers/testsudoers.c:233 plugins/sudoers/testsudoers.c:250 +#: plugins/sudoers/testsudoers.c:617 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:520 plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1171 plugins/sudoers/toke_util.c:78 #: plugins/sudoers/toke_util.c:106 plugins/sudoers/toke_util.c:131 #: plugins/sudoers/toke_util.c:160 plugins/sudoers/toke_util.c:200 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:150 -#: plugins/sudoers/visudo.c:385 plugins/sudoers/visudo.c:391 -#: plugins/sudoers/visudo.c:502 plugins/sudoers/visudo.c:1056 toke.l:1031 -#: toke.l:1163 toke.l:1226 toke.l:1234 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:154 +#: plugins/sudoers/visudo.c:263 plugins/sudoers/visudo.c:388 +#: plugins/sudoers/visudo.c:394 plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:1065 plugins/sudoers/visudo.c:1086 +#: plugins/sudoers/visudo.c:1180 toke.l:1032 toke.l:1195 toke.l:1223 +#: toke.l:1288 toke.l:1299 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/eventlog/eventlog.c:303 +#: lib/eventlog/eventlog.c:304 #, c-format msgid "unable to dup stdin: %m" msgstr "не вдалося здублювати stdin: %m" -#: lib/eventlog/eventlog.c:345 +#: lib/eventlog/eventlog.c:346 #, c-format msgid "unable to execute %s: %m" msgstr "не вдалося виконати %s: %m" @@ -448,96 +465,96 @@ msgid "unable to open pipe: %m" msgstr "не вдалося відкрити канал: %m" -#: lib/eventlog/eventlog.c:960 +#: lib/eventlog/eventlog.c:958 #, c-format msgid "%8s : %s" msgstr "%8s : %s" -#: lib/eventlog/eventlog.c:989 +#: lib/eventlog/eventlog.c:987 #, c-format msgid "%8s : (command continued) %s" msgstr "%8s : (команда продовжується) %s" -#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1242 -#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 -#, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "некоректний формальний вираз «%s»: %s" - -#: lib/iolog/iolog_json.c:140 +#: lib/eventlog/parse_json.c:175 #, c-format msgid "expected JSON_STRING, got %d" msgstr "мало бути використано JSON_STRING, отримано %d" -#: lib/iolog/iolog_json.c:145 +#: lib/eventlog/parse_json.c:180 msgid "JSON_ARRAY too large" msgstr "JSON_ARRAY є надто великим" -#: lib/iolog/iolog_json.c:404 +#: lib/eventlog/parse_json.c:494 msgid "missing double quote in name" msgstr "пропущено подвійні лапки у назві" -#: lib/iolog/iolog_json.c:511 +#: lib/eventlog/parse_json.c:612 msgid "missing JSON_OBJECT" msgstr "пропущено JSON_OBJECT" -#: lib/iolog/iolog_json.c:515 +#: lib/eventlog/parse_json.c:616 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "мало бути використано JSON_OBJECT, отримано %d" -#: lib/iolog/iolog_json.c:632 +#: lib/eventlog/parse_json.c:750 #, c-format msgid "json stack exhausted (max %u frames)" msgstr "вичерпано стек json (у стеку має бути не більше %u кадрів)" -#: lib/iolog/iolog_json.c:706 +#: lib/eventlog/parse_json.c:828 msgid "objects must consist of name:value pairs" msgstr "об'єкти мають складатися з пар «назва:значення»" -#: lib/iolog/iolog_json.c:711 lib/iolog/iolog_json.c:742 -#: lib/iolog/iolog_json.c:786 lib/iolog/iolog_json.c:808 -#: lib/iolog/iolog_json.c:830 lib/iolog/iolog_json.c:852 -#: lib/iolog/iolog_json.c:874 +#: lib/eventlog/parse_json.c:833 lib/eventlog/parse_json.c:864 +#: lib/eventlog/parse_json.c:908 lib/eventlog/parse_json.c:930 +#: lib/eventlog/parse_json.c:952 lib/eventlog/parse_json.c:974 +#: lib/eventlog/parse_json.c:996 msgid "missing separator between values" msgstr "пропущено роздільник між значеннями" -#: lib/iolog/iolog_json.c:726 lib/iolog/iolog_json.c:900 +#: lib/eventlog/parse_json.c:848 lib/eventlog/parse_json.c:1022 msgid "unmatched close brace" msgstr "завершальна фігурна дужка без початкової" -#: lib/iolog/iolog_json.c:737 +#: lib/eventlog/parse_json.c:859 msgid "unexpected array" msgstr "неочікуваний масив" -#: lib/iolog/iolog_json.c:757 lib/iolog/iolog_json.c:903 +#: lib/eventlog/parse_json.c:879 lib/eventlog/parse_json.c:1025 msgid "unmatched close bracket" msgstr "завершальна дужка без початкової" -#: lib/iolog/iolog_json.c:768 +#: lib/eventlog/parse_json.c:890 msgid "unexpected string" msgstr "неочікуваний рядок" -#: lib/iolog/iolog_json.c:779 +#: lib/eventlog/parse_json.c:901 msgid "missing colon after name" msgstr "пропущено двокрапку після назви" -#: lib/iolog/iolog_json.c:800 lib/iolog/iolog_json.c:822 +#: lib/eventlog/parse_json.c:922 lib/eventlog/parse_json.c:944 msgid "unexpected boolean" msgstr "неочікуване булеве значення" -#: lib/iolog/iolog_json.c:844 +#: lib/eventlog/parse_json.c:966 msgid "unexpected null" msgstr "неочікуване порожнє значення" -#: lib/iolog/iolog_json.c:865 +#: lib/eventlog/parse_json.c:987 msgid "unexpected number" msgstr "неочікуване число" -#: lib/iolog/iolog_json.c:912 +#: lib/eventlog/parse_json.c:1033 msgid "parse error" msgstr "помилка обробки" +#: lib/iolog/iolog_filter.c:133 plugins/sudoers/defaults.c:1241 +#: plugins/sudoers/sudoreplay.c:1290 plugins/sudoers/sudoreplay.c:1586 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "некоректний формальний вираз «%s»: %s" + #: lib/iolog/iolog_legacy.c:65 #, c-format msgid "%s: invalid log file" @@ -574,13 +591,13 @@ msgstr "%s існує, але не є каталогом (0%o)" #: lib/iolog/iolog_mkdirs.c:123 lib/iolog/iolog_mkdtemp.c:79 -#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:209 +#: logsrvd/iolog_writer.c:781 plugins/sudoers/timestamp.c:234 #, c-format msgid "unable to mkdir %s" msgstr "не вдалося створити каталог %s" -#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:757 -#: plugins/sudoers/visudo.c:791 plugins/sudoers/visudo.c:797 +#: lib/iolog/iolog_mkdtemp.c:84 plugins/sudoers/visudo.c:760 +#: plugins/sudoers/visudo.c:794 plugins/sudoers/visudo.c:800 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "не вдалося змінити режим доступу до %s на значення 0%o" @@ -612,8 +629,8 @@ msgid "%s: protocol error: NULL value found in %s" msgstr "%s: помилка протоколу: виявлено значення NULL у %s" -#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:980 -#: plugins/sudoers/policy.c:593 +#: logsrvd/iolog_writer.c:141 plugins/sudoers/logging.c:993 +#: plugins/sudoers/policy.c:589 msgid "unable to generate UUID" msgstr "не вдалося створити UUID" @@ -665,26 +682,26 @@ msgid "invalid I/O log %s: %s referenced but not present" msgstr "некоректний журнал введення-виведення %s: маємо посилання на %s без самого запису" -#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:385 +#: logsrvd/iolog_writer.c:763 logsrvd/logsrvd_journal.c:390 #, c-format msgid "%s: unable to find resume point [%lld, %ld]" msgstr "%s: не вдалося знайти точку відновлення [%lld, %ld]" -#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:428 +#: logsrvd/iolog_writer.c:785 logsrvd/logsrvd_journal.c:433 #: logsrvd/logsrvd_queue.c:115 logsrvd/tls_init.c:256 -#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:730 -#: plugins/sudoers/cvtsudoers.c:751 plugins/sudoers/cvtsudoers.c:1431 -#: plugins/sudoers/cvtsudoers_csv.c:695 plugins/sudoers/cvtsudoers_json.c:898 -#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1152 -#: plugins/sudoers/sudoers.c:1182 plugins/sudoers/sudoreplay.c:1496 -#: plugins/sudoers/timestamp.c:460 plugins/sudoers/tsdump.c:128 -#: plugins/sudoers/visudo.c:975 +#: plugins/sudoers/check.c:292 plugins/sudoers/cvtsudoers.c:751 +#: plugins/sudoers/cvtsudoers.c:772 plugins/sudoers/cvtsudoers.c:1452 +#: plugins/sudoers/cvtsudoers_csv.c:697 plugins/sudoers/cvtsudoers_json.c:902 +#: plugins/sudoers/cvtsudoers_ldif.c:709 plugins/sudoers/sudoers.c:1310 +#: plugins/sudoers/sudoers.c:1334 plugins/sudoers/sudoreplay.c:1496 +#: plugins/sudoers/timestamp.c:485 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:982 #, c-format msgid "unable to open %s" msgstr "не вдалося відкрити %s" -#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:105 -#: logsrvd/logsrv_util.c:112 plugins/sudoers/sudoreplay.c:355 +#: logsrvd/iolog_writer.c:797 logsrvd/logsrv_util.c:111 +#: logsrvd/logsrv_util.c:118 plugins/sudoers/sudoreplay.c:355 #: plugins/sudoers/sudoreplay.c:361 #, c-format msgid "unable to open %s/%s" @@ -700,17 +717,17 @@ msgid "unable to rename %s to %s" msgstr "не вдалося перейменувати %s на %s" -#: logsrvd/logsrv_util.c:147 logsrvd/logsrv_util.c:176 +#: logsrvd/logsrv_util.c:153 logsrvd/logsrv_util.c:182 #, c-format msgid "%s/%s: unable to find resume point [%lld, %ld]" msgstr "%s/%s: не вдалося знайти точку відновлення [%lld, %ld]" -#: logsrvd/logsrv_util.c:159 +#: logsrvd/logsrv_util.c:165 #, c-format msgid "missing I/O log file %s/%s" msgstr "не вистачає файла журналу введення-виведення, %s/%s" -#: logsrvd/logsrv_util.c:166 +#: logsrvd/logsrv_util.c:172 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: неможливо виконати позиціювання вперед на %zu" @@ -719,31 +736,31 @@ msgid "unable to connect to relay" msgstr "не вдалося встановити з'єднання із ретранслятором" -#: logsrvd/logsrvd.c:330 logsrvd/logsrvd_relay.c:842 +#: logsrvd/logsrvd.c:338 logsrvd/logsrvd_relay.c:844 #, c-format msgid "server message too large: %zu" msgstr "надто велике повідомлення сервера: %zu" -#: logsrvd/logsrvd.c:422 logsrvd/logsrvd.c:545 logsrvd/logsrvd.c:631 -#: logsrvd/logsrvd.c:873 logsrvd/logsrvd.c:887 logsrvd/logsrvd.c:1049 -#: logsrvd/logsrvd.c:1174 logsrvd/logsrvd.c:1347 logsrvd/logsrvd.c:1365 -#: logsrvd/logsrvd.c:1464 logsrvd/logsrvd.c:1589 logsrvd/logsrvd.c:1773 -#: logsrvd/logsrvd_journal.c:497 logsrvd/logsrvd_local.c:238 +#: logsrvd/logsrvd.c:430 logsrvd/logsrvd.c:553 logsrvd/logsrvd.c:639 +#: logsrvd/logsrvd.c:881 logsrvd/logsrvd.c:895 logsrvd/logsrvd.c:1057 +#: logsrvd/logsrvd.c:1182 logsrvd/logsrvd.c:1355 logsrvd/logsrvd.c:1373 +#: logsrvd/logsrvd.c:1472 logsrvd/logsrvd.c:1597 logsrvd/logsrvd.c:1784 +#: logsrvd/logsrvd_journal.c:502 logsrvd/logsrvd_local.c:238 #: logsrvd/logsrvd_queue.c:164 logsrvd/logsrvd_relay.c:172 #: logsrvd/logsrvd_relay.c:249 logsrvd/logsrvd_relay.c:253 -#: logsrvd/logsrvd_relay.c:389 logsrvd/logsrvd_relay.c:581 -#: logsrvd/logsrvd_relay.c:742 logsrvd/logsrvd_relay.c:1131 -#: logsrvd/sendlog.c:1291 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 -#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:278 -#: plugins/sudoers/iolog.c:1031 plugins/sudoers/iolog.c:1164 -#: plugins/sudoers/iolog.c:1262 plugins/sudoers/log_client.c:121 +#: logsrvd/logsrvd_relay.c:391 logsrvd/logsrvd_relay.c:583 +#: logsrvd/logsrvd_relay.c:744 logsrvd/logsrvd_relay.c:1133 +#: logsrvd/sendlog.c:1300 logsrvd/tls_client.c:136 logsrvd/tls_client.c:152 +#: logsrvd/tls_client.c:216 plugins/sudoers/audit.c:277 +#: plugins/sudoers/iolog.c:1030 plugins/sudoers/iolog.c:1163 +#: plugins/sudoers/iolog.c:1261 plugins/sudoers/log_client.c:121 #: plugins/sudoers/log_client.c:343 plugins/sudoers/log_client.c:359 -#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:611 -#: plugins/sudoers/log_client.c:618 plugins/sudoers/log_client.c:1103 -#: plugins/sudoers/log_client.c:1384 plugins/sudoers/log_client.c:1425 -#: plugins/sudoers/log_client.c:1433 plugins/sudoers/log_client.c:1592 -#: plugins/sudoers/log_client.c:1710 plugins/sudoers/log_client.c:2039 -#: plugins/sudoers/log_client.c:2047 plugins/sudoers/logging.c:147 +#: plugins/sudoers/log_client.c:407 plugins/sudoers/log_client.c:613 +#: plugins/sudoers/log_client.c:620 plugins/sudoers/log_client.c:1111 +#: plugins/sudoers/log_client.c:1392 plugins/sudoers/log_client.c:1433 +#: plugins/sudoers/log_client.c:1441 plugins/sudoers/log_client.c:1600 +#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:2053 +#: plugins/sudoers/log_client.c:2061 plugins/sudoers/logging.c:147 #: plugins/sudoers/logging.c:205 plugins/sudoers/sudoreplay.c:519 #: plugins/sudoers/sudoreplay.c:566 plugins/sudoers/sudoreplay.c:808 #: plugins/sudoers/sudoreplay.c:920 plugins/sudoers/sudoreplay.c:1011 @@ -753,189 +770,190 @@ msgid "unable to add event to queue" msgstr "не вдалося додати подію до черги обробки" -#: logsrvd/logsrvd.c:446 logsrvd/logsrvd.c:483 logsrvd/logsrvd.c:515 -#: logsrvd/logsrvd.c:569 logsrvd/logsrvd.c:648 logsrvd/logsrvd.c:684 -#: logsrvd/logsrvd.c:720 logsrvd/logsrvd.c:756 logsrvd/logsrvd_relay.c:510 -#: logsrvd/logsrvd_relay.c:543 +#: logsrvd/logsrvd.c:454 logsrvd/logsrvd.c:491 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:577 logsrvd/logsrvd.c:656 logsrvd/logsrvd.c:692 +#: logsrvd/logsrvd.c:728 logsrvd/logsrvd.c:764 logsrvd/logsrvd_relay.c:512 +#: logsrvd/logsrvd_relay.c:545 #, c-format msgid "unexpected state %d for %s" msgstr "неочікуваний стан %d %s" -#: logsrvd/logsrvd.c:447 logsrvd/logsrvd.c:484 logsrvd/logsrvd.c:516 -#: logsrvd/logsrvd.c:570 logsrvd/logsrvd.c:649 logsrvd/logsrvd.c:685 -#: logsrvd/logsrvd.c:721 logsrvd/logsrvd.c:757 logsrvd/logsrvd_relay.c:512 -#: logsrvd/logsrvd_relay.c:545 +#: logsrvd/logsrvd.c:455 logsrvd/logsrvd.c:492 logsrvd/logsrvd.c:524 +#: logsrvd/logsrvd.c:578 logsrvd/logsrvd.c:657 logsrvd/logsrvd.c:693 +#: logsrvd/logsrvd.c:729 logsrvd/logsrvd.c:765 logsrvd/logsrvd_relay.c:514 +#: logsrvd/logsrvd_relay.c:547 msgid "state machine error" msgstr "помилка скінченного автомата" -#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:454 +#: logsrvd/logsrvd.c:461 logsrvd/logsrvd.c:462 msgid "invalid AcceptMessage" msgstr "некоректне AcceptMessage" -#: logsrvd/logsrvd.c:490 logsrvd/logsrvd.c:491 +#: logsrvd/logsrvd.c:498 logsrvd/logsrvd.c:499 msgid "invalid RejectMessage" msgstr "некоректне RejectMessage" -#: logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:523 +#: logsrvd/logsrvd.c:530 logsrvd/logsrvd.c:531 msgid "invalid ExitMessage" msgstr "некоректне ExitMessage" -#: logsrvd/logsrvd.c:576 logsrvd/logsrvd.c:577 +#: logsrvd/logsrvd.c:584 logsrvd/logsrvd.c:585 msgid "invalid RestartMessage" msgstr "некоректне RestartMessage" -#: logsrvd/logsrvd.c:611 logsrvd/logsrvd.c:612 +#: logsrvd/logsrvd.c:619 logsrvd/logsrvd.c:620 msgid "invalid AlertMessage" msgstr "некоректне AlertMessage" -#: logsrvd/logsrvd.c:653 logsrvd/logsrvd.c:689 logsrvd/logsrvd.c:725 +#: logsrvd/logsrvd.c:661 logsrvd/logsrvd.c:697 logsrvd/logsrvd.c:733 #, c-format msgid "%s: unexpected IoBuffer" msgstr "%s: неочікуване значення IoBuffer" -#: logsrvd/logsrvd.c:654 logsrvd/logsrvd.c:690 logsrvd/logsrvd.c:726 +#: logsrvd/logsrvd.c:662 logsrvd/logsrvd.c:698 logsrvd/logsrvd.c:734 msgid "protocol error" msgstr "помилка протоколу" -#: logsrvd/logsrvd.c:660 logsrvd/logsrvd.c:661 +#: logsrvd/logsrvd.c:668 logsrvd/logsrvd.c:669 msgid "invalid IoBuffer" msgstr "некоректне IoBuffer" -#: logsrvd/logsrvd.c:696 logsrvd/logsrvd.c:697 +#: logsrvd/logsrvd.c:704 logsrvd/logsrvd.c:705 msgid "invalid ChangeWindowSize" msgstr "некоректне ChangeWindowSize" -#: logsrvd/logsrvd.c:732 logsrvd/logsrvd.c:733 +#: logsrvd/logsrvd.c:740 logsrvd/logsrvd.c:741 msgid "invalid CommandSuspend" msgstr "некоректне CommandSuspend" -#: logsrvd/logsrvd.c:782 logsrvd/logsrvd_journal.c:296 -#: logsrvd/logsrvd_relay.c:652 logsrvd/sendlog.c:1192 -#: plugins/sudoers/log_client.c:1582 +#: logsrvd/logsrvd.c:790 logsrvd/logsrvd_journal.c:301 +#: logsrvd/logsrvd_relay.c:654 logsrvd/sendlog.c:1201 +#: plugins/sudoers/log_client.c:1590 #, c-format msgid "unable to unpack %s size %zu" msgstr "не вдалося розпакувати %s, розмір %zu" -#: logsrvd/logsrvd.c:827 logsrvd/logsrvd_journal.c:370 -#: logsrvd/logsrvd_relay.c:676 +#: logsrvd/logsrvd.c:835 logsrvd/logsrvd_journal.c:375 +#: logsrvd/logsrvd_relay.c:678 #, c-format msgid "unexpected type_case value %d in %s from %s" msgstr "неочікуване значення type_case %d у %s від %s" -#: logsrvd/logsrvd.c:829 +#: logsrvd/logsrvd.c:837 msgid "unrecognized ClientMessage type" msgstr "нерозпізнаний тип ClientMessage" -#: logsrvd/logsrvd.c:919 +#: logsrvd/logsrvd.c:927 #, c-format msgid "timed out writing to client %s" msgstr "перевищено час очікування на завершення запису до клієнта %s" -#: logsrvd/logsrvd.c:924 logsrvd/logsrvd_relay.c:914 logsrvd/sendlog.c:1395 +#: logsrvd/logsrvd.c:932 logsrvd/logsrvd_relay.c:916 logsrvd/sendlog.c:1404 #, c-format msgid "missing write buffer for client %s" msgstr "пропущено буфер запису для клієнта %s" -#: logsrvd/logsrvd.c:1020 +#: logsrvd/logsrvd.c:1028 #, c-format msgid "timed out reading from client %s" msgstr "перевищено час очікування на читання з клієнта %s" -#: logsrvd/logsrvd.c:1061 logsrvd/logsrvd_relay.c:777 +#: logsrvd/logsrvd.c:1069 logsrvd/logsrvd_relay.c:779 #, c-format msgid "EOF from %s without proper TLS shutdown" msgstr "EOF від %s без належного закриття TLS" -#: logsrvd/logsrvd.c:1105 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:322 -#: plugins/sudoers/log_client.c:721 +#: logsrvd/logsrvd.c:1113 logsrvd/logsrvd_relay.c:205 logsrvd/sendlog.c:331 +#: plugins/sudoers/log_client.c:723 #, c-format msgid "client message too large: %zu" msgstr "повідомлення клієнта є надто довгим: %zu" -#: logsrvd/logsrvd.c:1106 logsrvd/logsrvd_journal.c:259 +#: logsrvd/logsrvd.c:1114 logsrvd/logsrvd_journal.c:259 #: logsrvd/logsrvd_journal.c:260 msgid "client message too large" msgstr "повідомлення клієнта є надто великим" -#: logsrvd/logsrvd.c:1124 logsrvd/logsrvd.c:1125 +#: logsrvd/logsrvd.c:1132 logsrvd/logsrvd.c:1133 msgid "invalid ClientMessage" msgstr "некоректне ClientMessage" -#: logsrvd/logsrvd.c:1425 +#: logsrvd/logsrvd.c:1433 msgid "unable to get remote IP addr" msgstr "не вдалося отримати віддалену IP-адресу" -#: logsrvd/logsrvd.c:1456 logsrvd/tls_client.c:203 +#: logsrvd/logsrvd.c:1464 logsrvd/tls_client.c:203 #: plugins/sudoers/log_client.c:281 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Не вдалося долучити дані користувача до об'єкта SSL: %s" -#: logsrvd/logsrvd.c:1639 logsrvd/logsrvd.c:1992 +#: logsrvd/logsrvd.c:1647 logsrvd/logsrvd.c:2003 msgid "unable to setup listen socket" msgstr "не вдалося налаштувати сокет очікування на дані" -#: logsrvd/logsrvd.c:1756 +#: logsrvd/logsrvd.c:1767 #, c-format msgid "unexpected signal %d" msgstr "неочікуваний сигнал %d" -#: logsrvd/logsrvd.c:1894 +#: logsrvd/logsrvd.c:1905 msgid "sudo log server" msgstr "сервер журналу sudo" -#: logsrvd/logsrvd.c:1896 logsrvd/sendlog.c:121 +#: logsrvd/logsrvd.c:1907 logsrvd/sendlog.c:121 msgid "Options:" msgstr "Параметри:" -#: logsrvd/logsrvd.c:1898 +#: logsrvd/logsrvd.c:1909 msgid "path to configuration file" msgstr "шлях до файла налаштувань" -#: logsrvd/logsrvd.c:1900 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1911 logsrvd/sendlog.c:123 msgid "display help message and exit" msgstr "показати довідкове повідомлення і завершити роботу" -#: logsrvd/logsrvd.c:1902 +#: logsrvd/logsrvd.c:1913 msgid "do not fork, run in the foreground" msgstr "не відгалужувати, не переходити у фоновий режим під час виконання" -#: logsrvd/logsrvd.c:1904 +#: logsrvd/logsrvd.c:1915 msgid "percent chance connections will drop" msgstr "ймовірність розірвання з'єднання" -#: logsrvd/logsrvd.c:1906 logsrvd/sendlog.c:153 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:153 msgid "display version information and exit" msgstr "показати дані щодо версії і завершити роботу" -#: logsrvd/logsrvd.c:1956 logsrvd/sendlog.c:1702 +#: logsrvd/logsrvd.c:1967 logsrvd/sendlog.c:1711 msgid "Protobuf-C version 1.3 or higher required" msgstr "Потрібна версія Protobuf-C 1.3 або новіша" -#: logsrvd/logsrvd.c:1972 +#: logsrvd/logsrvd.c:1983 #, c-format msgid "invalid random drop value: %s" msgstr "некоректне значення ймовірності скидання: %s" -#: logsrvd/logsrvd.c:1975 logsrvd/sendlog.c:1756 -#: plugins/sudoers/cvtsudoers.c:246 plugins/sudoers/sudoreplay.c:294 -#: plugins/sudoers/visudo.c:182 +#: logsrvd/logsrvd.c:1986 logsrvd/sendlog.c:1765 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/sudoreplay.c:294 +#: plugins/sudoers/visudo.c:186 #, c-format msgid "%s version %s\n" msgstr "%s, версія %s\n" #: logsrvd/logsrvd_conf.c:422 plugins/sudoers/check.c:358 #: plugins/sudoers/exptilde.c:85 plugins/sudoers/iolog.c:122 -#: plugins/sudoers/policy.c:1271 plugins/sudoers/sudoers.c:512 -#: plugins/sudoers/sudoers.c:1411 plugins/sudoers/testsudoers.c:215 -#: plugins/sudoers/testsudoers.c:382 +#: plugins/sudoers/sudoers.c:448 plugins/sudoers/sudoers.c:939 +#: plugins/sudoers/sudoers.c:1041 plugins/sudoers/sudoers.c:1062 +#: plugins/sudoers/sudoers.c:1555 plugins/sudoers/testsudoers.c:224 +#: plugins/sudoers/testsudoers.c:393 #, c-format msgid "unknown user %s" msgstr "невідомий користувач %s" #: logsrvd/logsrvd_conf.c:439 plugins/sudoers/iolog.c:148 -#: plugins/sudoers/sudoers.c:517 plugins/sudoers/sudoers.c:1445 -#: plugins/sudoers/testsudoers.c:406 +#: plugins/sudoers/sudoers.c:453 plugins/sudoers/sudoers.c:1589 +#: plugins/sudoers/testsudoers.c:417 #, c-format msgid "unknown group %s" msgstr "невідома група %s" @@ -1007,8 +1025,8 @@ msgid "%s:%d [%s] illegal key: %s" msgstr "%s:%d [%s] заборонений ключ: %s" -#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:268 -#: plugins/sudoers/logging.c:1033 +#: logsrvd/logsrvd_conf.c:1281 plugins/sudoers/cvtsudoers.c:269 +#: plugins/sudoers/logging.c:1046 #, c-format msgid "unable to open log file %s" msgstr "не вдалося відкрити файл журналу %s" @@ -1021,13 +1039,13 @@ msgid "unable to initialize relay TLS context" msgstr "не вдалося ініціалізувати контекст ретранслятора TLS" -#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:424 -#: logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:149 logsrvd/logsrvd_journal.c:429 +#: logsrvd/logsrvd_journal.c:434 msgid "unable to create journal file" msgstr "не вдалося створити файл журналу" #: logsrvd/logsrvd_journal.c:153 logsrvd/logsrvd_queue.c:109 -#: plugins/sudoers/visudo.c:1028 +#: plugins/sudoers/visudo.c:1038 #, c-format msgid "unable to lock %s" msgstr "не вдалося заблокувати %s" @@ -1040,8 +1058,8 @@ msgid "unable to open journal file" msgstr "не вдалося відкрити файл журналу" -#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:460 -#: logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:185 logsrvd/logsrvd_journal.c:465 +#: logsrvd/logsrvd_journal.c:470 msgid "unable to write journal file" msgstr "не вдалося записати файл журналу" @@ -1050,20 +1068,20 @@ msgstr "не вдалося перейменувати файл журналу" #: logsrvd/logsrvd_journal.c:247 logsrvd/logsrvd_journal.c:248 -#: logsrvd/logsrvd_journal.c:282 logsrvd/logsrvd_journal.c:283 +#: logsrvd/logsrvd_journal.c:287 logsrvd/logsrvd_journal.c:288 msgid "unexpected EOF reading journal file" msgstr "неочікуваний символ кінця файла під час читання файла журналу" #: logsrvd/logsrvd_journal.c:251 logsrvd/logsrvd_journal.c:252 -#: logsrvd/logsrvd_journal.c:286 logsrvd/logsrvd_journal.c:287 +#: logsrvd/logsrvd_journal.c:291 logsrvd/logsrvd_journal.c:292 msgid "error reading journal file" msgstr "помилка під час спроби читання файла журналу" -#: logsrvd/logsrvd_journal.c:298 logsrvd/logsrvd_journal.c:384 +#: logsrvd/logsrvd_journal.c:303 logsrvd/logsrvd_journal.c:389 msgid "invalid journal file, unable to restart" msgstr "некоректний файл журналу, неможливо перезапустити" -#: logsrvd/logsrvd_journal.c:443 +#: logsrvd/logsrvd_journal.c:448 #, c-format msgid "unable to seek to [%lld, %ld] in journal file %s" msgstr "не вдалося встановити позицію [%lld, %ld] у файлі журналу %s" @@ -1121,7 +1139,7 @@ #: logsrvd/logsrvd_local.c:599 logsrvd/logsrvd_local.c:607 #: logsrvd/logsrvd_local.c:655 logsrvd/logsrvd_local.c:690 -#: plugins/sudoers/sudoreplay.c:344 +#: plugins/sudoers/sudoreplay.c:344 toke.l:982 toke.l:985 #, c-format msgid "%s/%s: %s" msgstr "%s/%s: %s" @@ -1142,69 +1160,69 @@ msgid "error writing CommandSuspend" msgstr "помилка під час спроби записати CommandSuspend" -#: logsrvd/logsrvd_relay.c:435 +#: logsrvd/logsrvd_relay.c:437 msgid "TLS handshake with relay host failed" msgstr "помилка спроби ініціалізації зв'язку TLS із вузлом ретранслятора" -#: logsrvd/logsrvd_relay.c:463 +#: logsrvd/logsrvd_relay.c:465 msgid "unable to connect to relay host" msgstr "не вдалося встановити з'єднання із вузлом ретранслятора" -#: logsrvd/logsrvd_relay.c:518 +#: logsrvd/logsrvd_relay.c:520 #, c-format msgid "%s: invalid ServerHello, missing server_id" msgstr "%s: некоректне значення ServerHello — пропущено server_id" -#: logsrvd/logsrvd_relay.c:520 logsrvd/sendlog.c:1096 -#: plugins/sudoers/log_client.c:1468 +#: logsrvd/logsrvd_relay.c:522 logsrvd/sendlog.c:1105 +#: plugins/sudoers/log_client.c:1476 msgid "invalid ServerHello" msgstr "некоректне ServerHello" -#: logsrvd/logsrvd_relay.c:679 +#: logsrvd/logsrvd_relay.c:681 msgid "unrecognized ServerMessage type" msgstr "нерозпізнаний тип ServerMessage" -#: logsrvd/logsrvd_relay.c:708 +#: logsrvd/logsrvd_relay.c:710 #, c-format msgid "timed out reading from relay %s (%s)" msgstr "перевищено час очікування на читання з ретранслятора %s (%s)" -#: logsrvd/logsrvd_relay.c:710 +#: logsrvd/logsrvd_relay.c:712 msgid "timeout reading from relay" msgstr "перевищено час очікування на читання з ретранслятора" -#: logsrvd/logsrvd_relay.c:762 +#: logsrvd/logsrvd_relay.c:764 msgid "relay host name does not match certificate" msgstr "назва вузла ретранслятора не відповідає сертифікату" -#: logsrvd/logsrvd_relay.c:768 logsrvd/logsrvd_relay.c:782 -#: logsrvd/logsrvd_relay.c:789 +#: logsrvd/logsrvd_relay.c:770 logsrvd/logsrvd_relay.c:784 +#: logsrvd/logsrvd_relay.c:791 msgid "error reading from relay" msgstr "помилка під час спроби читання з ретранслятора" -#: logsrvd/logsrvd_relay.c:810 +#: logsrvd/logsrvd_relay.c:812 msgid "unable to read from relay" msgstr "не вдалося прочитати з ретранслятора" -#: logsrvd/logsrvd_relay.c:825 logsrvd/logsrvd_relay.c:943 +#: logsrvd/logsrvd_relay.c:827 logsrvd/logsrvd_relay.c:945 msgid "relay server closed connection" msgstr "сервер-ретранслятор розірвав з'єднання" -#: logsrvd/logsrvd_relay.c:843 +#: logsrvd/logsrvd_relay.c:845 msgid "server message too large" msgstr "повідомлення сервера є надто великим" -#: logsrvd/logsrvd_relay.c:907 +#: logsrvd/logsrvd_relay.c:909 #, c-format msgid "timed out writing to relay %s (%s)" msgstr "перевищено час очікування на завершення запису до ретранслятора %s (%s)" -#: logsrvd/logsrvd_relay.c:909 +#: logsrvd/logsrvd_relay.c:911 msgid "timeout writing to relay" msgstr "перевищено час очікування на запис до ретранслятора" -#: logsrvd/logsrvd_relay.c:962 logsrvd/logsrvd_relay.c:969 -#: logsrvd/logsrvd_relay.c:981 +#: logsrvd/logsrvd_relay.c:964 logsrvd/logsrvd_relay.c:971 +#: logsrvd/logsrvd_relay.c:983 msgid "error writing to relay" msgstr "помилка під час спроби записати до ретранслятора" @@ -1269,79 +1287,79 @@ msgid "unable to get server IP addr" msgstr "не вдалося отримати IP-адресу сервера" -#: logsrvd/sendlog.c:300 plugins/sudoers/sudoreplay.c:868 +#: logsrvd/sendlog.c:309 plugins/sudoers/sudoreplay.c:868 #, c-format msgid "unable to read %s/%s: %s" msgstr "не вдалося прочитати %s/%s: %s" -#: logsrvd/sendlog.c:1020 plugins/sudoers/iolog.c:949 -#: plugins/sudoers/iolog.c:1024 +#: logsrvd/sendlog.c:1029 plugins/sudoers/iolog.c:948 +#: plugins/sudoers/iolog.c:1023 #, c-format msgid "unexpected I/O event %d" msgstr "неочікувана подія введення-виведення — %d" -#: logsrvd/sendlog.c:1073 logsrvd/sendlog.c:1090 logsrvd/sendlog.c:1124 -#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1394 -#: plugins/sudoers/log_client.c:1462 plugins/sudoers/log_client.c:1501 +#: logsrvd/sendlog.c:1082 logsrvd/sendlog.c:1099 logsrvd/sendlog.c:1133 +#: plugins/sudoers/log_client.c:1126 plugins/sudoers/log_client.c:1402 +#: plugins/sudoers/log_client.c:1470 plugins/sudoers/log_client.c:1509 #, c-format msgid "%s: unexpected state %d" msgstr "%s: неочікуваний стан — %d" -#: logsrvd/sendlog.c:1160 plugins/sudoers/log_client.c:1550 +#: logsrvd/sendlog.c:1169 plugins/sudoers/log_client.c:1558 #, c-format msgid "error message received from server: %s" msgstr "отримано повідомлення про помилку від сервера: %s" -#: logsrvd/sendlog.c:1173 plugins/sudoers/log_client.c:1563 +#: logsrvd/sendlog.c:1182 plugins/sudoers/log_client.c:1571 #, c-format msgid "abort message received from server: %s" msgstr "отримано повідомлення про переривання від сервера: %s" -#: logsrvd/sendlog.c:1232 plugins/sudoers/log_client.c:1613 +#: logsrvd/sendlog.c:1241 plugins/sudoers/log_client.c:1621 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: неочікуване значення type_case — %d" -#: logsrvd/sendlog.c:1261 +#: logsrvd/sendlog.c:1270 msgid "timeout reading from server" msgstr "перевищено час очікування на читання з сервера" -#: logsrvd/sendlog.c:1310 plugins/sudoers/log_client.c:1729 +#: logsrvd/sendlog.c:1319 plugins/sudoers/log_client.c:1743 msgid "host name does not match certificate" msgstr "назва вузла не відповідає сертифікату" -#: logsrvd/sendlog.c:1343 +#: logsrvd/sendlog.c:1352 msgid "premature EOF" msgstr "передчасне завершення файла" -#: logsrvd/sendlog.c:1356 plugins/sudoers/log_client.c:1776 +#: logsrvd/sendlog.c:1365 plugins/sudoers/log_client.c:1790 #, c-format msgid "server message too large: %u" msgstr "повідомлення сервера є надто великим: %u" -#: logsrvd/sendlog.c:1412 +#: logsrvd/sendlog.c:1421 msgid "timeout writing to server" msgstr "перевищено час очікування на запис на сервері" -#: logsrvd/sendlog.c:1779 +#: logsrvd/sendlog.c:1788 msgid "both restart point and iolog ID must be specified" msgstr "слід вказати одночасно точку перезапуску та ідентифікатор журналу введення-виведення" -#: logsrvd/sendlog.c:1783 +#: logsrvd/sendlog.c:1792 msgid "a restart point may not be set when no I/O is sent" msgstr "точку перезапуску не можна встановлювати, якщо не надсилається жодних даних введення-виведення" -#: logsrvd/sendlog.c:1859 +#: logsrvd/sendlog.c:1868 #, c-format msgid "exited prematurely with state %d" msgstr "передчасний вихід зі станом %d" -#: logsrvd/sendlog.c:1860 +#: logsrvd/sendlog.c:1869 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "на сервер надіслано дані щодо часу, який лишився [%lld, %ld]" -#: logsrvd/sendlog.c:1862 +#: logsrvd/sendlog.c:1871 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "отримано точку внеску від сервера [%lld, %ld]" @@ -1399,12 +1417,12 @@ msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "не вдалося встановити мінімальну версію протоколу у значення TLS 1.2: %s" -#: plugins/sudoers/audit.c:269 plugins/sudoers/audit.c:429 -#: plugins/sudoers/log_client.c:951 plugins/sudoers/log_client.c:1000 -#: plugins/sudoers/log_client.c:1049 plugins/sudoers/log_client.c:1174 -#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:693 -#: plugins/sudoers/logging.c:796 plugins/sudoers/logging.c:987 -#: plugins/sudoers/policy.c:125 +#: plugins/sudoers/audit.c:268 plugins/sudoers/audit.c:428 +#: plugins/sudoers/log_client.c:959 plugins/sudoers/log_client.c:1008 +#: plugins/sudoers/log_client.c:1057 plugins/sudoers/log_client.c:1182 +#: plugins/sudoers/logging.c:595 plugins/sudoers/logging.c:711 +#: plugins/sudoers/logging.c:833 plugins/sudoers/logging.c:1000 +#: plugins/sudoers/policy.c:123 msgid "unable to get time of day" msgstr "не вдалося отримати дані щодо пори доби" @@ -1413,28 +1431,28 @@ msgid "unable to change password for %s" msgstr "не вдалося змінити пароль до %s" -#: plugins/sudoers/auth/bsdauth.c:74 +#: plugins/sudoers/auth/bsdauth.c:77 #, c-format msgid "unable to get login class for user %s" msgstr "не вдалося отримати клас входу до системи для користувача %s" -#: plugins/sudoers/auth/bsdauth.c:79 -msgid "unable to begin bsd authentication" -msgstr "не вдалося розпочати розпізнавання за BSD" - -#: plugins/sudoers/auth/bsdauth.c:87 +#: plugins/sudoers/auth/bsdauth.c:84 msgid "invalid authentication type" msgstr "некоректний тип розпізнавання" +#: plugins/sudoers/auth/bsdauth.c:89 +msgid "unable to begin BSD authentication" +msgstr "не вдалося розпочати розпізнавання за BSD" + #: plugins/sudoers/auth/bsdauth.c:96 msgid "unable to initialize BSD authentication" msgstr "не вдалося ініціалізувати розпізнавання за BSD" -#: plugins/sudoers/auth/bsdauth.c:186 +#: plugins/sudoers/auth/bsdauth.c:188 msgid "your account has expired" msgstr "термін дії вашого облікового запису вичерпано" -#: plugins/sudoers/auth/bsdauth.c:188 +#: plugins/sudoers/auth/bsdauth.c:190 msgid "approval failed" msgstr "не вдалося підтвердити" @@ -1653,13 +1671,12 @@ "\n" #: plugins/sudoers/check.c:353 plugins/sudoers/check.c:363 -#: plugins/sudoers/parse.c:82 plugins/sudoers/sudoers.c:945 -#: plugins/sudoers/sudoers.c:966 plugins/sudoers/tsdump.c:119 +#: plugins/sudoers/parse.c:80 plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid %u" msgstr "невідоме значення uid %u" -#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1279 +#: plugins/sudoers/check_aliases.c:99 plugins/sudoers/defaults.c:1278 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" @@ -1674,84 +1691,84 @@ msgid "%s \"%s\" referenced but not defined" msgstr "виявлено посилання %s «%s», яке не визначено" -#: plugins/sudoers/cvtsudoers.c:209 +#: plugins/sudoers/cvtsudoers.c:210 #, c-format msgid "order increment: %s: %s" msgstr "збільшення порядку: %s: %s" -#: plugins/sudoers/cvtsudoers.c:228 +#: plugins/sudoers/cvtsudoers.c:229 #, c-format msgid "starting order: %s: %s" msgstr "початковий порядок: %s: %s" -#: plugins/sudoers/cvtsudoers.c:238 +#: plugins/sudoers/cvtsudoers.c:239 #, c-format msgid "order padding: %s: %s" msgstr "доповнення порядку: %s: %s" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/visudo.c:184 +#: plugins/sudoers/cvtsudoers.c:249 plugins/sudoers/visudo.c:188 #, c-format msgid "%s grammar version %d\n" msgstr "Граматична перевірка %s, версія %d\n" -#: plugins/sudoers/cvtsudoers.c:277 plugins/sudoers/testsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:278 plugins/sudoers/testsudoers.c:163 #, c-format msgid "unsupported input format %s" msgstr "непідтримуваний формат вхідних даних, %s" -#: plugins/sudoers/cvtsudoers.c:295 +#: plugins/sudoers/cvtsudoers.c:296 #, c-format msgid "unsupported output format %s" msgstr "непідтримуваний формат виведення, %s" -#: plugins/sudoers/cvtsudoers.c:385 +#: plugins/sudoers/cvtsudoers.c:386 #, c-format msgid "%s: input and output files must be different" msgstr "%s: файли вхідних і вихідних даних мають бути різними файлами" -#: plugins/sudoers/cvtsudoers.c:399 plugins/sudoers/sudoers.c:166 -#: plugins/sudoers/sudoers.c:222 plugins/sudoers/testsudoers.c:254 -#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:654 +#: plugins/sudoers/cvtsudoers.c:400 plugins/sudoers/sudoers.c:163 +#: plugins/sudoers/sudoers.c:221 plugins/sudoers/testsudoers.c:263 +#: plugins/sudoers/visudo.c:280 plugins/sudoers/visudo.c:657 msgid "unable to initialize sudoers default values" msgstr "не вдалося ініціалізувати типові значення sudoers" -#: plugins/sudoers/cvtsudoers.c:525 plugins/sudoers/ldap_conf.c:434 +#: plugins/sudoers/cvtsudoers.c:526 plugins/sudoers/ldap_conf.c:431 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" -#: plugins/sudoers/cvtsudoers.c:584 +#: plugins/sudoers/cvtsudoers.c:605 #, c-format msgid "%s: unknown key word %s" msgstr "%s: невідоме ключове слово %s" -#: plugins/sudoers/cvtsudoers.c:630 +#: plugins/sudoers/cvtsudoers.c:651 #, c-format msgid "invalid defaults type: %s" msgstr "некоректний тип типових значень: %s" -#: plugins/sudoers/cvtsudoers.c:653 +#: plugins/sudoers/cvtsudoers.c:674 #, c-format msgid "invalid suppression type: %s" msgstr "некоректний тип придушення: %s" -#: plugins/sudoers/cvtsudoers.c:694 plugins/sudoers/cvtsudoers.c:710 +#: plugins/sudoers/cvtsudoers.c:715 plugins/sudoers/cvtsudoers.c:731 #, c-format msgid "invalid filter: %s" msgstr "некоректний фільтр: %s" -#: plugins/sudoers/cvtsudoers.c:754 plugins/sudoers/visudo.c:982 +#: plugins/sudoers/cvtsudoers.c:775 plugins/sudoers/visudo.c:992 #, c-format msgid "failed to parse %s file, unknown error" msgstr "не вдалося обробити файл %s, невідома помилка" -#: plugins/sudoers/cvtsudoers.c:1478 plugins/sudoers/sudoreplay.c:1142 -#: plugins/sudoers/timestamp.c:343 plugins/sudoers/timestamp.c:346 +#: plugins/sudoers/cvtsudoers.c:1499 plugins/sudoers/sudoreplay.c:1142 +#: plugins/sudoers/timestamp.c:368 plugins/sudoers/timestamp.c:371 #, c-format msgid "unable to write to %s" msgstr "не вдалося виконати запис до %s" -#: plugins/sudoers/cvtsudoers.c:1506 +#: plugins/sudoers/cvtsudoers.c:1527 #, c-format msgid "" "%s - convert between sudoers file formats\n" @@ -1760,7 +1777,7 @@ "%s — перетворення форматів файлів sudoers\n" "\n" -#: plugins/sudoers/cvtsudoers.c:1508 +#: plugins/sudoers/cvtsudoers.c:1529 msgid "" "\n" "Options:\n" @@ -1804,37 +1821,36 @@ #: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251 #: plugins/sudoers/cvtsudoers_ldif.c:592 plugins/sudoers/env.c:340 #: plugins/sudoers/env.c:347 plugins/sudoers/env.c:458 -#: plugins/sudoers/ldap.c:528 plugins/sudoers/ldap.c:761 -#: plugins/sudoers/ldap.c:1134 plugins/sudoers/ldap_conf.c:222 -#: plugins/sudoers/ldap_conf.c:313 plugins/sudoers/ldap_util.c:486 +#: plugins/sudoers/ldap.c:509 plugins/sudoers/ldap.c:626 +#: plugins/sudoers/ldap.c:999 plugins/sudoers/ldap_conf.c:219 +#: plugins/sudoers/ldap_conf.c:310 plugins/sudoers/ldap_util.c:486 #: plugins/sudoers/linux_audit.c:92 plugins/sudoers/logging.c:461 -#: plugins/sudoers/logging.c:817 plugins/sudoers/logging.c:827 -#: plugins/sudoers/policy.c:807 plugins/sudoers/policy.c:818 +#: plugins/sudoers/policy.c:824 plugins/sudoers/policy.c:835 #: plugins/sudoers/prompt.c:168 plugins/sudoers/serialize_list.c:62 #: plugins/sudoers/serialize_list.c:71 plugins/sudoers/strvec_join.c:62 #: plugins/sudoers/sudoreplay.c:1339 plugins/sudoers/sudoreplay.c:1345 -#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/toke_util.c:213 toke.l:995 toke.l:1197 +#: plugins/sudoers/sudoreplay.c:1351 plugins/sudoers/testsudoers.c:254 +#: plugins/sudoers/toke_util.c:213 toke.l:996 toke.l:1259 #, c-format msgid "internal error, %s overflow" msgstr "внутрішня помилка, переповнення %s" -#: plugins/sudoers/cvtsudoers_csv.c:452 plugins/sudoers/cvtsudoers_csv.c:466 -#: plugins/sudoers/cvtsudoers_json.c:657 plugins/sudoers/cvtsudoers_json.c:672 +#: plugins/sudoers/cvtsudoers_csv.c:454 plugins/sudoers/cvtsudoers_csv.c:468 +#: plugins/sudoers/cvtsudoers_json.c:661 plugins/sudoers/cvtsudoers_json.c:676 #: plugins/sudoers/cvtsudoers_ldif.c:347 plugins/sudoers/cvtsudoers_ldif.c:360 -#: plugins/sudoers/ldap.c:512 +#: plugins/sudoers/ldap.c:493 msgid "unable to get GMT time" msgstr "не вдалося отримати гринвіцький час" -#: plugins/sudoers/cvtsudoers_csv.c:457 plugins/sudoers/cvtsudoers_csv.c:471 -#: plugins/sudoers/cvtsudoers_json.c:662 plugins/sudoers/cvtsudoers_json.c:677 +#: plugins/sudoers/cvtsudoers_csv.c:459 plugins/sudoers/cvtsudoers_csv.c:473 +#: plugins/sudoers/cvtsudoers_json.c:666 plugins/sudoers/cvtsudoers_json.c:681 #: plugins/sudoers/cvtsudoers_ldif.c:352 plugins/sudoers/cvtsudoers_ldif.c:365 -#: plugins/sudoers/ldap.c:520 +#: plugins/sudoers/ldap.c:501 msgid "unable to format timestamp" msgstr "не вдалося виконати форматування часового штампа" -#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:515 -#: plugins/sudoers/cvtsudoers_json.c:728 +#: plugins/sudoers/cvtsudoers_json.c:481 plugins/sudoers/cvtsudoers_json.c:516 +#: plugins/sudoers/cvtsudoers_json.c:732 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" msgstr "%s:%d:%d: невідомий запис типових параметрів, «%s»" @@ -2643,18 +2659,18 @@ msgid "value \"%s\" is invalid for option \"%s\"" msgstr "значення «%s» є некоректним для параметра «%s»" -#: plugins/sudoers/defaults.c:1128 plugins/sudoers/policy.c:210 -#: plugins/sudoers/policy.c:219 +#: plugins/sudoers/defaults.c:1127 plugins/sudoers/policy.c:205 +#: plugins/sudoers/policy.c:214 #, c-format msgid "path name for \"%s\" too long" msgstr "назва шляху для «%s» є надто довгою" -#: plugins/sudoers/defaults.c:1134 +#: plugins/sudoers/defaults.c:1133 #, c-format msgid "values for \"%s\" must start with a '/', '~', or '*'" msgstr "значення для «%s» має починатися з «/», «~» або «*»" -#: plugins/sudoers/defaults.c:1141 +#: plugins/sudoers/defaults.c:1140 #, c-format msgid "values for \"%s\" must start with a '/'" msgstr "значення для «%s» має починатися з «/»" @@ -2681,12 +2697,12 @@ msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "вибачте, вам не дозволено встановлювати такі змінні середовища: %s" -#: plugins/sudoers/filedigest.c:49 +#: plugins/sudoers/filedigest.c:50 #, c-format -msgid "unsupported digest type %d for %s" -msgstr "непідтримуваний тип контрольної суми, %d, для %s" +msgid "unsupported digest type %u for %s" +msgstr "непідтримуваний тип контрольної суми, %u, для %s" -#: plugins/sudoers/filedigest.c:78 +#: plugins/sudoers/filedigest.c:79 #, c-format msgid "%s: read error" msgstr "%s: помилка читання" @@ -2720,80 +2736,80 @@ msgid "Local IP address and netmask pairs:\n" msgstr "Пари локальних IP-адрес і масок мережі:\n" -#: plugins/sudoers/iolog.c:685 +#: plugins/sudoers/iolog.c:684 msgid "unable to update sequence file" msgstr "не вдалося оновити файл послідовності" -#: plugins/sudoers/iolog.c:719 plugins/sudoers/iolog.c:907 -#: plugins/sudoers/iolog.c:1069 plugins/sudoers/iolog.c:1076 -#: plugins/sudoers/iolog.c:1197 plugins/sudoers/iolog.c:1204 -#: plugins/sudoers/iolog.c:1303 plugins/sudoers/iolog.c:1310 +#: plugins/sudoers/iolog.c:718 plugins/sudoers/iolog.c:906 +#: plugins/sudoers/iolog.c:1068 plugins/sudoers/iolog.c:1075 +#: plugins/sudoers/iolog.c:1196 plugins/sudoers/iolog.c:1203 +#: plugins/sudoers/iolog.c:1302 plugins/sudoers/iolog.c:1309 #, c-format msgid "unable to write to I/O log file: %s" msgstr "не вдалося здійснити запис до файла журналу введення-виведення: %s" -#: plugins/sudoers/iolog.c:727 +#: plugins/sudoers/iolog.c:726 #, c-format msgid "unable to create %s/%s" msgstr "не вдалося створити %s/%s" -#: plugins/sudoers/iolog.c:955 +#: plugins/sudoers/iolog.c:954 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: внутрішня помилка, файл журналу введення-виведення для події %d не відкрито" -#: plugins/sudoers/iolog.c:1054 plugins/sudoers/iolog.c:1182 -#: plugins/sudoers/iolog.c:1287 plugins/sudoers/timestamp.c:879 -#: plugins/sudoers/timestamp.c:971 plugins/sudoers/visudo.c:556 -#: plugins/sudoers/visudo.c:562 +#: plugins/sudoers/iolog.c:1053 plugins/sudoers/iolog.c:1181 +#: plugins/sudoers/iolog.c:1286 plugins/sudoers/timestamp.c:904 +#: plugins/sudoers/timestamp.c:996 plugins/sudoers/visudo.c:559 +#: plugins/sudoers/visudo.c:565 msgid "unable to read the clock" msgstr "не вдалося прочитати час на годиннику" -#: plugins/sudoers/iolog.c:1279 plugins/sudoers/log_client.c:1192 -#: plugins/sudoers/log_client.c:1202 plugins/sudoers/log_client.c:1206 +#: plugins/sudoers/iolog.c:1278 plugins/sudoers/log_client.c:1200 +#: plugins/sudoers/log_client.c:1210 plugins/sudoers/log_client.c:1214 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: внутрішня помилка, некоректний сигнал %d" -#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:292 +#: plugins/sudoers/ldap.c:154 plugins/sudoers/ldap_conf.c:289 msgid "starttls not supported when using ldaps" msgstr "підтримки starttls, якщо використовується ldaps, не передбачено" -#: plugins/sudoers/ldap.c:248 +#: plugins/sudoers/ldap.c:225 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "не вдалося ініціалізувати базу даних сертифікатів і ключів SSL: %s" -#: plugins/sudoers/ldap.c:251 +#: plugins/sudoers/ldap.c:228 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "щоб скористатися SSL, вам слід встановити для TLS_CERT значення %s" -#: plugins/sudoers/ldap.c:1714 +#: plugins/sudoers/ldap.c:1587 #, c-format msgid "unable to initialize LDAP: %s" msgstr "не вдалося ініціалізувати LDAP: %s" -#: plugins/sudoers/ldap.c:1751 +#: plugins/sudoers/ldap.c:1624 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "start_tls вказано, але у бібліотеках LDAP не передбачено підтримки ldap_start_tls_s() або ldap_start_tls_s_np()" -#: plugins/sudoers/ldap.c:1888 plugins/sudoers/parse_ldif.c:748 +#: plugins/sudoers/ldap.c:1761 plugins/sudoers/parse_ldif.c:748 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "некоректний атрибут sudoOrder: %s" -#: plugins/sudoers/ldap_conf.c:200 +#: plugins/sudoers/ldap_conf.c:197 #, c-format msgid "%s: port too large" msgstr "%s: порт є надто великим" -#: plugins/sudoers/ldap_conf.c:261 +#: plugins/sudoers/ldap_conf.c:258 #, c-format msgid "unsupported LDAP uri type: %s" msgstr "непідтримуваний тип адреси LDAP: %s" -#: plugins/sudoers/ldap_conf.c:288 +#: plugins/sudoers/ldap_conf.c:285 msgid "unable to mix ldap and ldaps URIs" msgstr "не можна використовувати суміш з адрес ldap і ldaps" @@ -2819,7 +2835,7 @@ msgstr "не вдалося надіслати повідомлення аудита" #: plugins/sudoers/log_client.c:125 plugins/sudoers/log_client.c:412 -#: plugins/sudoers/log_client.c:1439 plugins/sudoers/log_client.c:2055 +#: plugins/sudoers/log_client.c:1447 plugins/sudoers/log_client.c:2069 msgid "error in event loop" msgstr "помилка у циклі обробки подій" @@ -2853,28 +2869,28 @@ msgid "TLS connection to %s:%s failed: %s" msgstr "Не вдалося встановити з'єднання TLS із %s:%s: %s" -#: plugins/sudoers/log_client.c:543 +#: plugins/sudoers/log_client.c:545 msgid "TLS initialization was unsuccessful" msgstr "Спроба ініціалізувати TLS завершилася невдало" -#: plugins/sudoers/log_client.c:553 +#: plugins/sudoers/log_client.c:555 msgid "TLS handshake was unsuccessful" msgstr "Спроба узгодити зв'язок TLS завершилася невдало" -#: plugins/sudoers/log_client.c:1210 +#: plugins/sudoers/log_client.c:1218 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "%s: внутрішня помилка, некоректний стан виходу %d" -#: plugins/sudoers/log_client.c:1739 plugins/sudoers/log_client.c:1763 +#: plugins/sudoers/log_client.c:1753 plugins/sudoers/log_client.c:1777 msgid "lost connection to log server" msgstr "втрачено зв’язок з сервером журналу" -#: plugins/sudoers/log_client.c:1840 +#: plugins/sudoers/log_client.c:1854 msgid "missing write buffer" msgstr "не вказано буфер запису" -#: plugins/sudoers/log_client.c:1994 +#: plugins/sudoers/log_client.c:2008 msgid "unable to connect to log server" msgstr "не вдалося встановити з'єднання із сервером журналу" @@ -2907,22 +2923,22 @@ #: plugins/sudoers/logging.c:324 #, 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" +msgid "Sorry, user %s is not allowed to execute '%s%s%s%s' as %s%s%s on %s.\n" +msgstr "Вибачте, користувач %s не має права виконувати «%s%s%s%s» від імені %s%s%s на %s.\n" #: plugins/sudoers/logging.c:334 msgid "This incident has been reported to the administrator.\n" msgstr "Про цю подію подано звіт адміністратору.\n" -#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:655 -#: plugins/sudoers/sudoers.c:657 plugins/sudoers/sudoers.c:659 -#: plugins/sudoers/sudoers.c:661 plugins/sudoers/sudoers.c:816 -#: plugins/sudoers/sudoers.c:818 +#: plugins/sudoers/logging.c:369 plugins/sudoers/sudoers.c:566 +#: plugins/sudoers/sudoers.c:567 plugins/sudoers/sudoers.c:569 +#: plugins/sudoers/sudoers.c:570 plugins/sudoers/sudoers.c:791 +#: plugins/sudoers/sudoers.c:793 #, c-format msgid "%s: command not found" msgstr "%s: команду не знайдено" -#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:651 +#: plugins/sudoers/logging.c:371 plugins/sudoers/sudoers.c:562 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2948,31 +2964,31 @@ msgid "a password is required" msgstr "слід вказати пароль" -#: plugins/sudoers/logging.c:803 plugins/sudoers/logging.c:815 +#: plugins/sudoers/logging.c:855 msgid "problem parsing sudoers" msgstr "проблема із обробкою sudoers" -#: plugins/sudoers/logging.c:877 plugins/sudoers/logging.c:889 +#: plugins/sudoers/logging.c:896 plugins/sudoers/logging.c:904 #, c-format msgid "%s:%d:%d: %s" msgstr "%s:%d:%d: %s" -#: plugins/sudoers/logging.c:1066 +#: plugins/sudoers/logging.c:1079 #, c-format msgid "unable to write log file: %s" msgstr "не вдалося виконати запис до файла журналу: %s" -#: plugins/sudoers/match_digest.c:112 +#: plugins/sudoers/match_digest.c:101 #, c-format msgid "digest for %s (%s) bad length %zu, expected %zu" msgstr "контрольна сума для %s (%s) має помилкову довжину %zu, мало бути %zu" -#: plugins/sudoers/match_digest.c:131 +#: plugins/sudoers/match_digest.c:120 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "контрольну суму для %s (%s) подано не у формі %s" -#: plugins/sudoers/parse.c:631 +#: plugins/sudoers/parse.c:643 #, c-format msgid "" "\n" @@ -2981,7 +2997,7 @@ "\n" "Роль LDAP: %s\n" -#: plugins/sudoers/parse.c:634 +#: plugins/sudoers/parse.c:646 msgid "" "\n" "Sudoers entry:\n" @@ -2989,38 +3005,38 @@ "\n" "Запис sudoers:\n" -#: plugins/sudoers/parse.c:636 +#: plugins/sudoers/parse.c:648 msgid " RunAsUsers: " msgstr " Користувачі для запуску: " -#: plugins/sudoers/parse.c:651 +#: plugins/sudoers/parse.c:663 msgid " RunAsGroups: " msgstr " Групи для запуску: " -#: plugins/sudoers/parse.c:661 +#: plugins/sudoers/parse.c:673 msgid " Options: " msgstr " Параметри: " -#: plugins/sudoers/parse.c:725 +#: plugins/sudoers/parse.c:737 msgid " Commands:\n" msgstr " Команди:\n" -#: plugins/sudoers/parse.c:916 +#: plugins/sudoers/parse.c:928 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Відповідність записів Defaults для %s на %s:\n" -#: plugins/sudoers/parse.c:934 +#: plugins/sudoers/parse.c:946 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Типові значення для запуску від імені і команд для %s:\n" -#: plugins/sudoers/parse.c:952 +#: plugins/sudoers/parse.c:964 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "Користувач %s має право виконувати на %s такі команди:\n" -#: plugins/sudoers/parse.c:967 +#: plugins/sudoers/parse.c:979 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "Користувач %s не має права виконувати sudo на %s.\n" @@ -3035,64 +3051,72 @@ msgid "invalid LDIF attribute: %s" msgstr "некоректний атрибут LDIF: %s" -#: plugins/sudoers/policy.c:82 plugins/sudoers/policy.c:113 +#: plugins/sudoers/pivot.c:74 +msgid "unable to restore root directory" +msgstr "не вдалося відновити кореневий каталог" + +#: plugins/sudoers/pivot.c:82 +msgid "unable to restore current working directory" +msgstr "не вдалося відновити поточний робочий каталог" + +#: 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:360 plugins/sudoers/testsudoers.c:268 +#: plugins/sudoers/policy.c:356 plugins/sudoers/testsudoers.c:277 msgid "unable to parse network address list" msgstr "не вдалося обробити список мережевих адрес" -#: plugins/sudoers/policy.c:528 +#: plugins/sudoers/policy.c:524 msgid "user name not set by sudo front-end" msgstr "ім'я користувача не встановлено за допомогою оболонки sudo" -#: plugins/sudoers/policy.c:532 +#: plugins/sudoers/policy.c:528 msgid "user-ID not set by sudo front-end" msgstr "ідентифікатор користувача не встановлено за допомогою оболонки sudo" -#: plugins/sudoers/policy.c:536 +#: plugins/sudoers/policy.c:532 msgid "group-ID not set by sudo front-end" msgstr "ідентифікатор групи не встановлено за допомогою оболонки sudo" -#: plugins/sudoers/policy.c:540 +#: plugins/sudoers/policy.c:536 msgid "host name not set by sudo front-end" msgstr "назву вузла не встановлено за допомогою оболонки sudo" -#: plugins/sudoers/policy.c:737 +#: plugins/sudoers/policy.c:754 #, c-format msgid "invalid working directory: %s" msgstr "некоректний робочий каталог: %s" -#: plugins/sudoers/policy.c:921 +#: plugins/sudoers/policy.c:938 #, c-format msgid "invalid chroot directory: %s" msgstr "некоректний каталог chroot: %s" -#: plugins/sudoers/policy.c:1108 plugins/sudoers/visudo.c:259 -#: plugins/sudoers/visudo.c:906 +#: plugins/sudoers/policy.c:1125 plugins/sudoers/visudo.c:910 +#: plugins/sudoers/visudo.c:1209 #, c-format msgid "unable to execute %s" msgstr "не вдалося виконати %s" -#: plugins/sudoers/policy.c:1178 plugins/sudoers/policy.c:1215 -#: plugins/sudoers/policy.c:1237 plugins/sudoers/policy.c:1263 +#: plugins/sudoers/policy.c:1195 plugins/sudoers/policy.c:1230 +#: plugins/sudoers/policy.c:1252 plugins/sudoers/policy.c:1274 #, c-format msgid "%s: invalid mode flags from sudo front end: 0x%x" msgstr "%s: некоректні прапорці режиму від оболонки sudo: 0x%x" -#: plugins/sudoers/policy.c:1299 +#: plugins/sudoers/policy.c:1294 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Додаток правил sudoers версії %s\n" -#: plugins/sudoers/policy.c:1301 +#: plugins/sudoers/policy.c:1296 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Граматична перевірка файла sudoers версії %d\n" -#: plugins/sudoers/policy.c:1305 +#: plugins/sudoers/policy.c:1300 #, c-format msgid "" "\n" @@ -3101,27 +3125,27 @@ "\n" "Шлях до sudoers: %s\n" -#: plugins/sudoers/policy.c:1308 +#: plugins/sudoers/policy.c:1303 #, c-format msgid "nsswitch path: %s\n" msgstr "Шлях до nsswitch: %s\n" -#: plugins/sudoers/policy.c:1310 +#: plugins/sudoers/policy.c:1305 #, c-format msgid "ldap.conf path: %s\n" msgstr "Шлях до ldap.conf: %s\n" -#: plugins/sudoers/policy.c:1311 +#: plugins/sudoers/policy.c:1306 #, c-format msgid "ldap.secret path: %s\n" msgstr "Шлях до ldap.secret: %s\n" -#: plugins/sudoers/policy.c:1344 +#: plugins/sudoers/policy.c:1339 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "неможливо зареєструвати процедуру перехоплення типу %d (версія %d.%d)" -#: plugins/sudoers/policy.c:1362 +#: plugins/sudoers/policy.c:1357 #, c-format msgid "unable to deregister hook of type %d (version %d.%d)" msgstr "неможливо скасувати реєстрацію процедури перехоплення типу %d (версія %d.%d)" @@ -3190,48 +3214,48 @@ msgid "unable to parse gids for %s" msgstr "не вдалося обробити записи ідентифікаторів груп %s" -#: 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 +#: plugins/sudoers/set_perms.c:115 plugins/sudoers/set_perms.c:451 +#: plugins/sudoers/set_perms.c:863 plugins/sudoers/set_perms.c:1178 +#: plugins/sudoers/set_perms.c:1481 msgid "perm stack overflow" msgstr "переповнення стека доступу" -#: 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 +#: plugins/sudoers/set_perms.c:126 plugins/sudoers/set_perms.c:382 +#: plugins/sudoers/set_perms.c:462 plugins/sudoers/set_perms.c:730 +#: plugins/sudoers/set_perms.c:874 plugins/sudoers/set_perms.c:1102 +#: plugins/sudoers/set_perms.c:1189 plugins/sudoers/set_perms.c:1414 +#: plugins/sudoers/set_perms.c:1492 plugins/sudoers/set_perms.c:1583 msgid "perm stack underflow" msgstr "вичерпання стека доступу" -#: plugins/sudoers/set_perms.c:185 plugins/sudoers/set_perms.c:503 -#: plugins/sudoers/set_perms.c:1227 plugins/sudoers/set_perms.c:1505 +#: plugins/sudoers/set_perms.c:186 plugins/sudoers/set_perms.c:509 +#: plugins/sudoers/set_perms.c:1243 plugins/sudoers/set_perms.c:1526 msgid "unable to change to root gid" msgstr "не вдалося змінити ідентифікатор групи (gid) root" -#: plugins/sudoers/set_perms.c:276 plugins/sudoers/set_perms.c:600 -#: plugins/sudoers/set_perms.c:995 plugins/sudoers/set_perms.c:1304 +#: plugins/sudoers/set_perms.c:277 plugins/sudoers/set_perms.c:606 +#: plugins/sudoers/set_perms.c:1006 plugins/sudoers/set_perms.c:1320 msgid "unable to change to runas gid" msgstr "не вдалося змінити gid на runas" -#: plugins/sudoers/set_perms.c:281 plugins/sudoers/set_perms.c:605 -#: plugins/sudoers/set_perms.c:1000 plugins/sudoers/set_perms.c:1309 +#: plugins/sudoers/set_perms.c:282 plugins/sudoers/set_perms.c:611 +#: plugins/sudoers/set_perms.c:1011 plugins/sudoers/set_perms.c:1325 msgid "unable to set runas group vector" msgstr "не вдалося встановити вектор групи виконання" -#: plugins/sudoers/set_perms.c:292 plugins/sudoers/set_perms.c:616 -#: plugins/sudoers/set_perms.c:1009 plugins/sudoers/set_perms.c:1318 +#: plugins/sudoers/set_perms.c:293 plugins/sudoers/set_perms.c:622 +#: plugins/sudoers/set_perms.c:1020 plugins/sudoers/set_perms.c:1334 msgid "unable to change to runas uid" msgstr "не вдалося змінити uid на runas" -#: plugins/sudoers/set_perms.c:310 plugins/sudoers/set_perms.c:634 -#: plugins/sudoers/set_perms.c:1025 plugins/sudoers/set_perms.c:1334 +#: plugins/sudoers/set_perms.c:315 plugins/sudoers/set_perms.c:644 +#: plugins/sudoers/set_perms.c:1040 plugins/sudoers/set_perms.c:1354 msgid "unable to change to sudoers gid" msgstr "не вдалося змінити gid на sudoers" -#: 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/set_perms.c:369 plugins/sudoers/set_perms.c:717 +#: plugins/sudoers/set_perms.c:1089 plugins/sudoers/set_perms.c:1401 +#: plugins/sudoers/set_perms.c:1570 msgid "too many processes" msgstr "забагато процесів" @@ -3260,150 +3284,150 @@ msgid "unable to find symbol \"%s\" in %s" msgstr "не вдалося знайти символ «%s» у %s" -#: plugins/sudoers/sudoers.c:263 +#: plugins/sudoers/sudoers.c:261 #, c-format msgid "unable to get defaults from %s" msgstr "на вдалося отримати типові значення від %s" -#: plugins/sudoers/sudoers.c:270 +#: plugins/sudoers/sudoers.c:268 msgid "no valid sudoers sources found, quitting" msgstr "не знайдено коректних джерел даних sudoers, завершення роботи" -#: plugins/sudoers/sudoers.c:346 +#: plugins/sudoers/sudoers.c:344 #, c-format msgid "user not allowed to change root directory to %s" msgstr "користувачеві заборонено змінювати кореневий каталог на %s" -#: plugins/sudoers/sudoers.c:348 +#: plugins/sudoers/sudoers.c:346 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "вам не дозволено використовувати параметр -R з %s" -#: plugins/sudoers/sudoers.c:373 +#: plugins/sudoers/sudoers.c:371 #, c-format msgid "user not allowed to change directory to %s" msgstr "користувачеві заборонено змінювати каталог на %s" -#: plugins/sudoers/sudoers.c:374 +#: plugins/sudoers/sudoers.c:372 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "вам не дозволено використовувати параметр -D з %s" -#: plugins/sudoers/sudoers.c:401 -msgid "no command specified" -msgstr "не вказано команду" - -#: plugins/sudoers/sudoers.c:426 +#: plugins/sudoers/sudoers.c:412 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers вказує, що sudo не можна користуватися для виконання команд від root" -#: plugins/sudoers/sudoers.c:483 +#: plugins/sudoers/sudoers.c:421 msgid "user not allowed to override closefrom limit" msgstr "користувачеві заборонено перевизначати обмеження closefrom" -#: plugins/sudoers/sudoers.c:484 +#: plugins/sudoers/sudoers.c:422 msgid "you are not permitted to use the -C option" msgstr "вам не дозволено використовувати параметр -C" -#: plugins/sudoers/sudoers.c:544 -#, c-format -msgid "timestamp owner (%s): No such user" -msgstr "власник часового штампа (%s): не знайдено користувача з таким іменем" - -#: plugins/sudoers/sudoers.c:559 +#: plugins/sudoers/sudoers.c:468 msgid "no tty" msgstr "немає tty" -#: plugins/sudoers/sudoers.c:560 +#: plugins/sudoers/sudoers.c:469 msgid "sorry, you must have a tty to run sudo" msgstr "вибачте, для виконання sudo вашому користувачеві потрібен tty" -#: plugins/sudoers/sudoers.c:567 +#: plugins/sudoers/sudoers.c:477 #, c-format msgid "invalid shell for user %s: %s" msgstr "некоректний запис оболонки для користувача %s: %s" -#: plugins/sudoers/sudoers.c:650 +#: plugins/sudoers/sudoers.c:561 msgid "command in current directory" msgstr "команда у поточному каталозі" -#: plugins/sudoers/sudoers.c:665 +#: plugins/sudoers/sudoers.c:574 msgid "\"cd\" is a shell built-in command, it cannot be run directly." msgstr "«cd» є вбудованою командою оболонки, її не може бути запущено безпосередньо." -#: plugins/sudoers/sudoers.c:667 +#: plugins/sudoers/sudoers.c:576 msgid "the -s option may be used to run a privileged shell." msgstr "параметр -s може бути використано для запуску привілейованої оболонки." -#: plugins/sudoers/sudoers.c:669 +#: plugins/sudoers/sudoers.c:578 msgid "the -D option may be used to run a command in a specific directory." msgstr "параметр -D може бути використано для запуску команди у вказаному каталозі." -#: plugins/sudoers/sudoers.c:678 +#: plugins/sudoers/sudoers.c:587 msgid "user not allowed to set a command timeout" msgstr "користувачеві заборонено встановлювати час очікування на виконання команди" -#: plugins/sudoers/sudoers.c:680 +#: plugins/sudoers/sudoers.c:589 msgid "sorry, you are not allowed set a command timeout" msgstr "вибачте, вам не дозволено встановлювати час очікування на виконання команди" -#: plugins/sudoers/sudoers.c:688 +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to preserve the environment" msgstr "користувачеві заборонено зберігати середовище" -#: plugins/sudoers/sudoers.c:690 +#: plugins/sudoers/sudoers.c:599 msgid "sorry, you are not allowed to preserve the environment" msgstr "вибачте, вам не дозволено зберігати середовище" -#: plugins/sudoers/sudoers.c:799 +#: plugins/sudoers/sudoers.c:635 +msgid "no command specified" +msgstr "не вказано команду" + +#: plugins/sudoers/sudoers.c:774 msgid "error setting user-specified environment variables" msgstr "помилка під час спроби встановити значення змінних середовища, які вказано користувачем" -#: plugins/sudoers/sudoers.c:1112 +#: plugins/sudoers/sudoers.c:1239 msgid "sudoedit doesn't need to be run via sudo" msgstr "Немає потреби у запуску sudoedit за допомогою sudo" -#: plugins/sudoers/sudoers.c:1157 plugins/sudoers/sudoreplay.c:1612 +#: plugins/sudoers/sudoers.c:1314 plugins/sudoers/sudoreplay.c:1612 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "не вдалося прочитати %s" -#: plugins/sudoers/sudoers.c:1186 plugins/sudoers/visudo.c:1066 +#: plugins/sudoers/sudoers.c:1337 plugins/sudoers/visudo.c:1114 #, c-format msgid "%s is not a regular file" msgstr "%s не є звичайним файлом" -#: plugins/sudoers/sudoers.c:1190 plugins/sudoers/timestamp.c:263 toke.l:1255 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/timestamp.c:288 toke.l:1325 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s належить uid %u, має належати %u" -#: plugins/sudoers/sudoers.c:1194 plugins/sudoers/timestamp.c:270 toke.l:1260 +#: plugins/sudoers/sudoers.c:1345 plugins/sudoers/timestamp.c:295 toke.l:1330 #, c-format msgid "%s is world writable" msgstr "Запис до «%s» можливий для довільного користувача" -#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/timestamp.c:275 toke.l:1263 +#: plugins/sudoers/sudoers.c:1349 plugins/sudoers/timestamp.c:300 toke.l:1333 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s належить gid %u, має належати %u" -#: plugins/sudoers/sudoers.c:1233 +#: plugins/sudoers/sudoers.c:1377 #, c-format msgid "only root can use \"-c %s\"" msgstr "використовувати «-c %s» може лише root" -#: plugins/sudoers/sudoers.c:1252 +#: plugins/sudoers/sudoers.c:1396 #, c-format msgid "unknown login class %s" msgstr "невідомий клас входу %s" -#: plugins/sudoers/sudoers.c:1339 plugins/sudoers/sudoers.c:1354 +#: plugins/sudoers/sudoers.c:1483 plugins/sudoers/sudoers.c:1498 #, c-format msgid "unable to resolve host %s" msgstr "не вдалося визначити адресу вузла %s" +#: plugins/sudoers/sudoers.c:1636 +#, c-format +msgid "%s:%d:%d timestampowner: unknown user %s" +msgstr "%s:%d:%d timestampowner: невідомий користувач %s" + #: plugins/sudoers/sudoreplay.c:252 #, c-format msgid "invalid filter option: %s" @@ -3544,11 +3568,11 @@ " -s, --speed=коеф_швидк коефіцієнт прискорення або сповільнення виводу даних\n" " -V, --version показати дані щодо версії і завершити роботу" -#: plugins/sudoers/testsudoers.c:344 +#: plugins/sudoers/testsudoers.c:355 msgid "\thost unmatched" msgstr "\tвідповідника вузла не знайдено" -#: plugins/sudoers/testsudoers.c:347 +#: plugins/sudoers/testsudoers.c:358 msgid "" "\n" "Command allowed" @@ -3556,7 +3580,7 @@ "\n" "Команду дозволено" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command denied" @@ -3564,7 +3588,7 @@ "\n" "Команду заборонено" -#: plugins/sudoers/testsudoers.c:348 +#: plugins/sudoers/testsudoers.c:359 msgid "" "\n" "Command unmatched" @@ -3572,21 +3596,21 @@ "\n" "Не знайдено відповідника команди" -#: plugins/sudoers/timestamp.c:354 plugins/sudoers/timestamp.c:693 +#: plugins/sudoers/timestamp.c:379 plugins/sudoers/timestamp.c:718 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "не вдалося обрізати файл часової позначки до %lld байтів" -#: plugins/sudoers/timestamp.c:890 +#: plugins/sudoers/timestamp.c:915 msgid "ignoring time stamp from the future" msgstr "ігноруємо часову позначку з майбутнього" -#: plugins/sudoers/timestamp.c:913 +#: plugins/sudoers/timestamp.c:938 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "занадто далека часова позначка у майбутньому: %20.20s" -#: plugins/sudoers/timestamp.c:1042 +#: plugins/sudoers/timestamp.c:1067 #, c-format msgid "unable to lock time stamp file %s" msgstr "не вдалося заблокувати файл часової позначки %s" @@ -3595,99 +3619,91 @@ msgid "sudoedit should not be specified with a path" msgstr "sudoedit не слід вказувати разом із шляхом" -#: plugins/sudoers/visudo.c:254 -msgid "the -x option will be removed in a future release" -msgstr "параметр -x буде вилучено у наступному випуску" - -#: plugins/sudoers/visudo.c:256 -msgid "please consider using the cvtsudoers utility instead" -msgstr "будь ласка, скористайтеся замість нього програмою cvtsudoers" - -#: plugins/sudoers/visudo.c:311 plugins/sudoers/visudo.c:702 +#: plugins/sudoers/visudo.c:314 plugins/sudoers/visudo.c:705 #, c-format msgid "press return to edit %s: " msgstr "натисніть Enter для редагування %s: " -#: plugins/sudoers/visudo.c:326 +#: plugins/sudoers/visudo.c:329 #, c-format msgid "contents of edit session left in %s" msgstr "дані сеансу редагування залишилися у %s" -#: plugins/sudoers/visudo.c:403 +#: plugins/sudoers/visudo.c:406 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "вказаного редактора (%s) не існує" -#: plugins/sudoers/visudo.c:408 +#: plugins/sudoers/visudo.c:411 #, c-format msgid "no editor found (editor path = %s)" msgstr "не знайдено жодного редактора (шлях до редактора = %s)" -#: plugins/sudoers/visudo.c:495 plugins/sudoers/visudo.c:774 +#: plugins/sudoers/visudo.c:498 plugins/sudoers/visudo.c:777 #, c-format msgid "unable to stat %s" msgstr "не вдалося виконати stat для %s" -#: plugins/sudoers/visudo.c:515 plugins/sudoers/visudo.c:523 +#: plugins/sudoers/visudo.c:518 plugins/sudoers/visudo.c:526 msgid "write error" msgstr "помилка запису" -#: plugins/sudoers/visudo.c:569 +#: plugins/sudoers/visudo.c:572 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "не вдалося обробити stat файл тимчасових даних (%s), %s не змінено" -#: plugins/sudoers/visudo.c:576 +#: plugins/sudoers/visudo.c:579 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "файл тимчасових даних має нульовий об’єм (%s), %s не змінено" -#: plugins/sudoers/visudo.c:582 +#: plugins/sudoers/visudo.c:585 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "помилка редактора (%s), %s не змінено" -#: plugins/sudoers/visudo.c:604 +#: plugins/sudoers/visudo.c:607 #, c-format msgid "%s unchanged" msgstr "%s не змінено" -#: plugins/sudoers/visudo.c:649 +#: plugins/sudoers/visudo.c:652 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "не вдалося повторно відкрити файл тимчасових даних (%s), %s не змінено." -#: plugins/sudoers/visudo.c:662 +#: plugins/sudoers/visudo.c:665 #, c-format msgid "unable to parse temporary file (%s), unknown error" msgstr "не вдалося обробити файл тимчасових даних (%s), невідома помилка" -#: plugins/sudoers/visudo.c:748 plugins/sudoers/visudo.c:778 -#: plugins/sudoers/visudo.c:785 +#: plugins/sudoers/visudo.c:751 plugins/sudoers/visudo.c:781 +#: plugins/sudoers/visudo.c:788 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "не вдалося встановити (uid, gid) %s у значення (%u, %u)" -#: plugins/sudoers/visudo.c:813 +#: plugins/sudoers/visudo.c:816 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "%s і %s не перебувають у одній файловій системі, використовуємо mv для перейменування" -#: plugins/sudoers/visudo.c:824 +#: plugins/sudoers/visudo.c:827 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "помилка команди: «%s %s %s», %s не змінено" -#: plugins/sudoers/visudo.c:831 +#: plugins/sudoers/visudo.c:834 #, c-format msgid "error renaming %s, %s unchanged" msgstr "помилка перейменування %s, %s не змінено" -#: plugins/sudoers/visudo.c:851 +#: plugins/sudoers/visudo.c:855 msgid "What now? " msgstr "А зараз що? " -#: plugins/sudoers/visudo.c:865 +#: plugins/sudoers/visudo.c:869 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -3699,41 +3715,49 @@ " (x) — вийти без внесення змін до файла sudoers\n" " (Q) — вийти зі збереженням файла sudoers (НЕБЕЗПЕЧНО!)\n" -#: plugins/sudoers/visudo.c:911 +#: plugins/sudoers/visudo.c:915 #, c-format msgid "unable to run %s" msgstr "не вдалося виконати %s" -#: plugins/sudoers/visudo.c:942 +#: plugins/sudoers/visudo.c:946 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s: помилковий власник (uid, gid), має бути (%u, %u)\n" -#: plugins/sudoers/visudo.c:953 +#: plugins/sudoers/visudo.c:957 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s: помилкові права доступу, режим доступу має бути 0%o\n" -#: plugins/sudoers/visudo.c:999 plugins/sudoers/visudo.c:1006 +#: plugins/sudoers/visudo.c:1009 plugins/sudoers/visudo.c:1016 #, c-format msgid "%s: parsed OK\n" msgstr "%s: вдала обробка\n" -#: plugins/sudoers/visudo.c:1025 +#: plugins/sudoers/visudo.c:1035 #, c-format msgid "%s busy, try again later" msgstr "%s зайнято, повторіть спробу пізніше" -#: plugins/sudoers/visudo.c:1029 +#: plugins/sudoers/visudo.c:1039 msgid "Edit anyway? [y/N]" msgstr "Редагувати попри усе? [y/N]" -#: plugins/sudoers/visudo.c:1130 +#: plugins/sudoers/visudo.c:1197 +msgid "the -x option will be removed in a future release" +msgstr "параметр -x буде вилучено у наступному випуску" + +#: plugins/sudoers/visudo.c:1199 +msgid "please consider using the cvtsudoers utility instead" +msgstr "будь ласка, скористайтеся замість нього програмою cvtsudoers" + +#: plugins/sudoers/visudo.c:1219 #, c-format msgid "Warning: %s:%d:%d: unused %s \"%s\"" msgstr "Попередження: %s:%d:%d: не використано %s «%s»" -#: plugins/sudoers/visudo.c:1242 +#: plugins/sudoers/visudo.c:1332 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -3742,7 +3766,7 @@ "%s — безпечне редагування файла sudoers\n" "\n" -#: plugins/sudoers/visudo.c:1244 +#: plugins/sudoers/visudo.c:1334 msgid "" "\n" "Options:\n" @@ -3764,38 +3788,49 @@ " -s, --strict строга перевірка синтаксису\n" " -V, --version показати дані щодо версії і завершити роботу\n" -#: toke.l:189 +#: toke.l:184 msgid "empty string" msgstr "порожній рядок" -#: toke.l:201 toke.l:571 +#: toke.l:196 toke.l:566 msgid "empty group" msgstr "порожня група" -#: toke.l:211 toke.l:569 +#: toke.l:206 toke.l:564 msgid "empty netgroup" msgstr "порожня мережева група" -#: toke.l:289 +#: toke.l:284 msgid "unterminated regular expression" msgstr "незавершений формальний вираз" -#: toke.l:363 toke.l:375 toke.l:387 toke.l:403 toke.l:422 toke.l:462 +#: toke.l:358 toke.l:370 toke.l:382 toke.l:398 toke.l:417 toke.l:457 msgid "invalid line continuation" msgstr "некоректне продовження рядка" -#: toke.l:608 toke.l:620 +#: toke.l:603 toke.l:615 msgid "invalid IPv6 address" msgstr "некоректна адреса IPv6" -#: toke.l:876 +#: toke.l:863 msgid "unexpected line break in string" msgstr "неочікуваний розрив рядків у рядку" -#: toke.l:1226 +#: toke.l:983 +msgid "ignoring editor backup file" +msgstr "ігноруємо створений редактором файл резервної копії" + +#: toke.l:986 +msgid "ignoring file name containing '.'" +msgstr "ігноруємо назву файла, що містить '.'" + +#: toke.l:1289 msgid "too many levels of includes" msgstr "занадто високий рівень вкладеності" +#~ msgid "timestamp owner (%s): No such user" +#~ msgstr "власник часового штампа (%s): не знайдено користувача з таким іменем" + #~ msgid "%s must be owned by uid %d" #~ msgstr "%s має належати користувачеві з uid %d" diff -Nru sudo-1.9.13p3/plugins/sudoers/policy.c sudo-1.9.14p2/plugins/sudoers/policy.c --- sudo-1.9.13p3/plugins/sudoers/policy.c 2023-03-04 15:50:13.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/policy.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2010-2022 Todd C. Miller + * Copyright (c) 2010-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -37,6 +37,7 @@ #include "sudoers.h" #include "sudoers_version.h" #include "interfaces.h" +#include "auth/sudo_auth.h" static char **command_info; @@ -49,22 +50,20 @@ char ***info; }; +static struct sudoers_parser_config sudoers_conf = SUDOERS_PARSER_CONFIG_INITIALIZER; static unsigned int sudo_version; static const char *interfaces_string; sudo_conv_t sudo_conv; sudo_printf_t sudo_printf; struct sudo_plugin_event * (*plugin_event_alloc)(void); -const char *path_ldap_conf = _PATH_LDAP_CONF; -const char *path_ldap_secret = _PATH_LDAP_SECRET; +static const char *path_ldap_conf = _PATH_LDAP_CONF; +static const char *path_ldap_secret = _PATH_LDAP_SECRET; +static const char *path_sudoers = _PATH_SUDOERS; static bool session_opened; int sudoedit_nfiles; extern sudo_dso_public struct policy_plugin sudoers_policy; -#ifdef HAVE_BSD_AUTH_H -char *login_style; -#endif /* HAVE_BSD_AUTH_H */ - static int parse_bool(const char *line, int varlen, int *flags, int fval) { @@ -97,12 +96,12 @@ int sudoers_policy_deserialize_info(void *v, struct defaults_list *defaults) { - struct sudoers_open_info *info = v; const char *p, *errstr, *groups = NULL; + struct sudoers_open_info *info = v; + int flags = MODE_UPDATE_TICKET; const char *remhost = NULL; unsigned char uuid[16]; char * const *cur; - int flags = MODE_UPDATE_TICKET; debug_decl(sudoers_policy_deserialize_info, SUDOERS_DEBUG_PLUGIN); #define MATCHES(s, v) \ @@ -126,10 +125,6 @@ } /* Parse sudo.conf plugin args. */ - sudoers_file = _PATH_SUDOERS; - sudoers_mode = SUDOERS_MODE; - sudoers_uid = SUDOERS_UID; - sudoers_gid = SUDOERS_GID; if (info->plugin_args != NULL) { for (cur = info->plugin_args; *cur != NULL; cur++) { if (MATCHES(*cur, "error_recovery=")) { @@ -137,18 +132,18 @@ if (val == -1) { INVALID("error_recovery="); /* Not a fatal error. */ } else { - sudoers_recovery = val; + sudoers_conf.recovery = val; } continue; } if (MATCHES(*cur, "sudoers_file=")) { CHECK(*cur, "sudoers_file="); - sudoers_file = *cur + sizeof("sudoers_file=") - 1; + path_sudoers = *cur + sizeof("sudoers_file=") - 1; continue; } if (MATCHES(*cur, "sudoers_uid=")) { p = *cur + sizeof("sudoers_uid=") - 1; - sudoers_uid = (uid_t) sudo_strtoid(p, &errstr); + sudoers_conf.sudoers_uid = (uid_t)sudo_strtoid(p, &errstr); if (errstr != NULL) { sudo_warnx(U_("%s: %s"), *cur, U_(errstr)); goto bad; @@ -157,7 +152,7 @@ } if (MATCHES(*cur, "sudoers_gid=")) { p = *cur + sizeof("sudoers_gid=") - 1; - sudoers_gid = (gid_t) sudo_strtoid(p, &errstr); + sudoers_conf.sudoers_gid = (gid_t)sudo_strtoid(p, &errstr); if (errstr != NULL) { sudo_warnx(U_("%s: %s"), *cur, U_(errstr)); goto bad; @@ -166,7 +161,7 @@ } if (MATCHES(*cur, "sudoers_mode=")) { p = *cur + sizeof("sudoers_mode=") - 1; - sudoers_mode = sudo_strtomode(p, &errstr); + sudoers_conf.sudoers_mode = sudo_strtomode(p, &errstr); if (errstr != NULL) { sudo_warnx(U_("%s: %s"), *cur, U_(errstr)); goto bad; @@ -185,6 +180,7 @@ } } } + sudoers_conf.sudoers_path = path_sudoers; /* Parse command line settings. */ sudo_user.flags = 0; @@ -349,7 +345,8 @@ #ifdef HAVE_BSD_AUTH_H if (MATCHES(*cur, "bsdauth_type=")) { CHECK(*cur, "bsdauth_type="); - login_style = *cur + sizeof("bsdauth_type=") - 1; + p = *cur + sizeof("bsdauth_type=") - 1; + bsdauth_set_style(p); continue; } #endif /* HAVE_BSD_AUTH_H */ @@ -627,6 +624,27 @@ debug_return_int(MODE_ERROR); } +/* Return the policy's struct sudoers_parser_config. */ +const struct sudoers_parser_config * +policy_sudoers_conf(void) +{ + return &sudoers_conf; +} + +/* Return the path to ldap.conf file, which may be set in the plugin args. */ +const char * +policy_path_ldap_conf(void) +{ + return path_ldap_conf; +} + +/* Return the path to ldap.secret file, which may be set in the plugin args. */ +const char * +policy_path_ldap_secret(void) +{ + return path_ldap_secret; +} + /* * Store the execution environment and other front-end settings. * Builds up the command_info list and sets argv and envp. @@ -927,7 +945,7 @@ if (asprintf(&command_info[info_len++], "umask=0%o", (unsigned int)cmnd_umask) == -1) goto oom; } - if (force_umask) { + if (sudoers_override_umask()) { if ((command_info[info_len++] = strdup("umask_override=true")) == NULL) goto oom; } @@ -1036,6 +1054,7 @@ while (info_len--) free(command_info[info_len]); free(command_info); + command_info = NULL; debug_return_bool(false); } @@ -1119,7 +1138,7 @@ /* Free sudoers sources, sudo_user and passwd/group caches. */ sudoers_cleanup(); - /* command_info is freed by the g/c code. */ + /* command_info was freed by the g/c code. */ command_info = NULL; /* Free error message passed back to front-end, if any. */ @@ -1183,7 +1202,7 @@ exec_args.envp = user_env_out; exec_args.info = command_infop; - ret = sudoers_policy_main(argc, argv, 0, env_add, false, &exec_args); + ret = sudoers_check_cmnd(argc, argv, env_add, &exec_args); #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. */ @@ -1204,8 +1223,6 @@ static int sudoers_policy_validate(const char **errstr) { - char *argv[] = { (char *)"validate", NULL }; - const int argc = 1; int ret; debug_decl(sudoers_policy_validate, SUDOERS_DEBUG_PLUGIN); @@ -1216,7 +1233,7 @@ debug_return_int(-1); } - ret = sudoers_policy_main(argc, argv, I_VERIFYPW, NULL, false, NULL); + ret = sudoers_validate_user(); /* The audit functions set audit_msg on failure. */ if (ret != 1 && audit_msg != NULL) { @@ -1246,17 +1263,13 @@ sudoers_policy_list(int argc, char * const argv[], int verbose, const char *list_user, const char **errstr) { - char *list_argv[] = { (char *)"list", NULL }; int ret; debug_decl(sudoers_policy_list, SUDOERS_DEBUG_PLUGIN); - if (argc == 0) { + if (argc == 0) SET(sudo_mode, MODE_LIST); - argc = 1; - argv = list_argv; - } else { + else SET(sudo_mode, MODE_CHECK); - } if ((sudo_mode & LIST_VALID_FLAGS) != sudo_mode) { sudo_warnx(U_("%s: invalid mode flags from sudo front end: 0x%x"), @@ -1264,18 +1277,7 @@ debug_return_int(-1); } - if (list_user) { - list_pw = sudo_getpwnam(list_user); - if (list_pw == NULL) { - sudo_warnx(U_("unknown user %s"), list_user); - debug_return_int(-1); - } - } - ret = sudoers_policy_main(argc, argv, I_LISTPW, NULL, verbose, NULL); - if (list_user) { - sudo_pw_delref(list_pw); - list_pw = NULL; - } + ret = sudoers_list(argc, argv, list_user, verbose); /* The audit functions set audit_msg on failure. */ if (ret != 1 && audit_msg != NULL) { @@ -1296,7 +1298,7 @@ SUDOERS_GRAMMAR_VERSION); if (verbose) { - sudo_printf(SUDO_CONV_INFO_MSG, _("\nSudoers path: %s\n"), sudoers_file); + sudo_printf(SUDO_CONV_INFO_MSG, _("\nSudoers path: %s\n"), path_sudoers); #ifdef HAVE_LDAP # ifdef _PATH_NSSWITCH_CONF sudo_printf(SUDO_CONV_INFO_MSG, _("nsswitch path: %s\n"), _PATH_NSSWITCH_CONF); diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/editor/check_editor.c sudo-1.9.14p2/plugins/sudoers/regress/editor/check_editor.c --- sudo-1.9.13p3/plugins/sudoers/regress/editor/check_editor.c 2023-02-14 16:52:37.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/editor/check_editor.c 2023-07-15 15:37:22.000000000 +0000 @@ -80,8 +80,7 @@ /* STUB */ int find_path(const char *infile, char **outfile, struct stat *sbp, - const char *path, const char *runchroot, int ignore_dot, - char * const *allowlist) + const char *path, int ignore_dot, char * const *allowlist) { if (infile[0] == '/') { *outfile = strdup(infile); diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/fuzz/fuzz_policy.c sudo-1.9.14p2/plugins/sudoers/regress/fuzz/fuzz_policy.c --- sudo-1.9.13p3/plugins/sudoers/regress/fuzz/fuzz_policy.c 2023-02-14 16:53:06.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/fuzz/fuzz_policy.c 2023-07-15 15:37:23.000000000 +0000 @@ -42,6 +42,7 @@ #include "sudo_iolog.h" #include "interfaces.h" #include "check.h" +#include "auth/sudo_auth.h" extern char **environ; extern sudo_dso_public struct policy_plugin sudoers_policy; @@ -173,8 +174,8 @@ /* * The fuzzing environment may not have DNS available, this may result - * in long delays that cause a timeout when fuzzing. This getaddrinfo() - * can look up "localhost" and returns an error for anything else. + * in long delays that cause a timeout when fuzzing. + * This getaddrinfo() resolves every name as "localhost" (127.0.0.1). */ #ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION /* Avoid compilation errors if getaddrinfo() or freeaddrinfo() are macros. */ @@ -192,12 +193,30 @@ { struct addrinfo *ai; struct in_addr addr; + unsigned short port = 0; /* Stub getaddrinfo(3) to avoid a DNS timeout in CIfuzz. */ - if (strcmp(nodename, "localhost") != 0 || servname != NULL) - return EAI_FAIL; + if (servname == NULL) { + /* Must have either nodename or servname. */ + if (nodename == NULL) + return EAI_NONAME; + } else { + struct servent *servent; + const char *errstr; + + /* Parse servname as a port number or IPv4 TCP service name. */ + port = sudo_strtonum(servname, 0, USHRT_MAX, &errstr); + if (errstr != NULL && errno == ERANGE) + return EAI_SERVICE; + if (hints != NULL && ISSET(hints->ai_flags, AI_NUMERICSERV)) + return EAI_NONAME; + servent = getservbyname(servname, "tcp"); + if (servent == NULL) + return EAI_NONAME; + port = htons(servent->s_port); + } - /* Hard-code localhost. */ + /* Hard-code IPv4 localhost for fuzzing. */ ai = calloc(1, sizeof(*ai) + sizeof(struct sockaddr_in)); if (ai == NULL) return EAI_MEMORY; @@ -213,6 +232,7 @@ inet_pton(AF_INET, "127.0.0.1", &addr); ((struct sockaddr_in *)ai->ai_addr)->sin_family = AF_INET; ((struct sockaddr_in *)ai->ai_addr)->sin_addr = addr; + ((struct sockaddr_in *)ai->ai_addr)->sin_port = htons(port); *res = ai; return 0; } @@ -498,13 +518,9 @@ sudoers_policy.close(0, 0); else sudoers_cleanup(); - - /* Call a second time to free old env pointer. */ - env_init(NULL); } sudoers_policy.deregister_hooks(SUDO_API_VERSION, fuzz_hook_stub); - sudoers_gc_run(); free_dynamic_array(&plugin_args); free_dynamic_array(&settings); @@ -598,7 +614,7 @@ /* STUB */ static struct sudoers_parse_tree * -sudo_file_parse(struct sudo_nss *nss) +sudo_file_parse(const struct sudo_nss *nss) { static struct sudoers_parse_tree parse_tree; @@ -607,14 +623,14 @@ /* STUB */ static int -sudo_file_query(struct sudo_nss *nss, struct passwd *pw) +sudo_file_query(const struct sudo_nss *nss, struct passwd *pw) { return 0; } /* STUB */ static int -sudo_file_getdefs(struct sudo_nss *nss) +sudo_file_getdefs(const struct sudo_nss *nss) { /* Set some Defaults */ set_default("log_input", NULL, true, "sudoers", 1, 1, false); @@ -799,8 +815,7 @@ /* STUB */ int find_path(const char *infile, char **outfile, struct stat *sbp, - const char *path, const char *runchroot, int ignore_dot, - char * const *allowlist) + const char *path, int ignore_dot, char * const *allowlist) { switch (pass) { case PASS_CHECK_NOT_FOUND: @@ -875,3 +890,11 @@ { return true; } + +/* STUB */ +void +bsdauth_set_style(const char *style) +{ + return; +} + diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/fuzz/fuzz_stubs.c sudo-1.9.14p2/plugins/sudoers/regress/fuzz/fuzz_stubs.c --- sudo-1.9.13p3/plugins/sudoers/regress/fuzz/fuzz_stubs.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/fuzz/fuzz_stubs.c 2023-07-15 15:37:22.000000000 +0000 @@ -39,6 +39,7 @@ #include #include "sudoers.h" +#include "check.h" #include "interfaces.h" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); @@ -56,6 +57,18 @@ return; } +bool +pivot_root(const char *new_root, int fds[2]) +{ + return true; +} + +bool +unpivot_root(int fds[2]) +{ + return true; +} + int group_plugin_query(const char *user, const char *group, const struct passwd *pw) { @@ -80,8 +93,14 @@ return true; } +void +timestamp_set_owner(uid_t uid, gid_t gid) +{ + return; +} + bool -sudo_nss_can_continue(struct sudo_nss *nss, int match) +sudo_nss_can_continue(const struct sudo_nss *nss, int match) { return true; } diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/fuzz/fuzz_sudoers.c sudo-1.9.14p2/plugins/sudoers/regress/fuzz/fuzz_sudoers.c --- sudo-1.9.13p3/plugins/sudoers/regress/fuzz/fuzz_sudoers.c 2023-02-25 18:21:47.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/fuzz/fuzz_sudoers.c 2023-07-15 15:37:23.000000000 +0000 @@ -56,7 +56,7 @@ int sudo_mode; FILE * -open_sudoers(const char *file, bool doedit, bool *keepopen) +open_sudoers(const char *file, char **outfile, bool doedit, bool *keepopen) { /* * If we allow the fuzzer to choose include paths it will @@ -131,7 +131,7 @@ } static int -sudo_fuzz_query(struct sudo_nss *nss, struct passwd *pw) +sudo_fuzz_query(const struct sudo_nss *nss, struct passwd *pw) { return 0; } @@ -304,7 +304,7 @@ } /* Only one sudoers source, the sudoers file itself. */ - init_parse_tree(&parse_tree, NULL, NULL); + init_parse_tree(&parse_tree, NULL, NULL, NULL); memset(&sudo_nss_fuzz, 0, sizeof(sudo_nss_fuzz)); sudo_nss_fuzz.parse_tree = &parse_tree; sudo_nss_fuzz.query = sudo_fuzz_query; @@ -312,7 +312,7 @@ /* Initialize defaults and parse sudoers. */ init_defaults(); - init_parser("sudoers", false, true); + init_parser("sudoers", NULL); sudoersrestart(fp); sudoersparse(); reparent_parse_tree(&parse_tree); @@ -398,7 +398,7 @@ /* Cleanup. */ fclose(fp); free_parse_tree(&parse_tree); - init_parser(NULL, true, true); + reset_parser(); if (sudo_user.pw != NULL) sudo_pw_delref(sudo_user.pw); if (runas_pw != NULL) diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.c sudo-1.9.14p2/plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.c --- sudo-1.9.13p3/plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.c 2023-07-15 15:37:23.000000000 +0000 @@ -37,7 +37,7 @@ sudo_printf_t sudo_printf = fuzz_printf; FILE * -open_sudoers(const char *file, bool doedit, bool *keepopen) +open_sudoers(const char *file, char **outfile, bool doedit, bool *keepopen) { /* * If we allow the fuzzer to choose include paths it will @@ -139,7 +139,7 @@ /* Initialize defaults and parse LDIF-format sudoers. */ init_defaults(); - init_parse_tree(&parse_tree, NULL, NULL); + init_parse_tree(&parse_tree, NULL, NULL, NULL); sudoers_parse_ldif(&parse_tree, fp, "ou=SUDOers,dc=sudo,dc=ws", true); /* Cleanup. */ diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/parser/check_digest.c sudo-1.9.14p2/plugins/sudoers/regress/parser/check_digest.c --- sudo-1.9.13p3/plugins/sudoers/regress/parser/check_digest.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/parser/check_digest.c 2023-07-15 15:37:22.000000000 +0000 @@ -46,7 +46,8 @@ }; static unsigned char * -check_digest(int digest_type, const char *buf, size_t buflen, size_t *digest_len) +check_digest(unsigned int digest_type, const char *buf, size_t buflen, + size_t *digest_len) { char tfile[] = "digest.XXXXXX"; unsigned char *digest = NULL; @@ -86,7 +87,7 @@ unsigned char *digest; unsigned int i, j; size_t digest_len; - int digest_type; + unsigned int digest_type; initprogname(argc > 0 ? argv[0] : "check_digest"); diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/parser/check_fill.c sudo-1.9.14p2/plugins/sudoers/regress/parser/check_fill.c --- sudo-1.9.13p3/plugins/sudoers/regress/parser/check_fill.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/parser/check_fill.c 2023-07-15 15:37:23.000000000 +0000 @@ -44,7 +44,6 @@ */ YYSTYPE sudoerslval; -bool sudoers_strict; struct fill_test { const char *input; @@ -191,6 +190,13 @@ } /* STUB */ +bool +sudoers_strict(void) +{ + return false; +} + +/* STUB */ bool parser_leak_add(enum parser_leak_types type, void *v) { diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/starttime/check_starttime.c sudo-1.9.14p2/plugins/sudoers/regress/starttime/check_starttime.c --- sudo-1.9.13p3/plugins/sudoers/regress/starttime/check_starttime.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/starttime/check_starttime.c 2023-07-15 15:37:23.000000000 +0000 @@ -32,6 +32,8 @@ sudo_dso_public int main(int argc, char *argv[]); +#if defined(sudo_kinfo_proc) || defined(__linux__) || defined(HAVE_STRUCT_PSINFO_PR_TTYDEV) || defined(HAVE_PSTAT_GETPROC) || defined(__gnu_hurd__) + #ifdef __linux__ static int get_now(struct timespec *now) @@ -124,5 +126,16 @@ getprogname(), ntests, errors, (ntests - errors) * 100 / ntests); } - exit(errors); + return errors; +} + +#else + +int +main(int argc, char *argv[]) +{ + /* get_starttime not supported */ + return 0; } + +#endif diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/sudoers/test27.json.ok sudo-1.9.14p2/plugins/sudoers/regress/sudoers/test27.json.ok --- sudo-1.9.13p3/plugins/sudoers/regress/sudoers/test27.json.ok 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/sudoers/test27.json.ok 2023-07-15 15:37:22.000000000 +0000 @@ -40,6 +40,9 @@ ], "Cmnd_Specs": [ { + "runasusers": [ + { "username": "" } + ], "runasgroups": [ { "usergroup": "wheel" } ], @@ -61,6 +64,9 @@ ], "Cmnd_Specs": [ { + "runasusers": [ + { "username": "" } + ], "runasgroups": [ { "usergroup": "ALL" } ], diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/sudoers/test27.ldif.ok sudo-1.9.14p2/plugins/sudoers/regress/sudoers/test27.ldif.ok --- sudo-1.9.13p3/plugins/sudoers/regress/sudoers/test27.ldif.ok 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/sudoers/test27.ldif.ok 2023-07-15 15:37:22.000000000 +0000 @@ -22,6 +22,7 @@ cn: millert sudoUser: millert sudoHost: ALL +sudoRunAsUser: sudoRunAsGroup: wheel sudoCommand: ALL sudoOrder: 2 @@ -32,6 +33,7 @@ cn: %sudo sudoUser: %sudo sudoHost: ALL +sudoRunAsUser: sudoRunAsGroup: ALL sudoCommand: ALL sudoOrder: 3 diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/sudoers/test27.out.ok sudo-1.9.14p2/plugins/sudoers/regress/sudoers/test27.out.ok --- sudo-1.9.13p3/plugins/sudoers/regress/sudoers/test27.out.ok 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/sudoers/test27.out.ok 2023-07-15 15:37:22.000000000 +0000 @@ -3,7 +3,7 @@ Defaults always_query_group_plugin root ALL = (root : wheel) ALL -millert ALL = ( : wheel) ALL -%sudo ALL = ( : ALL) ALL +millert ALL = (root : wheel) ALL +%sudo ALL = (root : ALL) ALL operator ALL = (%wheel) ALL +netusers +nethosts = (+netrunas) ALL diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/group sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/group --- sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/group 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/group 2023-07-15 15:37:23.000000000 +0000 @@ -11,5 +11,6 @@ games:*:13: staff:*:20:root guest:*:31:root +admin:*:1000: nogroup:*:32766: nobody:*:32767: diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/passwd sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/passwd --- sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/passwd 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/passwd 2023-07-15 15:37:23.000000000 +0000 @@ -0,0 +1,6 @@ +root:*:0:0:Charlie &:/root:/bin/sh +daemon:*:1:1:The devil himself:/root:/sbin/nologin +operator:*:2:5:System &:/operator:/sbin/nologin +bin:*:3:7:Binaries Commands and Source:/:/sbin/nologin +admin:*:1000:1000:Admin user:/home/admin:/bin/sh +nobody:*:32767:32767:Unprivileged user:/nonexistent:/sbin/nologin diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/test21.out.ok sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/test21.out.ok --- sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/test21.out.ok 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/test21.out.ok 2023-07-15 15:37:23.000000000 +0000 @@ -0,0 +1,10 @@ +Parses OK + +Entries for user admin: + +ALL = (USERALIAS : GROUPALIAS) /bin/ls + host matched + runas matched + cmnd allowed + +Command allowed diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/test21.sh sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/test21.sh --- sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/test21.sh 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/test21.sh 2023-07-15 15:37:22.000000000 +0000 @@ -0,0 +1,20 @@ +#!/bin/sh +# +# Verify that a Runas_Alias works in both user and group lists. +# This tests a bug fixed in sudo 1.9.14. +# + +: ${TESTSUDOERS=testsudoers} + +exec 2>&1 + +# The user in USERALIAS must *not* belong to the group in GROUPALIAS +# in the group or passwd file in order to reproduce the bug. +$TESTSUDOERS -u root -g bin -p ${TESTDIR}/passwd -P ${TESTDIR}/group \ + admin /bin/ls <<'EOF' +Runas_Alias USERALIAS = root +Runas_Alias GROUPALIAS = bin +admin ALL = (USERALIAS : GROUPALIAS) /bin/ls +EOF + +exit 0 diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/test22.out.ok sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/test22.out.ok --- sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/test22.out.ok 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/test22.out.ok 2023-07-15 15:37:23.000000000 +0000 @@ -0,0 +1,8 @@ +Parses OK + +Entries for user admin: + +ALL = /bin/ls + host matched + +Command unmatched diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/test22.sh sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/test22.sh --- sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/test22.sh 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/test22.sh 2023-07-15 15:37:22.000000000 +0000 @@ -0,0 +1,18 @@ +#!/bin/sh +# +# Verify that a user is only allowed to run commands with a group +# that is specified by sudoers (or that the runas user is a member of). +# This tests a bug fixed in sudo 1.9.14. +# + +: ${TESTSUDOERS=testsudoers} + +exec 2>&1 + +# The root user must *not* belong to the group specified below. +$TESTSUDOERS -u root -g bin -p ${TESTDIR}/passwd -P ${TESTDIR}/group \ + admin /bin/ls <<'EOF' +admin ALL = /bin/ls +EOF + +exit 0 diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/test23.out.ok sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/test23.out.ok --- sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/test23.out.ok 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/test23.out.ok 2023-07-15 15:37:23.000000000 +0000 @@ -0,0 +1,8 @@ +Parses OK + +Entries for user admin: + +ALL = (root) /bin/ls + host matched + +Command unmatched diff -Nru sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/test23.sh sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/test23.sh --- sudo-1.9.13p3/plugins/sudoers/regress/testsudoers/test23.sh 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/regress/testsudoers/test23.sh 2023-07-15 15:37:22.000000000 +0000 @@ -0,0 +1,17 @@ +#!/bin/sh +# +# Verify that a user is not allowed to run commands with their own +# user and group if sudoers doesn't explicitly permit it. +# This tests a bug fixed in sudo 1.9.14. +# + +: ${TESTSUDOERS=testsudoers} + +exec 2>&1 + +$TESTSUDOERS -u admin -g admin -p ${TESTDIR}/passwd -P ${TESTDIR}/group \ + admin /bin/ls <<'EOF' +admin ALL = (root) /bin/ls +EOF + +exit 0 diff -Nru sudo-1.9.13p3/plugins/sudoers/set_perms.c sudo-1.9.14p2/plugins/sudoers/set_perms.c --- sudo-1.9.13p3/plugins/sudoers/set_perms.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/set_perms.c 2023-07-15 15:37:23.000000000 +0000 @@ -40,6 +40,7 @@ #include #include "sudoers.h" +#include "check.h" /* * Prototypes @@ -294,7 +295,11 @@ } break; - case PERM_SUDOERS: + case PERM_SUDOERS: { + const uid_t sudoers_uid = sudoers_file_uid(); + const gid_t sudoers_gid = sudoers_file_gid(); + const mode_t sudoers_mode = sudoers_file_mode(); + state->gidlist = ostate->gidlist; sudo_gidlist_addref(state->gidlist); @@ -333,6 +338,7 @@ goto bad; } break; + } case PERM_TIMESTAMP: state->gidlist = ostate->gidlist; @@ -341,7 +347,7 @@ state->egid = ostate->egid; state->sgid = ostate->sgid; state->ruid = ROOT_UID; - state->euid = timestamp_uid; + state->euid = timestamp_get_uid(); state->suid = ROOT_UID; sudo_debug_printf(SUDO_DEBUG_INFO, "%s: PERM_TIMESTAMP: uid: " "[%d, %d, %d] -> [%d, %d, %d]", __func__, @@ -618,7 +624,11 @@ } break; - case PERM_SUDOERS: + case PERM_SUDOERS: { + const uid_t sudoers_uid = sudoers_file_uid(); + const gid_t sudoers_gid = sudoers_file_gid(); + const mode_t sudoers_mode = sudoers_file_mode(); + state->gidlist = ostate->gidlist; sudo_gidlist_addref(state->gidlist); @@ -666,6 +676,7 @@ } } break; + } case PERM_TIMESTAMP: state->gidlist = ostate->gidlist; @@ -674,7 +685,7 @@ state->egid = ostate->egid; state->sgid = ostate->sgid; state->ruid = ROOT_UID; - state->euid = timestamp_uid; + state->euid = timestamp_get_uid(); state->suid = ROOT_UID; sudo_debug_printf(SUDO_DEBUG_INFO, "%s: PERM_TIMESTAMP: uid: " "[%d, %d, %d] -> [%d, %d, %d]", __func__, @@ -689,10 +700,10 @@ goto bad; } } - if (setuidx(ID_EFFECTIVE, timestamp_uid)) { + if (setuidx(ID_EFFECTIVE, state->euid)) { (void)snprintf(errbuf, sizeof(errbuf), "PERM_TIMESTAMP: setuidx(ID_EFFECTIVE, %d)", - (int)timestamp_uid); + (int)state->euid); goto bad; } } @@ -1011,7 +1022,11 @@ } break; - case PERM_SUDOERS: + case PERM_SUDOERS: { + const uid_t sudoers_uid = sudoers_file_uid(); + const gid_t sudoers_gid = sudoers_file_gid(); + const mode_t sudoers_mode = sudoers_file_mode(); + state->gidlist = ostate->gidlist; sudo_gidlist_addref(state->gidlist); @@ -1046,6 +1061,7 @@ goto bad; } break; + } case PERM_TIMESTAMP: state->gidlist = ostate->gidlist; @@ -1053,7 +1069,7 @@ state->rgid = ostate->rgid; state->egid = ostate->egid; state->ruid = ROOT_UID; - state->euid = timestamp_uid; + state->euid = timestamp_get_uid(); sudo_debug_printf(SUDO_DEBUG_INFO, "%s: PERM_TIMESTAMP: uid: " "[%d, %d] -> [%d, %d]", __func__, (int)ostate->ruid, (int)ostate->euid, (int)state->ruid, (int)state->euid); @@ -1320,7 +1336,11 @@ } break; - case PERM_SUDOERS: + case PERM_SUDOERS: { + const uid_t sudoers_uid = sudoers_file_uid(); + const gid_t sudoers_gid = sudoers_file_gid(); + const mode_t sudoers_mode = sudoers_file_mode(); + state->gidlist = ostate->gidlist; sudo_gidlist_addref(state->gidlist); @@ -1354,6 +1374,7 @@ goto bad; } break; + } case PERM_TIMESTAMP: state->gidlist = ostate->gidlist; @@ -1361,13 +1382,13 @@ state->rgid = ostate->rgid; state->egid = ostate->egid; state->ruid = ROOT_UID; - state->euid = timestamp_uid; + state->euid = timestamp_get_uid(); sudo_debug_printf(SUDO_DEBUG_INFO, "%s: PERM_TIMESTAMP: uid: " "[%d, %d] -> [%d, %d]", __func__, (int)ostate->ruid, (int)ostate->euid, (int)state->ruid, (int)state->euid); - if (seteuid(timestamp_uid)) { + if (seteuid(state->euid)) { (void)snprintf(errbuf, sizeof(errbuf), - "PERM_TIMESTAMP: seteuid(%d)", (int)timestamp_uid); + "PERM_TIMESTAMP: seteuid(%d)", (int)state->euid); goto bad; } break; diff -Nru sudo-1.9.13p3/plugins/sudoers/sssd.c sudo-1.9.14p2/plugins/sudoers/sssd.c --- sudo-1.9.13p3/plugins/sudoers/sssd.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/sssd.c 2023-07-15 15:37:23.000000000 +0000 @@ -203,7 +203,7 @@ switch (*val) { case '+': /* Netgroup spec found, check membership. */ - if (netgr_matches(val, def_netgroup_tuple ? host : NULL, + if (netgr_matches(NULL, val, def_netgroup_tuple ? host : NULL, def_netgroup_tuple ? shost : NULL, handle->pw->pw_name)) { ret = true; } @@ -485,7 +485,7 @@ } static struct sss_sudo_result * -sudo_sss_result_get(struct sudo_nss *nss, struct passwd *pw) +sudo_sss_result_get(const struct sudo_nss *nss, struct passwd *pw) { struct sudo_sss_handle *handle = nss->handle; struct sss_sudo_result *sss_result = NULL; @@ -638,7 +638,8 @@ } /* The "parse tree" contains userspecs, defaults, aliases and hostnames. */ - init_parse_tree(&handle->parse_tree, handle->ipa_host, handle->ipa_shost); + init_parse_tree(&handle->parse_tree, handle->ipa_host, handle->ipa_shost, + nss); nss->handle = handle; sudo_debug_printf(SUDO_DEBUG_DEBUG, "handle=%p", handle); @@ -650,7 +651,7 @@ * Perform query for user and host and convert to sudoers parse tree. */ static int -sudo_sss_query(struct sudo_nss *nss, struct passwd *pw) +sudo_sss_query(const struct sudo_nss *nss, struct passwd *pw) { struct sudo_sss_handle *handle = nss->handle; struct sss_sudo_result *sss_result = NULL; @@ -714,7 +715,7 @@ * The contents will be populated by the getdefs() and query() functions. */ static struct sudoers_parse_tree * -sudo_sss_parse(struct sudo_nss *nss) +sudo_sss_parse(const struct sudo_nss *nss) { struct sudo_sss_handle *handle = nss->handle; debug_decl(sudo_sss_parse, SUDOERS_DEBUG_SSSD); @@ -729,7 +730,7 @@ } static int -sudo_sss_getdefs(struct sudo_nss *nss) +sudo_sss_getdefs(const struct sudo_nss *nss) { struct sudo_sss_handle *handle = nss->handle; struct sss_sudo_result *sss_result = NULL; diff -Nru sudo-1.9.13p3/plugins/sudoers/starttime.c sudo-1.9.14p2/plugins/sudoers/starttime.c --- sudo-1.9.13p3/plugins/sudoers/starttime.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/starttime.c 2023-07-15 15:37:23.000000000 +0000 @@ -47,6 +47,12 @@ # include #endif +#if defined(__gnu_hurd__) +# include +# include +# include +#endif + #include #include #include @@ -298,6 +304,31 @@ "unable to get start time for %d via pstat_getproc", (int)pid); debug_return_int(-1); } +#elif defined(__gnu_hurd__) +int +get_starttime(pid_t pid, struct timespec *starttime) +{ + mach_msg_type_number_t count; + struct task_basic_info info; + kern_return_t error; + task_t target; + debug_decl(get_starttime, SUDOERS_DEBUG_UTIL); + + target = pid2task(pid); + if (target != MACH_PORT_NULL) { + count = sizeof(info) / sizeof(integer_t); + error = task_info(target, TASK_BASIC_INFO, (task_info_t)&info, &count); + if (error == KERN_SUCCESS) { + starttime->tv_sec = info.creation_time.seconds; + starttime->tv_nsec = info.creation_time.microseconds * 1000; + debug_return_int(0); + } + } + + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, + "unable to get start time for %d via task_info", (int)pid); + debug_return_int(-1); +} #else int get_starttime(pid_t pid, struct timespec *starttime) diff -Nru sudo-1.9.13p3/plugins/sudoers/stubs.c sudo-1.9.14p2/plugins/sudoers/stubs.c --- sudo-1.9.13p3/plugins/sudoers/stubs.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/stubs.c 2023-07-15 15:37:22.000000000 +0000 @@ -96,6 +96,20 @@ return; } +/* STUB */ +bool +pivot_root(const char *new_root, int fds[2]) +{ + return true; +} + +/* STUB */ +bool +unpivot_root(int fds[2]) +{ + return true; +} + /* * Look up the hostname and set user_host and user_shost. */ diff -Nru sudo-1.9.13p3/plugins/sudoers/sudoers.c sudo-1.9.14p2/plugins/sudoers/sudoers.c --- sudo-1.9.13p3/plugins/sudoers/sudoers.c 2023-03-04 15:50:12.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/sudoers.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1993-1996, 1998-2022 Todd C. Miller + * Copyright (c) 1993-1996, 1998-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -62,7 +62,6 @@ #endif #include "sudoers.h" -#include "parse.h" #include "check.h" #include "auth/sudo_auth.h" #include "sudo_iolog.h" @@ -83,15 +82,13 @@ */ struct sudo_user sudo_user; struct passwd *list_pw; -uid_t timestamp_uid; -gid_t timestamp_gid; -bool force_umask; int sudo_mode; static char *prev_user; static struct sudo_nss_list *snl; static bool unknown_runas_uid; static bool unknown_runas_gid; +static bool override_umask; static int cmnd_status = -1; static struct defaults_list initial_defaults = TAILQ_HEAD_INITIALIZER(initial_defaults); @@ -187,8 +184,10 @@ sudoers_error_hook = logger; /* No need to check the admin flag file multiple times. */ - if (ISSET(sudo_mode, MODE_POLICY_INTERCEPTED)) + if (ISSET(sudo_mode, MODE_POLICY_INTERCEPTED)) { + free(def_admin_flag); def_admin_flag = NULL; + } debug_return_bool(true); } @@ -249,7 +248,6 @@ } /* Open and parse sudoers, set global defaults. */ - init_parser(sudoers_file, false, false); TAILQ_FOREACH_SAFE(nss, snl, entries, nss_next) { if (nss->open(nss) == -1 || (nss->parse_tree = nss->parse(nss)) == NULL) { TAILQ_REMOVE(snl, nss, entries); @@ -259,7 +257,7 @@ /* Missing/invalid defaults is not a fatal error. */ if (nss->getdefs(nss) == -1) { - log_warningx(SLOG_SEND_MAIL|SLOG_NO_STDERR, + log_warningx(SLOG_PARSE_ERROR|SLOG_NO_STDERR, N_("unable to get defaults from %s"), nss->source); } else { (void)update_defaults(nss->parse_tree, NULL, @@ -384,97 +382,37 @@ 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) +/* + * Find the command, perform a sudoers lookup, ask for a password as + * needed, and perform post-lokup checks. Logs success/failure. + * This is used by the check, list and validate plugin methods. + * + * Returns true if allowed, false if denied, -1 on error and + * -2 for usage error. + */ +static int +sudoers_check_common(int pwflag) { - char *iolog_path = NULL; - mode_t cmnd_umask = ACCESSPERMS; int oldlocale, validated, ret = -1; - debug_decl(sudoers_policy_main, SUDOERS_DEBUG_PLUGIN); - - sudo_warn_set_locale_func(sudoers_warn_setlocale); - - if (argc == 0) { - sudo_warnx("%s", U_("no command specified")); - debug_return_int(-1); - } - - if (need_reinit) { - /* Was previous command intercepted? */ - if (ISSET(sudo_mode, MODE_RUN) && def_intercept) - SET(sudo_mode, MODE_POLICY_INTERCEPTED); + debug_decl(sudoers_check_common, SUDOERS_DEBUG_PLUGIN); - /* 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 (!sudoers_reinit_defaults()) - debug_return_int(-1); - } - need_reinit = true; + /* If given the -P option, set the "preserve_groups" flag. */ + if (ISSET(sudo_mode, MODE_PRESERVE_GROUPS)) + def_preserve_groups = true; - unlimit_nproc(); + /* Find command in path and apply per-command Defaults. */ + cmnd_status = set_cmnd(); + if (cmnd_status == NOT_FOUND_ERROR) + goto done; /* Is root even allowed to run sudo? */ if (user_uid == 0 && !def_root_sudo) { /* Not an audit event (should it be?). */ sudo_warnx("%s", U_("sudoers specifies that root is not allowed to sudo")); - goto bad; - } - - if (!set_perms(PERM_INITIAL)) - goto bad; - - /* Environment variables specified on the command line. */ - if (env_add != NULL && env_add[0] != NULL) - sudo_user.env_vars = env_add; - - /* - * Make a local copy of argc/argv, with special handling for the - * '-i' option. We also allocate an extra slot for bash's --login. - */ - if (NewArgv != NULL && NewArgv != saved_argv) { - sudoers_gc_remove(GC_PTR, NewArgv); - free(NewArgv); - } - NewArgv = reallocarray(NULL, argc + 2, sizeof(char *)); - if (NewArgv == NULL) { - sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + ret = false; goto done; } - sudoers_gc_add(GC_PTR, NewArgv); - if (ISSET(sudo_mode, MODE_CHECK)) { - /* For "sudo -l [-U otheruser] command" */ - NewArgv[0] = (char *)"list"; - memcpy(NewArgv + 1, argv, argc * sizeof(char *)); - NewArgc = argc + 1; - } else { - memcpy(NewArgv, argv, argc * sizeof(char *)); - NewArgc = argc; - } - NewArgv[NewArgc] = NULL; - if (ISSET(sudo_mode, MODE_LOGIN_SHELL) && runas_pw != NULL) { - NewArgv[0] = strdup(runas_pw->pw_shell); - if (NewArgv[0] == NULL) { - sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - goto done; - } - sudoers_gc_add(GC_PTR, NewArgv[0]); - } - - /* If given the -P option, set the "preserve_groups" flag. */ - if (ISSET(sudo_mode, MODE_PRESERVE_GROUPS)) - def_preserve_groups = true; - - /* Find command in path and apply per-command Defaults. */ - cmnd_status = set_cmnd(); - if (cmnd_status == NOT_FOUND_ERROR) - goto done; /* Check for -C overriding def_closefrom. */ if (user_closefrom >= 0 && user_closefrom != def_closefrom) { @@ -492,14 +430,12 @@ */ sudoers_setlocale(SUDOERS_LOCALE_SUDOERS, &oldlocale); validated = sudoers_lookup(snl, sudo_user.pw, &cmnd_status, pwflag); + sudoers_setlocale(oldlocale, NULL); if (ISSET(validated, VALIDATE_ERROR)) { /* The lookup function should have printed an error. */ goto done; } - /* Restore user's locale. */ - sudoers_setlocale(oldlocale, NULL); - if (safe_cmnd == NULL) { if ((safe_cmnd = strdup(user_cmnd)) == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); @@ -520,33 +456,6 @@ } } - /* - * Look up the timestamp dir owner if one is specified. - */ - if (def_timestampowner) { - struct passwd *pw = NULL; - - if (*def_timestampowner == '#') { - const char *errstr; - uid_t uid = sudo_strtoid(def_timestampowner + 1, &errstr); - if (errstr == NULL) - pw = sudo_getpwuid(uid); - } - if (pw == NULL) - pw = sudo_getpwnam(def_timestampowner); - if (pw != NULL) { - timestamp_uid = pw->pw_uid; - timestamp_gid = pw->pw_gid; - sudo_pw_delref(pw); - } else { - /* XXX - audit too? */ - log_warningx(SLOG_SEND_MAIL, - N_("timestamp owner (%s): No such user"), def_timestampowner); - timestamp_uid = ROOT_UID; - timestamp_gid = ROOT_GID; - } - } - /* If no command line args and "shell_noargs" is not set, error out. */ if (ISSET(sudo_mode, MODE_IMPLIED_SHELL) && !def_shell_noargs) { /* Not an audit event. */ @@ -554,19 +463,21 @@ goto done; } - /* Bail if a tty is required and we don't have one. */ + /* Bail if a tty is required and we don't have one. */ if (def_requiretty && !tty_present()) { log_warningx(SLOG_NO_STDERR|SLOG_AUDIT, N_("no tty")); sudo_warnx("%s", U_("sorry, you must have a tty to run sudo")); goto bad; } - /* Check runas user's shell. */ - if (!check_user_shell(runas_pw)) { - log_warningx(SLOG_RAW_MSG|SLOG_AUDIT, - N_("invalid shell for user %s: %s"), - runas_pw->pw_name, runas_pw->pw_shell); - goto bad; + /* Check runas user's shell if running (or checking) a command. */ + if (ISSET(sudo_mode, MODE_RUN|MODE_CHECK)) { + if (!check_user_shell(runas_pw)) { + log_warningx(SLOG_RAW_MSG|SLOG_AUDIT, + N_("invalid shell for user %s: %s"), + runas_pw->pw_name, runas_pw->pw_shell); + goto bad; + } } /* @@ -652,12 +563,10 @@ goto bad; } else if (cmnd_status == NOT_FOUND) { if (ISSET(sudo_mode, MODE_CHECK)) { - audit_failure(NewArgv, N_("%s: command not found"), - NewArgv[1]); + audit_failure(NewArgv, N_("%s: command not found"), NewArgv[1]); sudo_warnx(U_("%s: command not found"), NewArgv[1]); } else { - audit_failure(NewArgv, N_("%s: command not found"), - user_cmnd); + audit_failure(NewArgv, N_("%s: command not found"), user_cmnd); sudo_warnx(U_("%s: command not found"), user_cmnd); if (strncmp(user_cmnd, "cd", 2) == 0 && (user_cmnd[2] == '\0' || isblank((unsigned char)user_cmnd[2]))) { @@ -682,7 +591,7 @@ } /* If user specified env vars make sure sudoers allows it. */ - if (ISSET(sudo_mode, MODE_RUN) && !def_setenv) { + if (ISSET(sudo_mode, MODE_RUN|MODE_CHECK) && !def_setenv) { if (ISSET(sudo_mode, MODE_PRESERVE_ENV)) { log_warningx(SLOG_NO_STDERR|SLOG_AUDIT, N_("user not allowed to preserve the environment")); @@ -695,11 +604,97 @@ } } - if (ISSET(sudo_mode, (MODE_RUN | MODE_EDIT)) && !remote_iologs) { + ret = true; + goto done; + +bad: + ret = false; +done: + debug_return_int(ret); +} + +static bool need_reinit; + +/* + * Check whether the user is allowed to run the specified command. + * Returns true if allowed, false if denied, -1 on error and + * -2 for usage error. + */ +int +sudoers_check_cmnd(int argc, char * const argv[], char *env_add[], + void *closure) +{ + char *iolog_path = NULL; + mode_t cmnd_umask = ACCESSPERMS; + int ret = -1; + debug_decl(sudoers_check_cmnd, SUDOERS_DEBUG_PLUGIN); + + sudo_warn_set_locale_func(sudoers_warn_setlocale); + + if (argc == 0) { + sudo_warnx("%s", U_("no command specified")); + debug_return_int(-1); + } + + if (need_reinit) { + /* Was previous command intercepted? */ + if (ISSET(sudo_mode, MODE_RUN) && 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 (!sudoers_reinit_defaults()) + debug_return_int(-1); + } + need_reinit = true; + + unlimit_nproc(); + + if (!set_perms(PERM_INITIAL)) + goto bad; + + /* Environment variables specified on the command line. */ + if (env_add != NULL && env_add[0] != NULL) + sudo_user.env_vars = env_add; + + /* + * Make a local copy of argc/argv, with special handling for the + * '-i' option. We also allocate an extra slot for bash's --login. + */ + if (NewArgv != NULL && NewArgv != saved_argv) { + sudoers_gc_remove(GC_PTR, NewArgv); + free(NewArgv); + } + NewArgv = reallocarray(NULL, argc + 2, sizeof(char *)); + if (NewArgv == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + goto error; + } + sudoers_gc_add(GC_PTR, NewArgv); + memcpy(NewArgv, argv, argc * sizeof(char *)); + NewArgc = argc; + NewArgv[NewArgc] = NULL; + if (ISSET(sudo_mode, MODE_LOGIN_SHELL) && runas_pw != NULL) { + NewArgv[0] = strdup(runas_pw->pw_shell); + if (NewArgv[0] == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + goto error; + } + sudoers_gc_add(GC_PTR, NewArgv[0]); + } + + ret = sudoers_check_common(0); + if (ret != true) + goto done; + + if (!remote_iologs) { if (iolog_enabled && def_iolog_file && def_iolog_dir) { if ((iolog_path = format_iolog_path()) == NULL) { if (!def_ignore_iolog_errors) - goto done; + goto error; /* Unable to expand I/O log path, disable I/O logging. */ def_log_input = false; def_log_output = false; @@ -712,26 +707,6 @@ } } - switch (sudo_mode & MODE_MASK) { - case MODE_CHECK: - ret = display_cmnd(snl, list_pw ? list_pw : sudo_user.pw); - goto done; - case MODE_LIST: - ret = display_privs(snl, list_pw ? list_pw : sudo_user.pw, verbose); - goto done; - case MODE_VALIDATE: - ret = true; - goto done; - case MODE_RUN: - case MODE_EDIT: - /* ret will not be set until the very end. */ - break; - default: - /* Should not happen. */ - sudo_warnx("internal error, unexpected sudo mode 0x%x", sudo_mode); - goto done; - } - /* * Set umask based on sudoers. * If user's umask is more restrictive, OR in those bits too @@ -797,7 +772,7 @@ if (!insert_env_vars(sudo_user.env_vars)) { sudo_warnx("%s", U_("error setting user-specified environment variables")); - goto done; + goto error; } /* Note: must call audit before uid change. */ @@ -817,17 +792,17 @@ env_editor ? env_editor : def_editor); sudo_warnx(U_("%s: command not found"), env_editor ? env_editor : def_editor); - goto bad; + goto error; case EINVAL: if (def_env_editor && env_editor != NULL) { /* User tried to do something funny with the editor. */ log_warningx(SLOG_NO_STDERR|SLOG_AUDIT|SLOG_SEND_MAIL, "invalid user-specified editor: %s", env_editor); - goto bad; + goto error; } FALLTHROUGH; default: - goto done; + goto error; } } /* find_editor() already g/c'd edit_argv[] */ @@ -847,7 +822,7 @@ saved_cmnd = strdup(safe_cmnd); if (saved_cmnd == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - goto done; + goto error; } saved_argv = NewArgv; } @@ -857,13 +832,17 @@ bad: ret = false; + goto done; + +error: + ret = -1; done: mail_parse_errors(); if (def_group_plugin) group_plugin_unload(); - init_parser(NULL, false, false); + reset_parser(); if (ret == -1) { /* Free stashed copy of the environment. */ @@ -889,6 +868,123 @@ } /* + * Validate the user and update their timestamp file entry. + * Returns true if allowed, false if denied, -1 on error and + * -2 for usage error. + */ +int +sudoers_validate_user(void) +{ + int ret = -1; + debug_decl(sudoers_validate_user, SUDOERS_DEBUG_PLUGIN); + + sudo_warn_set_locale_func(sudoers_warn_setlocale); + + unlimit_nproc(); + + if (!set_perms(PERM_INITIAL)) + goto done; + + NewArgv = reallocarray(NULL, 2, sizeof(char *)); + if (NewArgv == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + goto done; + } + sudoers_gc_add(GC_PTR, NewArgv); + NewArgv[0] = (char *)"validate"; + NewArgv[1] = NULL; + NewArgc = 2; + + ret = sudoers_check_common(I_VERIFYPW); + +done: + mail_parse_errors(); + + if (def_group_plugin) + group_plugin_unload(); + reset_parser(); + env_init(NULL); + + if (!rewind_perms()) + ret = -1; + + restore_nproc(); + + sudo_warn_set_locale_func(NULL); + + debug_return_int(ret); +} + +/* + * List a user's privileges or check whether a specific command may be run. + * Returns true if allowed, false if denied, -1 on error and + * -2 for usage error. + */ +int +sudoers_list(int argc, char * const argv[], const char *list_user, bool verbose) +{ + int ret = -1; + debug_decl(sudoers_list, SUDOERS_DEBUG_PLUGIN); + + sudo_warn_set_locale_func(sudoers_warn_setlocale); + + unlimit_nproc(); + + if (!set_perms(PERM_INITIAL)) + goto done; + + if (list_user) { + list_pw = sudo_getpwnam(list_user); + if (list_pw == NULL) { + sudo_warnx(U_("unknown user %s"), list_user); + goto done; + } + } + + NewArgv = reallocarray(NULL, argc + 2, sizeof(char *)); + if (NewArgv == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + goto done; + } + sudoers_gc_add(GC_PTR, NewArgv); + NewArgv[0] = (char *)"list"; + if (argc != 0) + memcpy(NewArgv + 1, argv, argc * sizeof(char *)); + NewArgc = argc + 1; + NewArgv[NewArgc] = NULL; + + ret = sudoers_check_common(I_LISTPW); + if (ret != true) + goto done; + + if (ISSET(sudo_mode, MODE_CHECK)) + ret = display_cmnd(snl, list_pw ? list_pw : sudo_user.pw); + else + ret = display_privs(snl, list_pw ? list_pw : sudo_user.pw, verbose); + +done: + mail_parse_errors(); + + if (list_pw != NULL) { + sudo_pw_delref(list_pw); + list_pw = NULL; + } + if (def_group_plugin) + group_plugin_unload(); + reset_parser(); + env_init(NULL); + + if (!rewind_perms()) + ret = -1; + + restore_nproc(); + + sudo_warn_set_locale_func(NULL); + + debug_return_int(ret); +} + +/* * Initialize timezone and fill in sudo_user struct. */ static bool @@ -942,7 +1038,7 @@ * 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 user %s"), user_name); debug_return_bool(false); } @@ -963,8 +1059,7 @@ /* It is now safe to use log_warningx() and set_perms() */ if (unknown_user) { - log_warningx(SLOG_SEND_MAIL, N_("unknown uid %u"), - (unsigned int) user_uid); + log_warningx(SLOG_SEND_MAIL, N_("unknown user %s"), user_name); debug_return_bool(false); } @@ -998,7 +1093,7 @@ const char *cmnd_in; char *cmnd_out = NULL; char *path = user_path; - int ret; + int ret, pivot_fds[2]; debug_decl(set_cmnd_path, SUDOERS_DEBUG_PLUGIN); cmnd_in = ISSET(sudo_mode, MODE_CHECK) ? NewArgv[1] : NewArgv[0]; @@ -1007,12 +1102,20 @@ list_cmnd = NULL; free(user_cmnd); user_cmnd = NULL; + canon_path_free(user_cmnd_dir); + user_cmnd_dir = NULL; if (def_secure_path && !user_is_exempt()) path = def_secure_path; + + /* Pivot root. */ + if (runchroot != NULL) { + if (!pivot_root(runchroot, pivot_fds)) + goto error; + } + if (!set_perms(PERM_RUNAS)) goto error; - ret = find_path(cmnd_in, &cmnd_out, user_stat, path, - runchroot, def_ignore_dot, NULL); + ret = find_path(cmnd_in, &cmnd_out, user_stat, path, def_ignore_dot, NULL); if (!restore_perms()) goto error; if (ret == NOT_FOUND) { @@ -1020,18 +1123,35 @@ if (!set_perms(PERM_USER)) goto error; ret = find_path(cmnd_in, &cmnd_out, user_stat, path, - runchroot, def_ignore_dot, NULL); + def_ignore_dot, NULL); if (!restore_perms()) goto error; } + if (cmnd_out != NULL) { + char *slash = strrchr(cmnd_out, '/'); + if (slash != NULL) { + *slash = '\0'; + user_cmnd_dir = canon_path(cmnd_out); + if (user_cmnd_dir == NULL && errno == ENOMEM) + goto error; + *slash = '/'; + } + } + if (ISSET(sudo_mode, MODE_CHECK)) list_cmnd = cmnd_out; else user_cmnd = cmnd_out; + /* Restore root. */ + if (runchroot != NULL) + (void)unpivot_root(pivot_fds); + debug_return_int(ret); error: + if (runchroot != NULL) + (void)unpivot_root(pivot_fds); free(cmnd_out); debug_return_int(NOT_FOUND_ERROR); } @@ -1133,92 +1253,109 @@ debug_return_int(ret); } +static int +open_file(const char *path, int flags) +{ + int fd; + debug_decl(open_file, SUDOERS_DEBUG_PLUGIN); + + if (!set_perms(PERM_SUDOERS)) + debug_return_int(-1); + + fd = open(path, flags); + if (fd == -1 && errno == EACCES && geteuid() != ROOT_UID) { + /* + * If we tried to open sudoers as non-root but got EACCES, + * try again as root. + */ + int serrno = errno; + if (restore_perms() && set_perms(PERM_ROOT)) + fd = open(path, flags); + errno = serrno; + } + if (!restore_perms()) { + /* unable to change back to root */ + if (fd != -1) { + close(fd); + fd = -1; + } + } + + debug_return_int(fd); +} + /* * Open sudoers file and check mode/owner/type. * Returns a handle to the sudoers file or NULL on error. */ FILE * -open_sudoers(const char *file, bool doedit, bool *keepopen) +open_sudoers(const char *path, char **outfile, bool doedit, bool *keepopen) { + char fname[PATH_MAX]; FILE *fp = NULL; struct stat sb; int error, fd; debug_decl(open_sudoers, SUDOERS_DEBUG_PLUGIN); - if (!set_perms(PERM_SUDOERS)) - debug_return_ptr(NULL); - -again: - fd = sudo_secure_open_file(file, sudoers_uid, sudoers_gid, &sb, &error); - if (fd != -1) { + fd = sudo_open_conf_path(path, fname, sizeof(fname), open_file); + error = sudo_secure_fd(fd, S_IFREG, sudoers_file_uid(), sudoers_file_gid(), + &sb); + switch (error) { + case SUDO_PATH_SECURE: /* * Make sure we can read the file so we can present the * user with a reasonable error message (unlike the lexer). */ if ((fp = fdopen(fd, "r")) == NULL) { - log_warning(SLOG_SEND_MAIL, N_("unable to open %s"), file); - close(fd); + log_warning(SLOG_PARSE_ERROR, N_("unable to open %s"), fname); } else { + fd = -1; if (sb.st_size != 0 && fgetc(fp) == EOF) { - log_warning(SLOG_SEND_MAIL, - N_("unable to read %s"), file); + log_warning(SLOG_PARSE_ERROR, N_("unable to read %s"), fname); fclose(fp); fp = NULL; } else { /* Rewind fp and set close on exec flag. */ rewind(fp); - (void) fcntl(fileno(fp), F_SETFD, 1); - } - } - } else { - switch (error) { - case SUDO_PATH_MISSING: - /* - * If we tried to open sudoers as non-root but got EACCES, - * try again as root. - */ - if (errno == EACCES && geteuid() != ROOT_UID) { - int serrno = errno; - if (restore_perms()) { - if (!set_perms(PERM_ROOT)) - debug_return_ptr(NULL); - goto again; + (void)fcntl(fileno(fp), F_SETFD, 1); + if (outfile != NULL) { + *outfile = sudo_rcstr_dup(fname); + if (*outfile == NULL) { + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); + fclose(fp); + fp = NULL; + } } - errno = serrno; } - log_warning(SLOG_SEND_MAIL, N_("unable to open %s"), file); - break; - case SUDO_PATH_BAD_TYPE: - log_warningx(SLOG_SEND_MAIL, - N_("%s is not a regular file"), file); - break; - case SUDO_PATH_WRONG_OWNER: - log_warningx(SLOG_SEND_MAIL, - N_("%s is owned by uid %u, should be %u"), file, - (unsigned int) sb.st_uid, (unsigned int) sudoers_uid); - break; - case SUDO_PATH_WORLD_WRITABLE: - log_warningx(SLOG_SEND_MAIL, N_("%s is world writable"), file); - break; - case SUDO_PATH_GROUP_WRITABLE: - log_warningx(SLOG_SEND_MAIL, - N_("%s is owned by gid %u, should be %u"), file, - (unsigned int) sb.st_gid, (unsigned int) sudoers_gid); - break; - default: - sudo_warnx("%s: internal error, unexpected error %d", - __func__, error); - break; } + break; + case SUDO_PATH_MISSING: + log_warning(SLOG_PARSE_ERROR, N_("unable to open %s"), path); + break; + case SUDO_PATH_BAD_TYPE: + log_warningx(SLOG_PARSE_ERROR, N_("%s is not a regular file"), fname); + break; + case SUDO_PATH_WRONG_OWNER: + log_warningx(SLOG_PARSE_ERROR, + N_("%s is owned by uid %u, should be %u"), fname, + (unsigned int)sb.st_uid, (unsigned int)sudoers_file_uid()); + break; + case SUDO_PATH_WORLD_WRITABLE: + log_warningx(SLOG_PARSE_ERROR, N_("%s is world writable"), fname); + break; + case SUDO_PATH_GROUP_WRITABLE: + log_warningx(SLOG_PARSE_ERROR, + N_("%s is owned by gid %u, should be %u"), fname, + (unsigned int)sb.st_gid, (unsigned int)sudoers_file_gid()); + break; + default: + sudo_warnx("%s: internal error, unexpected error %d", __func__, error); + break; } - if (!restore_perms()) { - /* unable to change back to root */ - if (fp != NULL) { - fclose(fp); - fp = NULL; - } - } + if (fp == NULL && fd != -1) + close(fd); debug_return_ptr(fp); } @@ -1342,7 +1479,7 @@ /* First resolve user_host, setting user_host and user_shost. */ if (resolve_host(user_host, &lhost, &shost) != 0) { if ((rc = resolve_host(user_runhost, &lhost, &shost)) != 0) { - gai_log_warning(SLOG_SEND_MAIL|SLOG_RAW_MSG, rc, + gai_log_warning(SLOG_PARSE_ERROR|SLOG_RAW_MSG, rc, N_("unable to resolve host %s"), user_host); debug_return_bool(false); } @@ -1474,6 +1611,38 @@ debug_return_bool(true); } + +/* + * Callback for timestampowner sudoers setting. + */ +static bool +cb_timestampowner(const char *file, int line, int column, + const union sudo_defs_val *sd_un, int op) +{ + struct passwd *pw = NULL; + const char *user = sd_un->str; + debug_decl(cb_timestampowner, SUDOERS_DEBUG_PLUGIN); + + if (*user == '#') { + const char *errstr; + uid_t uid = sudo_strtoid(user + 1, &errstr); + if (errstr == NULL) + pw = sudo_getpwuid(uid); + } + if (pw == NULL) + pw = sudo_getpwnam(user); + if (pw == NULL) { + log_warningx(SLOG_AUDIT|SLOG_PARSE_ERROR, + N_("%s:%d:%d timestampowner: unknown user %s"), file, line, + column, user); + debug_return_bool(false); + } + timestamp_set_owner(pw->pw_uid, pw->pw_gid); + sudo_pw_delref(pw); + + debug_return_bool(true); +} + /* * Callback for tty_tickets sudoers setting. */ @@ -1500,8 +1669,8 @@ { debug_decl(cb_umask, SUDOERS_DEBUG_PLUGIN); - /* Force umask if explicitly set in sudoers. */ - force_umask = sd_un->mode != ACCESSPERMS; + /* Override umask if explicitly set in sudoers. */ + override_umask = sd_un->mode != ACCESSPERMS; debug_return_bool(true); } @@ -1781,6 +1950,9 @@ /* Set iolog_mode callback. */ sudo_defs_table[I_IOLOG_MODE].callback = cb_iolog_mode; + /* Set timestampowner callback. */ + sudo_defs_table[I_TIMESTAMPOWNER].callback = cb_timestampowner; + /* Set tty_tickets callback. */ sudo_defs_table[I_TTY_TICKETS].callback = cb_tty_tickets; @@ -1830,7 +2002,7 @@ nss->close(nss); } snl = NULL; - init_parser(NULL, false, false); + reset_parser(); } while ((def = TAILQ_FIRST(&initial_defaults)) != NULL) { TAILQ_REMOVE(&initial_defaults, def, entries); @@ -1844,6 +2016,13 @@ sudo_user_free(); sudo_freepwcache(); sudo_freegrcache(); + canon_path_free_cache(); + + /* We must free the cached environment before running g/c. */ + env_init(NULL); + + /* Run garbage collector. */ + sudoers_gc_run(); /* Clear globals */ list_pw = NULL; @@ -1870,6 +2049,12 @@ debug_return_bool(true); } +bool +sudoers_override_umask(void) +{ + return override_umask; +} + /* * Free memory allocated for struct sudo_user. */ @@ -1903,6 +2088,7 @@ free(user_srunhost); free(user_runhost); free(user_cmnd); + canon_path_free(user_cmnd_dir); free(user_args); free(list_cmnd); free(safe_cmnd); diff -Nru sudo-1.9.13p3/plugins/sudoers/sudoers.h sudo-1.9.14p2/plugins/sudoers/sudoers.h --- sudo-1.9.13p3/plugins/sudoers/sudoers.h 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/sudoers.h 2023-07-15 15:37:23.000000000 +0000 @@ -102,6 +102,7 @@ char *cmnd; char *cmnd_args; char *cmnd_base; + char *cmnd_dir; char *cmnd_list; char *cmnd_safe; char *cmnd_saved; @@ -239,6 +240,7 @@ #define user_ttypath (sudo_user.ttypath) #define user_cwd (sudo_user.cwd) #define user_cmnd (sudo_user.cmnd) +#define user_cmnd_dir (sudo_user.cmnd_dir) #define user_args (sudo_user.cmnd_args) #define user_base (sudo_user.cmnd_base) #define user_stat (sudo_user.cmnd_stat) @@ -285,15 +287,12 @@ /* * Function prototypes */ -#define YY_DECL int sudoerslex(void) - /* goodpath.c */ -bool sudo_goodpath(const char *path, const char *runchroot, struct stat *sbp); +bool sudo_goodpath(const char *path, struct stat *sbp); /* findpath.c */ int find_path(const char *infile, char **outfile, struct stat *sbp, - const char *path, const char *runchroot, int ignore_dot, - char * const *allowlist); + const char *path, int ignore_dot, char * const *allowlist); /* check.c */ int check_user(int validate, int mode); @@ -321,25 +320,6 @@ bool restore_perms(void); int pam_prep_user(struct passwd *); -/* gram.y */ -int sudoersparse(void); -extern char *login_style; -extern bool parse_error; -extern bool sudoers_warnings; -extern bool sudoers_recovery; -extern bool sudoers_strict; - -/* toke.l */ -YY_DECL; -void sudoersrestart(FILE *); -extern FILE *sudoersin; -extern const char *sudoers_file; -extern char *sudoers; -extern mode_t sudoers_mode; -extern uid_t sudoers_uid; -extern gid_t sudoers_gid; -extern int sudolineno; - /* defaults.c */ void dump_defaults(void); void dump_auth_methods(void); @@ -421,21 +401,21 @@ bool matches_env_pattern(const char *pattern, const char *var, bool *full_match); /* sudoers.c */ -FILE *open_sudoers(const char *, bool, bool *); +FILE *open_sudoers(const char *, char **, bool, bool *); bool cb_log_input(const char *file, int line, int column, const union sudo_defs_val *sd_un, int op); bool cb_log_output(const char *file, int line, int column, const union sudo_defs_val *sd_un, int op); int set_cmnd_path(const char *runchroot); int sudoers_init(void *info, sudoers_logger_t logger, char * const envp[]); -int sudoers_policy_main(int argc, char *const argv[], int pwflag, char *env_add[], bool verbose, void *closure); +int sudoers_check_cmnd(int argc, char *const argv[], char *env_add[], void *closure); +int sudoers_list(int argc, char *const argv[], const char *list_user, bool verbose); +int sudoers_validate_user(void); void sudoers_cleanup(void); +bool sudoers_override_umask(void); void sudo_user_free(void); extern struct sudo_user sudo_user; extern struct passwd *list_pw; -extern bool force_umask; extern int sudo_mode; extern int sudoedit_nfiles; -extern uid_t timestamp_uid; -extern gid_t timestamp_gid; extern sudo_conv_t sudo_conv; extern sudo_printf_t sudo_printf; extern struct sudo_plugin_event * (*plugin_event_alloc)(void); @@ -448,8 +428,9 @@ /* policy.c */ 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; +const struct sudoers_parser_config *policy_sudoers_conf(void); +const char *policy_path_ldap_conf(void); +const char *policy_path_ldap_secret(void); /* group_plugin.c */ int group_plugin_load(const char *plugin_info); @@ -477,6 +458,11 @@ void sudoers_gc_init(void); void sudoers_gc_run(void); +/* canon_path.c */ +char *canon_path(const char *inpath); +void canon_path_free(char *resolved); +void canon_path_free_cache(void); + /* strlcpy_unesc.c */ size_t strlcpy_unescape(char *dst, const char *src, size_t size); @@ -489,4 +475,8 @@ /* serialize_list.c */ char *serialize_list(const char *varname, struct list_members *members); +/* pivot_root.c */ +bool pivot_root(const char *new_root, int fds[2]); +bool unpivot_root(int fds[2]); + #endif /* SUDOERS_SUDOERS_H */ diff -Nru sudo-1.9.13p3/plugins/sudoers/sudoers.in sudo-1.9.14p2/plugins/sudoers/sudoers.in --- sudo-1.9.13p3/plugins/sudoers/sudoers.in 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/sudoers.in 2023-07-15 15:37:22.000000000 +0000 @@ -59,6 +59,10 @@ ## Uncomment to use a hard-coded PATH instead of the user's to find commands # Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ## +## Uncomment to restore the historic behavior where a command is run in +## the user's own terminal. +# Defaults !use_pty +## ## Uncomment to send mail if the user does not enter the correct password. # Defaults mail_badpass ## diff -Nru sudo-1.9.13p3/plugins/sudoers/sudo_ldap_conf.h sudo-1.9.14p2/plugins/sudoers/sudo_ldap_conf.h --- sudo-1.9.13p3/plugins/sudoers/sudo_ldap_conf.h 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/sudo_ldap_conf.h 2023-07-15 15:37:22.000000000 +0000 @@ -19,51 +19,6 @@ #ifndef SUDOERS_LDAP_CONF_H #define SUDOERS_LDAP_CONF_H -/* Macros for checking strlcpy/strlcat/sudo_ldap_value_cat return value. */ -#define CHECK_STRLCPY(d, s, l) do { \ - if (strlcpy((d), (s), (l)) >= (l)) { \ - goto overflow; \ - } \ -} while (0) -#define CHECK_STRLCAT(d, s, l) do { \ - if (strlcat((d), (s), (l)) >= (l)) { \ - goto overflow; \ - } \ -} while (0) -#define CHECK_LDAP_VCAT(d, s, l) do { \ - if (sudo_ldap_value_cat((d), (s), (l)) >= (l)) { \ - goto overflow; \ - } \ -} while (0) - -#if defined(__GNUC__) && __GNUC__ == 2 -# define DPRINTF1(fmt...) do { \ - sudo_debug_printf(SUDO_DEBUG_DIAG, fmt); \ - if (ldap_conf.debug >= 1) { \ - sudo_warnx_nodebug(fmt); \ - } \ -} while (0) -# define DPRINTF2(fmt...) do { \ - sudo_debug_printf(SUDO_DEBUG_INFO, fmt); \ - if (ldap_conf.debug >= 2) { \ - sudo_warnx_nodebug(fmt); \ - } \ -} while (0) -#else -# define DPRINTF1(...) do { \ - sudo_debug_printf(SUDO_DEBUG_DIAG, __VA_ARGS__); \ - if (ldap_conf.debug >= 1) { \ - sudo_warnx_nodebug(__VA_ARGS__); \ - } \ -} while (0) -# define DPRINTF2(...) do { \ - sudo_debug_printf(SUDO_DEBUG_INFO, __VA_ARGS__); \ - if (ldap_conf.debug >= 2) { \ - sudo_warnx_nodebug(__VA_ARGS__); \ - } \ -} while (0) -#endif - /* * Configuration data types. * When adding a new data type, be sure to update sudo_ldap_parse_keyword() @@ -89,7 +44,7 @@ struct ldap_config_str { STAILQ_ENTRY(ldap_config_str) entries; - char val[1]; + char val[]; }; STAILQ_HEAD(ldap_config_str_list, ldap_config_str); @@ -109,6 +64,7 @@ int ssl_mode; int timed; int deref; + int netgroup_query; char *host; struct ldap_config_str_list uri; char *binddn; diff -Nru sudo-1.9.13p3/plugins/sudoers/sudo_ldap.h sudo-1.9.14p2/plugins/sudoers/sudo_ldap.h --- sudo-1.9.13p3/plugins/sudoers/sudo_ldap.h 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/sudo_ldap.h 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2018 Todd C. Miller + * Copyright (c) 2018, 2021, 2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -19,11 +19,89 @@ #ifndef SUDOERS_LDAP_H #define SUDOERS_LDAP_H +#ifndef LDAP_OPT_RESULT_CODE +# define LDAP_OPT_RESULT_CODE LDAP_OPT_ERROR_NUMBER +#endif + +#if !defined(LDAP_OPT_NETWORK_TIMEOUT) && defined(LDAP_OPT_CONNECT_TIMEOUT) +# define LDAP_OPT_NETWORK_TIMEOUT LDAP_OPT_CONNECT_TIMEOUT +#endif + +#ifndef LDAP_OPT_SUCCESS +# define LDAP_OPT_SUCCESS LDAP_SUCCESS +#endif + +#ifndef HAVE_LDAP_SEARCH_EXT_S +# ifdef HAVE_LDAP_SEARCH_ST +# define ldap_search_ext_s(a, b, c, d, e, f, g, h, i, j, k) \ + ldap_search_st(a, b, c, d, e, f, i, k) +# else +# define ldap_search_ext_s(a, b, c, d, e, f, g, h, i, j, k) \ + ldap_search_s(a, b, c, d, e, f, k) +# endif +#endif + +/* Macros for checking strlcpy/strlcat/sudo_ldap_value_cat return value. */ +#define CHECK_STRLCPY(d, s, l) do { \ + if (strlcpy((d), (s), (l)) >= (l)) { \ + goto overflow; \ + } \ +} while (0) +#define CHECK_STRLCAT(d, s, l) do { \ + if (strlcat((d), (s), (l)) >= (l)) { \ + goto overflow; \ + } \ +} while (0) +#define CHECK_LDAP_VCAT(d, s, l) do { \ + if (sudo_ldap_value_cat((d), (s), (l)) >= (l)) { \ + goto overflow; \ + } \ +} while (0) + +#if defined(__GNUC__) && __GNUC__ == 2 +# define DPRINTF1(fmt...) do { \ + sudo_debug_printf(SUDO_DEBUG_DIAG, fmt); \ + if (ldap_conf.debug >= 1) { \ + sudo_warnx_nodebug(fmt); \ + } \ +} while (0) +# define DPRINTF2(fmt...) do { \ + sudo_debug_printf(SUDO_DEBUG_INFO, fmt); \ + if (ldap_conf.debug >= 2) { \ + sudo_warnx_nodebug(fmt); \ + } \ +} while (0) +#else +# define DPRINTF1(...) do { \ + sudo_debug_printf(SUDO_DEBUG_DIAG, __VA_ARGS__); \ + if (ldap_conf.debug >= 1) { \ + sudo_warnx_nodebug(__VA_ARGS__); \ + } \ +} while (0) +# define DPRINTF2(...) do { \ + sudo_debug_printf(SUDO_DEBUG_INFO, __VA_ARGS__); \ + if (ldap_conf.debug >= 2) { \ + sudo_warnx_nodebug(__VA_ARGS__); \ + } \ +} while (0) +#endif + +#define LDAP_FOREACH(var, ld, res) \ + for ((var) = ldap_first_entry((ld), (res)); \ + (var) != NULL; \ + (var) = ldap_next_entry((ld), (var))) + /* Iterators used by sudo_ldap_role_to_priv() to handle bervar ** or char ** */ typedef char * (*sudo_ldap_iter_t)(void **); +/* ldap_innetgr.c */ +int sudo_ldap_innetgr_int(void *v, const char *netgr, const char *host, const char *user, const char *domain); + /* ldap_util.c */ bool sudo_ldap_is_negated(char **valp); +size_t sudo_ldap_value_len(const char *value); +size_t sudo_ldap_value_cat(char *dst, const char *src, size_t size); +char *sudo_ldap_value_dup(const char *src); 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 -Nru sudo-1.9.13p3/plugins/sudoers/sudo_nss.c sudo-1.9.14p2/plugins/sudoers/sudo_nss.c --- sudo-1.9.13p3/plugins/sudoers/sudo_nss.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/sudo_nss.c 2023-07-15 15:37:22.000000000 +0000 @@ -248,7 +248,7 @@ #endif /* HAVE_LDAP && _PATH_NSSWITCH_CONF */ bool -sudo_nss_can_continue(struct sudo_nss *nss, int match) +sudo_nss_can_continue(const struct sudo_nss *nss, int match) { debug_decl(sudo_nss_should_continue, SUDOERS_DEBUG_NSS); diff -Nru sudo-1.9.13p3/plugins/sudoers/sudo_nss.h sudo-1.9.14p2/plugins/sudoers/sudo_nss.h --- sudo-1.9.13p3/plugins/sudoers/sudo_nss.h 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/sudo_nss.h 2023-07-15 15:37:22.000000000 +0000 @@ -30,9 +30,11 @@ const char *source; int (*open)(struct sudo_nss *nss); int (*close)(struct sudo_nss *nss); - struct sudoers_parse_tree *(*parse)(struct sudo_nss *nss); - int (*query)(struct sudo_nss *nss, struct passwd *pw); - int (*getdefs)(struct sudo_nss *nss); + struct sudoers_parse_tree *(*parse)(const struct sudo_nss *nss); + int (*query)(const struct sudo_nss *nss, struct passwd *pw); + int (*getdefs)(const struct sudo_nss *nss); + int (*innetgr)(const struct sudo_nss *nss, const char *netgr, + const char *host, const char *user, const char *domain); void *handle; struct sudoers_parse_tree *parse_tree; bool ret_if_found; @@ -42,6 +44,6 @@ TAILQ_HEAD(sudo_nss_list, sudo_nss); struct sudo_nss_list *sudo_read_nss(void); -bool sudo_nss_can_continue(struct sudo_nss *nss, int match); +bool sudo_nss_can_continue(const struct sudo_nss *nss, int match); #endif /* SUDOERS_NSS_H */ diff -Nru sudo-1.9.13p3/plugins/sudoers/sudoreplay.c sudo-1.9.14p2/plugins/sudoers/sudoreplay.c --- sudo-1.9.13p3/plugins/sudoers/sudoreplay.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/sudoreplay.c 2023-07-15 15:39:28.000000000 +0000 @@ -629,7 +629,7 @@ /* Open fd for /dev/tty and set to raw mode. */ if (interactive) { ttyfd = open(_PATH_TTY, O_RDWR); - while (!sudo_term_raw(ttyfd, 1)) { + while (!sudo_term_raw(ttyfd, SUDO_TERM_ISIG)) { if (errno != EINTR) sudo_fatal("%s", U_("unable to set tty to raw mode")); kill(getpid(), SIGTTOU); @@ -660,7 +660,7 @@ if (!terminal_can_resize) { /* either not xterm or not interactive */ - sudo_get_ttysize(&terminal_lines, &terminal_cols); + sudo_get_ttysize(ttyfd, &terminal_lines, &terminal_cols); } if (evlog->lines == terminal_lines && evlog->columns == terminal_cols) { diff -Nru sudo-1.9.13p3/plugins/sudoers/testsudoers.c sudo-1.9.14p2/plugins/sudoers/testsudoers.c --- sudo-1.9.13p3/plugins/sudoers/testsudoers.c 2023-02-25 18:21:47.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/testsudoers.c 2023-07-15 15:37:23.000000000 +0000 @@ -97,6 +97,7 @@ int main(int argc, char *argv[]) { + struct sudoers_parser_config sudoers_conf = SUDOERS_PARSER_CONFIG_INITIALIZER; enum sudoers_formats input_format = format_sudoers; struct cmndspec *cs; struct privilege *priv; @@ -106,6 +107,7 @@ int match, host_match, runas_match, cmnd_match; int ch, dflag, exitcode = EXIT_FAILURE; struct sudo_lbuf lbuf; + id_t id; debug_decl(main, SUDOERS_DEBUG_MAIN); #if defined(SUDO_DEVEL) && defined(__OpenBSD__) @@ -140,9 +142,10 @@ dflag = 1; break; case 'G': - sudoers_gid = (gid_t)sudo_strtoid(optarg, &errstr); + id = sudo_strtoid(optarg, &errstr); if (errstr != NULL) sudo_fatalx("group-ID %s: %s", optarg, errstr); + sudoers_conf.sudoers_gid = (gid_t)id; break; case 'g': runas_group = optarg; @@ -171,9 +174,10 @@ trace_print = testsudoers_error; break; case 'U': - sudoers_uid = (uid_t)sudo_strtoid(optarg, &errstr); + id = sudo_strtoid(optarg, &errstr); if (errstr != NULL) sudo_fatalx("user-ID %s: %s", optarg, errstr); + sudoers_conf.sudoers_uid = (uid_t)id; break; case 'u': runas_user = optarg; @@ -273,8 +277,10 @@ sudo_fatal("%s", U_("unable to parse network address list")); } - /* Allocate space for data structures in the parser. */ - init_parser("sudoers", false, true); + /* Initialize the parser and set sudoers filename to "sudoers". */ + sudoers_conf.strict = true; + sudoers_conf.verbose = 2; + init_parser("sudoers", &sudoers_conf); /* * Set runas passwd/group entries based on command line or sudoers. @@ -442,7 +448,7 @@ } FILE * -open_sudoers(const char *file, bool doedit, bool *keepopen) +open_sudoers(const char *file, char **outfile, bool doedit, bool *keepopen) { struct stat sb; FILE *fp = NULL; @@ -452,7 +458,8 @@ /* Report errors using the basename for consistent test output. */ base = sudo_basename(file); - fd = sudo_secure_open_file(file, sudoers_uid, sudoers_gid, &sb, &error); + fd = sudo_secure_open_file(file, sudoers_file_uid(), sudoers_file_gid(), + &sb, &error); if (fd != -1) { if ((fp = fdopen(fd, "r")) == NULL) { sudo_warn("unable to open %s", base); @@ -468,14 +475,14 @@ break; case SUDO_PATH_WRONG_OWNER: sudo_warnx("%s should be owned by uid %u", - base, (unsigned int) sudoers_uid); + base, (unsigned int) sudoers_file_uid()); break; case SUDO_PATH_WORLD_WRITABLE: sudo_warnx("%s is world writable", base); break; case SUDO_PATH_GROUP_WRITABLE: sudo_warnx("%s should be owned by gid %u", - base, (unsigned int) sudoers_gid); + base, (unsigned int) sudoers_file_gid()); break; default: sudo_warnx("%s: internal error, unexpected error %d", @@ -511,6 +518,18 @@ return; } +bool +pivot_root(const char *new_root, int fds[2]) +{ + return true; +} + +bool +unpivot_root(int fds[2]) +{ + return true; +} + int set_cmnd_path(const char *runchroot) { diff -Nru sudo-1.9.13p3/plugins/sudoers/timestamp.c sudo-1.9.14p2/plugins/sudoers/timestamp.c --- sudo-1.9.13p3/plugins/sudoers/timestamp.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/timestamp.c 2023-07-15 15:37:23.000000000 +0000 @@ -66,6 +66,31 @@ struct timestamp_entry key; }; +static uid_t timestamp_uid = ROOT_UID; +static gid_t timestamp_gid = ROOT_GID; + +/* + * Set timestamp_uid and timestamp_gid. + */ +void +timestamp_set_owner(uid_t uid, gid_t gid) +{ + debug_decl(timestamp_owner, SUDOERS_DEBUG_AUTH); + + if (uid != (uid_t)-1) + timestamp_uid = uid; + if (gid != (gid_t)-1) + timestamp_gid = gid; + + debug_return; +} + +uid_t +timestamp_get_uid(void) +{ + return timestamp_uid; +} + /* * Returns true if entry matches key, else false. * We don't match on the sid or actual time stamp. diff -Nru sudo-1.9.13p3/plugins/sudoers/toke.c sudo-1.9.14p2/plugins/sudoers/toke.c --- sudo-1.9.13p3/plugins/sudoers/toke.c 2023-03-04 15:50:10.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/toke.c 2023-07-15 15:37:23.000000000 +0000 @@ -3036,7 +3036,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1996, 1998-2005, 2007-2022 + * Copyright (c) 1996, 1998-2005, 2007-2023 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -3089,18 +3089,13 @@ int sudolineno; /* current sudoers line number. */ char *sudoers; /* sudoers file being parsed. */ +char *sudoers_search_path; /* colon-separated path of sudoers files. */ const char *sudoers_errstr; /* description of last error from lexer. */ struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */ -/* Default sudoers path, mode and owner (may be set via sudo.conf) */ -const char *sudoers_file = _PATH_SUDOERS; -mode_t sudoers_mode = SUDOERS_MODE; -uid_t sudoers_uid = SUDOERS_UID; -gid_t sudoers_gid = SUDOERS_GID; - static bool continued, sawspace; static int prev_state; -static int digest_type = -1; +static unsigned int digest_type = SUDO_DIGEST_INVALID; static bool pop_include(void); static yy_size_t sudoers_input(char *buf, yy_size_t max_size); @@ -3135,7 +3130,7 @@ -#line 3133 "toke.c" +#line 3128 "toke.c" #define INITIAL 0 #define GOTDEFS 1 @@ -3356,9 +3351,9 @@ } { -#line 124 "toke.l" +#line 119 "toke.l" -#line 3356 "toke.c" +#line 3351 "toke.c" while ( 1 ) /* loops until end-of-file is reached */ { @@ -3418,7 +3413,7 @@ case 1: YY_RULE_SETUP -#line 125 "toke.l" +#line 120 "toke.l" { LEXTRACE(", "); return ','; @@ -3426,12 +3421,12 @@ YY_BREAK case 2: YY_RULE_SETUP -#line 130 "toke.l" +#line 125 "toke.l" BEGIN STARTDEFS; YY_BREAK case 3: YY_RULE_SETUP -#line 132 "toke.l" +#line 127 "toke.l" { BEGIN INDEFS; LEXTRACE("DEFVAR "); @@ -3443,7 +3438,7 @@ case 4: YY_RULE_SETUP -#line 141 "toke.l" +#line 136 "toke.l" { BEGIN STARTDEFS; LEXTRACE(", "); @@ -3452,7 +3447,7 @@ YY_BREAK case 5: YY_RULE_SETUP -#line 147 "toke.l" +#line 142 "toke.l" { LEXTRACE("= "); return '='; @@ -3460,7 +3455,7 @@ YY_BREAK case 6: YY_RULE_SETUP -#line 152 "toke.l" +#line 147 "toke.l" { LEXTRACE("+= "); return '+'; @@ -3468,7 +3463,7 @@ YY_BREAK case 7: YY_RULE_SETUP -#line 157 "toke.l" +#line 152 "toke.l" { LEXTRACE("-= "); return '-'; @@ -3476,7 +3471,7 @@ YY_BREAK case 8: YY_RULE_SETUP -#line 162 "toke.l" +#line 157 "toke.l" { LEXTRACE("BEGINSTR "); sudoerslval.string = NULL; @@ -3486,7 +3481,7 @@ YY_BREAK case 9: YY_RULE_SETUP -#line 169 "toke.l" +#line 164 "toke.l" { LEXTRACE("WORD(2) "); if (!fill(sudoerstext, sudoersleng)) @@ -3499,7 +3494,7 @@ case 10: /* rule 10 can match eol */ YY_RULE_SETUP -#line 178 "toke.l" +#line 173 "toke.l" { /* Line continuation char followed by newline. */ sudolineno++; @@ -3508,7 +3503,7 @@ YY_BREAK case 11: YY_RULE_SETUP -#line 184 "toke.l" +#line 179 "toke.l" { LEXTRACE("ENDSTR "); BEGIN prev_state; @@ -3550,7 +3545,7 @@ YY_BREAK case 12: YY_RULE_SETUP -#line 223 "toke.l" +#line 218 "toke.l" { LEXTRACE("BACKSLASH "); if (!append(sudoerstext, sudoersleng)) @@ -3559,7 +3554,7 @@ YY_BREAK case 13: YY_RULE_SETUP -#line 229 "toke.l" +#line 224 "toke.l" { LEXTRACE("STRBODY "); if (!append(sudoerstext, sudoersleng)) @@ -3570,7 +3565,7 @@ case 14: YY_RULE_SETUP -#line 237 "toke.l" +#line 232 "toke.l" { /* quoted fnmatch glob char, pass verbatim */ LEXTRACE("QUOTEDCHAR "); @@ -3581,7 +3576,7 @@ YY_BREAK case 15: YY_RULE_SETUP -#line 245 "toke.l" +#line 240 "toke.l" { /* quoted sudoers special char, strip backslash */ LEXTRACE("QUOTEDCHAR "); @@ -3593,7 +3588,7 @@ case 16: /* rule 16 can match eol */ YY_RULE_SETUP -#line 253 "toke.l" +#line 248 "toke.l" { BEGIN INITIAL; sudoersless(0); @@ -3603,7 +3598,7 @@ YY_BREAK case 17: YY_RULE_SETUP -#line 260 "toke.l" +#line 255 "toke.l" { if (sudoerslval.command.args == NULL && sudoerstext[0] == '^') { LEXTRACE("ARG REGEX "); @@ -3622,7 +3617,7 @@ case 18: YY_RULE_SETUP -#line 276 "toke.l" +#line 271 "toke.l" { /* quoted character, pass verbatim */ LEXTRACE("QUOTEDCHAR "); @@ -3633,7 +3628,7 @@ case 19: /* rule 19 can match eol */ YY_RULE_SETUP -#line 283 "toke.l" +#line 278 "toke.l" { /* Let the parser attempt to recover. */ sudoersless(0); @@ -3647,13 +3642,13 @@ YY_BREAK case 20: YY_RULE_SETUP -#line 294 "toke.l" +#line 289 "toke.l" { if (!fill_args("$", 1, false)) yyterminate(); BEGIN INITIAL; continued = false; - if (sudoers_strict) { + if (sudoers_strict()) { if (!sudo_regex_compile(NULL, sudoerstext, &sudoers_errstr)) { LEXTRACE("ERROR "); return ERROR; @@ -3664,7 +3659,7 @@ YY_BREAK case 21: YY_RULE_SETUP -#line 308 "toke.l" +#line 303 "toke.l" { if (continued) { /* remove whitespace after line continuation */ @@ -3683,7 +3678,7 @@ case 22: YY_RULE_SETUP -#line 324 "toke.l" +#line 319 "toke.l" { /* Only return DIGEST if the length is correct. */ yy_size_t digest_len = @@ -3701,7 +3696,7 @@ YY_BREAK case 23: YY_RULE_SETUP -#line 339 "toke.l" +#line 334 "toke.l" { /* Only return DIGEST if the length is correct. */ yy_size_t len, digest_len = @@ -3726,7 +3721,7 @@ YY_BREAK case 24: YY_RULE_SETUP -#line 361 "toke.l" +#line 356 "toke.l" { if (continued) { sudoers_errstr = N_("invalid line continuation"); @@ -3741,7 +3736,7 @@ YY_BREAK case 25: YY_RULE_SETUP -#line 373 "toke.l" +#line 368 "toke.l" { if (continued) { sudoers_errstr = N_("invalid line continuation"); @@ -3757,7 +3752,7 @@ case 26: /* rule 26 can match eol */ YY_RULE_SETUP -#line 385 "toke.l" +#line 380 "toke.l" { if (continued) { sudoers_errstr = N_("invalid line continuation"); @@ -3777,7 +3772,7 @@ case 27: /* rule 27 can match eol */ YY_RULE_SETUP -#line 401 "toke.l" +#line 396 "toke.l" { if (continued) { sudoers_errstr = N_("invalid line continuation"); @@ -3796,7 +3791,7 @@ YY_BREAK case 28: YY_RULE_SETUP -#line 417 "toke.l" +#line 412 "toke.l" { char deftype; int n; @@ -3840,7 +3835,7 @@ YY_BREAK case 29: YY_RULE_SETUP -#line 458 "toke.l" +#line 453 "toke.l" { int n; @@ -3870,7 +3865,7 @@ YY_BREAK case 30: YY_RULE_SETUP -#line 485 "toke.l" +#line 480 "toke.l" { /* cmnd does not require passwd for this user */ LEXTRACE("NOPASSWD "); @@ -3879,7 +3874,7 @@ YY_BREAK case 31: YY_RULE_SETUP -#line 491 "toke.l" +#line 486 "toke.l" { /* cmnd requires passwd for this user */ LEXTRACE("PASSWD "); @@ -3888,7 +3883,7 @@ YY_BREAK case 32: YY_RULE_SETUP -#line 497 "toke.l" +#line 492 "toke.l" { LEXTRACE("NOEXEC "); return NOEXEC; @@ -3896,7 +3891,7 @@ YY_BREAK case 33: YY_RULE_SETUP -#line 502 "toke.l" +#line 497 "toke.l" { LEXTRACE("EXEC "); return EXEC; @@ -3904,7 +3899,7 @@ YY_BREAK case 34: YY_RULE_SETUP -#line 507 "toke.l" +#line 502 "toke.l" { LEXTRACE("INTERCEPT "); return INTERCEPT; @@ -3912,7 +3907,7 @@ YY_BREAK case 35: YY_RULE_SETUP -#line 512 "toke.l" +#line 507 "toke.l" { LEXTRACE("NOINTERCEPT "); return NOINTERCEPT; @@ -3920,7 +3915,7 @@ YY_BREAK case 36: YY_RULE_SETUP -#line 517 "toke.l" +#line 512 "toke.l" { LEXTRACE("SETENV "); return SETENV; @@ -3928,7 +3923,7 @@ YY_BREAK case 37: YY_RULE_SETUP -#line 522 "toke.l" +#line 517 "toke.l" { LEXTRACE("NOSETENV "); return NOSETENV; @@ -3936,7 +3931,7 @@ YY_BREAK case 38: YY_RULE_SETUP -#line 527 "toke.l" +#line 522 "toke.l" { LEXTRACE("LOG_OUTPUT "); return LOG_OUTPUT; @@ -3944,7 +3939,7 @@ YY_BREAK case 39: YY_RULE_SETUP -#line 532 "toke.l" +#line 527 "toke.l" { LEXTRACE("NOLOG_OUTPUT "); return NOLOG_OUTPUT; @@ -3952,7 +3947,7 @@ YY_BREAK case 40: YY_RULE_SETUP -#line 537 "toke.l" +#line 532 "toke.l" { LEXTRACE("LOG_INPUT "); return LOG_INPUT; @@ -3960,7 +3955,7 @@ YY_BREAK case 41: YY_RULE_SETUP -#line 542 "toke.l" +#line 537 "toke.l" { LEXTRACE("NOLOG_INPUT "); return NOLOG_INPUT; @@ -3968,7 +3963,7 @@ YY_BREAK case 42: YY_RULE_SETUP -#line 547 "toke.l" +#line 542 "toke.l" { LEXTRACE("MAIL "); return MAIL; @@ -3976,7 +3971,7 @@ YY_BREAK case 43: YY_RULE_SETUP -#line 552 "toke.l" +#line 547 "toke.l" { LEXTRACE("NOMAIL "); return NOMAIL; @@ -3984,7 +3979,7 @@ YY_BREAK case 44: YY_RULE_SETUP -#line 557 "toke.l" +#line 552 "toke.l" { LEXTRACE("FOLLOW "); return FOLLOWLNK; @@ -3992,7 +3987,7 @@ YY_BREAK case 45: YY_RULE_SETUP -#line 562 "toke.l" +#line 557 "toke.l" { LEXTRACE("NOFOLLOW "); return NOFOLLOWLNK; @@ -4000,7 +3995,7 @@ YY_BREAK case 46: YY_RULE_SETUP -#line 567 "toke.l" +#line 562 "toke.l" { if (sudoerstext[0] == '+') sudoers_errstr = N_("empty netgroup"); @@ -4012,7 +4007,7 @@ YY_BREAK case 47: YY_RULE_SETUP -#line 576 "toke.l" +#line 571 "toke.l" { /* netgroup */ if (!fill(sudoerstext, sudoersleng)) @@ -4023,7 +4018,7 @@ YY_BREAK case 48: YY_RULE_SETUP -#line 584 "toke.l" +#line 579 "toke.l" { /* group */ if (!fill(sudoerstext, sudoersleng)) @@ -4034,7 +4029,7 @@ YY_BREAK case 49: YY_RULE_SETUP -#line 592 "toke.l" +#line 587 "toke.l" { if (!fill(sudoerstext, sudoersleng)) yyterminate(); @@ -4044,7 +4039,7 @@ YY_BREAK case 50: YY_RULE_SETUP -#line 599 "toke.l" +#line 594 "toke.l" { if (!fill(sudoerstext, sudoersleng)) yyterminate(); @@ -4054,7 +4049,7 @@ YY_BREAK case 51: YY_RULE_SETUP -#line 606 "toke.l" +#line 601 "toke.l" { if (!ipv6_valid(sudoerstext)) { sudoers_errstr = N_("invalid IPv6 address"); @@ -4069,7 +4064,7 @@ YY_BREAK case 52: YY_RULE_SETUP -#line 618 "toke.l" +#line 613 "toke.l" { if (!ipv6_valid(sudoerstext)) { sudoers_errstr = N_("invalid IPv6 address"); @@ -4084,7 +4079,7 @@ YY_BREAK case 53: YY_RULE_SETUP -#line 630 "toke.l" +#line 625 "toke.l" { LEXTRACE("ALL "); return ALL; @@ -4093,7 +4088,7 @@ YY_BREAK case 54: YY_RULE_SETUP -#line 636 "toke.l" +#line 631 "toke.l" { LEXTRACE("CMND_TIMEOUT "); return CMND_TIMEOUT; @@ -4101,7 +4096,7 @@ YY_BREAK case 55: YY_RULE_SETUP -#line 641 "toke.l" +#line 636 "toke.l" { LEXTRACE("NOTBEFORE "); return NOTBEFORE; @@ -4109,7 +4104,7 @@ YY_BREAK case 56: YY_RULE_SETUP -#line 646 "toke.l" +#line 641 "toke.l" { LEXTRACE("NOTAFTER "); return NOTAFTER; @@ -4117,7 +4112,7 @@ YY_BREAK case 57: YY_RULE_SETUP -#line 651 "toke.l" +#line 646 "toke.l" { LEXTRACE("CWD "); prev_state = YY_START; @@ -4127,7 +4122,7 @@ YY_BREAK case 58: YY_RULE_SETUP -#line 658 "toke.l" +#line 653 "toke.l" { LEXTRACE("CHROOT "); prev_state = YY_START; @@ -4137,7 +4132,7 @@ YY_BREAK case 59: YY_RULE_SETUP -#line 665 "toke.l" +#line 660 "toke.l" { #ifdef HAVE_SELINUX LEXTRACE("ROLE "); @@ -4149,7 +4144,7 @@ YY_BREAK case 60: YY_RULE_SETUP -#line 674 "toke.l" +#line 669 "toke.l" { #ifdef HAVE_SELINUX LEXTRACE("TYPE "); @@ -4161,7 +4156,7 @@ YY_BREAK case 61: YY_RULE_SETUP -#line 682 "toke.l" +#line 677 "toke.l" { #ifdef HAVE_APPARMOR LEXTRACE("APPARMOR_PROFILE "); @@ -4173,7 +4168,7 @@ YY_BREAK case 62: YY_RULE_SETUP -#line 690 "toke.l" +#line 685 "toke.l" { #ifdef HAVE_PRIV_SET LEXTRACE("PRIVS "); @@ -4185,7 +4180,7 @@ YY_BREAK case 63: YY_RULE_SETUP -#line 699 "toke.l" +#line 694 "toke.l" { #ifdef HAVE_PRIV_SET LEXTRACE("LIMITPRIVS "); @@ -4197,7 +4192,7 @@ YY_BREAK case 64: YY_RULE_SETUP -#line 708 "toke.l" +#line 703 "toke.l" { got_alias: if (!fill(sudoerstext, sudoersleng)) @@ -4208,7 +4203,7 @@ YY_BREAK case 65: YY_RULE_SETUP -#line 716 "toke.l" +#line 711 "toke.l" { /* XXX - no way to specify digest for command */ /* no command args allowed for Defaults!/path */ @@ -4220,7 +4215,7 @@ YY_BREAK case 66: YY_RULE_SETUP -#line 725 "toke.l" +#line 720 "toke.l" { digest_type = SUDO_DIGEST_SHA224; BEGIN WANTDIGEST; @@ -4230,7 +4225,7 @@ YY_BREAK case 67: YY_RULE_SETUP -#line 732 "toke.l" +#line 727 "toke.l" { digest_type = SUDO_DIGEST_SHA256; BEGIN WANTDIGEST; @@ -4240,7 +4235,7 @@ YY_BREAK case 68: YY_RULE_SETUP -#line 739 "toke.l" +#line 734 "toke.l" { digest_type = SUDO_DIGEST_SHA384; BEGIN WANTDIGEST; @@ -4250,7 +4245,7 @@ YY_BREAK case 69: YY_RULE_SETUP -#line 746 "toke.l" +#line 741 "toke.l" { digest_type = SUDO_DIGEST_SHA512; BEGIN WANTDIGEST; @@ -4260,7 +4255,7 @@ YY_BREAK case 70: YY_RULE_SETUP -#line 753 "toke.l" +#line 748 "toke.l" { BEGIN GOTCMND; LEXTRACE("COMMAND "); @@ -4270,7 +4265,7 @@ YY_BREAK case 71: YY_RULE_SETUP -#line 760 "toke.l" +#line 755 "toke.l" { BEGIN prev_state; if (!fill(sudoerstext, sudoersleng)) @@ -4281,7 +4276,7 @@ YY_BREAK case 72: YY_RULE_SETUP -#line 768 "toke.l" +#line 763 "toke.l" { /* directories can't have args... */ if (sudoerstext[sudoersleng - 1] == '/') { @@ -4298,9 +4293,9 @@ YY_BREAK case 73: YY_RULE_SETUP -#line 782 "toke.l" +#line 777 "toke.l" { - if (sudoers_strict) { + if (sudoers_strict()) { if (!sudo_regex_compile(NULL, sudoerstext, &sudoers_errstr)) { LEXTRACE("ERROR "); return ERROR; @@ -4314,7 +4309,7 @@ YY_BREAK case 74: YY_RULE_SETUP -#line 795 "toke.l" +#line 790 "toke.l" { LEXTRACE("BEGINSTR "); sudoerslval.string = NULL; @@ -4324,7 +4319,7 @@ YY_BREAK case 75: YY_RULE_SETUP -#line 802 "toke.l" +#line 797 "toke.l" { /* a word */ if (!fill(sudoerstext, sudoersleng)) @@ -4336,7 +4331,7 @@ case 76: YY_RULE_SETUP -#line 811 "toke.l" +#line 806 "toke.l" { /* include file/directory */ if (!fill(sudoerstext, sudoersleng)) @@ -4348,7 +4343,7 @@ YY_BREAK case 77: YY_RULE_SETUP -#line 820 "toke.l" +#line 815 "toke.l" { LEXTRACE("BEGINSTR "); sudoerslval.string = NULL; @@ -4359,7 +4354,7 @@ case 78: YY_RULE_SETUP -#line 828 "toke.l" +#line 823 "toke.l" { LEXTRACE("( "); return '('; @@ -4367,7 +4362,7 @@ YY_BREAK case 79: YY_RULE_SETUP -#line 833 "toke.l" +#line 828 "toke.l" { LEXTRACE(") "); return ')'; @@ -4375,7 +4370,7 @@ YY_BREAK case 80: YY_RULE_SETUP -#line 838 "toke.l" +#line 833 "toke.l" { LEXTRACE(", "); return ','; @@ -4383,7 +4378,7 @@ YY_BREAK case 81: YY_RULE_SETUP -#line 843 "toke.l" +#line 838 "toke.l" { LEXTRACE("= "); return '='; @@ -4391,7 +4386,7 @@ YY_BREAK case 82: YY_RULE_SETUP -#line 848 "toke.l" +#line 843 "toke.l" { LEXTRACE(": "); return ':'; @@ -4399,7 +4394,7 @@ YY_BREAK case 83: YY_RULE_SETUP -#line 853 "toke.l" +#line 848 "toke.l" { if (sudoersleng & 1) { LEXTRACE("!"); @@ -4410,7 +4405,7 @@ case 84: /* rule 84 can match eol */ YY_RULE_SETUP -#line 860 "toke.l" +#line 855 "toke.l" { if (YY_START == INSTR) { /* throw away old string */ @@ -4432,7 +4427,7 @@ YY_BREAK case 85: YY_RULE_SETUP -#line 879 "toke.l" +#line 874 "toke.l" { /* throw away space/tabs */ sawspace = true; /* but remember for fill_args */ } @@ -4440,7 +4435,7 @@ case 86: /* rule 86 can match eol */ YY_RULE_SETUP -#line 883 "toke.l" +#line 878 "toke.l" { sawspace = true; /* remember for fill_args */ sudolineno++; @@ -4450,7 +4445,7 @@ case 87: /* rule 87 can match eol */ YY_RULE_SETUP -#line 889 "toke.l" +#line 884 "toke.l" { if (sudoerstext[sudoersleng - 1] == '\n') { /* comment ending in a newline */ @@ -4468,7 +4463,7 @@ YY_BREAK case 88: YY_RULE_SETUP -#line 904 "toke.l" +#line 899 "toke.l" { LEXTRACE("NOMATCH "); return NOMATCH; @@ -4484,7 +4479,7 @@ case YY_STATE_EOF(WANTDIGEST): case YY_STATE_EOF(GOTINC): case YY_STATE_EOF(EXPECTPATH): -#line 909 "toke.l" +#line 904 "toke.l" { if (!pop_include()) yyterminate(); @@ -4492,10 +4487,10 @@ YY_BREAK case 89: YY_RULE_SETUP -#line 914 "toke.l" +#line 909 "toke.l" ECHO; YY_BREAK -#line 4493 "toke.c" +#line 4488 "toke.c" case YY_END_OF_BUFFER: { @@ -5456,7 +5451,7 @@ #define YYTABLES_NAME "yytables" -#line 914 "toke.l" +#line 909 "toke.l" struct path_list { @@ -5469,7 +5464,8 @@ struct include_stack { struct sudolinebuf line; YY_BUFFER_STATE bs; - char *path; + char *path; /* search path */ + char *file; struct path_list_head more; /* more files in case of includedir */ int lineno; bool keepopen; @@ -5494,7 +5490,7 @@ * If zero files are found, NULL is stored in pathsp. */ static int -read_dir_files(const char *dirpath, struct path_list ***pathsp) +read_dir_files(const char *dirpath, struct path_list ***pathsp, int verbose) { DIR *dir; int i, count = 0; @@ -5504,6 +5500,7 @@ const size_t dirlen = strlen(dirpath); debug_decl(read_dir_files, SUDOERS_DEBUG_PARSER); + /* XXX - fdopendir */ dir = opendir(dirpath); if (dir == NULL) { if (errno == ENOENT) @@ -5516,20 +5513,32 @@ goto oom; while ((dent = readdir(dir)) != NULL) { const size_t namelen = NAMLEN(dent); + const char *name = dent->d_name; struct path_list *pl; struct stat sb; size_t len; char *path; /* Ignore files that end in '~' or have a '.' in them. */ - if (namelen == 0 || dent->d_name[namelen - 1] == '~' - || strchr(dent->d_name, '.') != NULL) { + if (namelen == 0 || name[namelen - 1] == '~' || strchr(name, '.') != NULL) { + /* Warn about ignored files not starting with '.' if verbose. */ + if (namelen > 0 && name[0] != '.' && verbose > 1) { + if (name[namelen - 1] == '~' || + (namelen > 4 && strcmp(&name[namelen - 4], ".bak") == 0)) { + fprintf(stderr, U_("%s/%s: %s"), dirpath, name, + U_("ignoring editor backup file")); + } else { + fprintf(stderr, U_("%s/%s: %s"), dirpath, name, + U_("ignoring file name containing '.'")); + } + fputc('\n', stderr); + } continue; } len = dirlen + 1 + namelen; if ((path = sudo_rcstr_alloc(len)) == NULL) goto oom; - if ((size_t)snprintf(path, len + 1, "%s/%s", dirpath, dent->d_name) != len) { + if ((size_t)snprintf(path, len + 1, "%s/%s", dirpath, name) != len) { sudo_warnx(U_("internal error, %s overflow"), __func__); sudo_rcstr_delref(path); goto bad; @@ -5584,13 +5593,13 @@ * Returns the number of files or -1 on error. */ static int -switch_dir(struct include_stack *stack, char *dirpath) +switch_dir(struct include_stack *stack, char *dirpath, int verbose) { struct path_list **paths = NULL; int count, i; debug_decl(switch_dir, SUDOERS_DEBUG_PARSER); - count = read_dir_files(dirpath, &paths); + count = read_dir_files(dirpath, &paths, verbose); if (count > 0) { /* Sort the list as an array in reverse order. */ qsort(paths, count, sizeof(*paths), pl_compare); @@ -5645,7 +5654,7 @@ keepopen = false; sawspace = false; continued = false; - digest_type = -1; + digest_type = SUDO_DIGEST_INVALID; prev_state = INITIAL; BEGIN INITIAL; @@ -5653,88 +5662,149 @@ } /* + * Like strlcpy() but expand %h escapes to user_shost. + */ +static size_t +strlcpy_expand_host(char *dst, const char *src, size_t size) +{ + size_t len = 0; + char ch; + debug_decl(strlcpy_expand_host, SUDOERS_DEBUG_PARSER); + + while ((ch = *src++) != '\0') { + if (ch == '%' && *src == 'h') { + size_t n = strlcpy(dst, user_shost, size); + len += n; + if (n >= size) { + /* truncated */ + n = size ? size - 1 : 0; + } + dst += n; + size -= n; + src++; + continue; + } + if (size > 1) { + *dst++ = ch; + size--; + len++; + } + } + if (size > 0) + *dst = '\0'; + + debug_return_size_t(len); +} + +/* * Expand any embedded %h (host) escapes in the given path and makes * a relative path fully-qualified based on the current sudoers file. - * Returns a reference-counted string. + * Returns a reference-counted string on success or NULL on failure. */ static char * -expand_include(const char *opath) +expand_include(const char *src) { + const char *path = sudoers_search_path ? sudoers_search_path : sudoers; + const char *path_end = path + strlen(path); const char *cp, *ep; - char *path, *pp; - size_t len, olen, dirlen = 0; - bool subst = false; + char *dst0, *dst; + size_t dst_size, src_len; + unsigned int nhost = 0; debug_decl(expand_include, SUDOERS_DEBUG_PARSER); /* Strip double quotes if present. */ - olen = strlen(opath); - if (olen > 1 && opath[0] == '"' && opath[olen - 1] == '"') { - opath++; - olen -= 2; + src_len = strlen(src); + if (src_len > 1 && src[0] == '"' && src[src_len - 1] == '"') { + src++; + src_len -= 2; } - if (olen == 0) + if (src_len == 0) debug_return_ptr(NULL); - /* Relative paths are located in the same dir as the sudoers file. */ - if (*opath != '/') { - char *dirend = strrchr(sudoers, '/'); - if (dirend != NULL) - dirlen = (size_t)(dirend - sudoers) + 1; - } - - cp = opath; - ep = opath + olen; - len = olen; + /* Check for %h escapes in src. */ + cp = src; + ep = src + src_len; while (cp < ep) { if (cp[0] == '%' && cp[1] == 'h') { - subst = true; - len += strlen(user_shost); + nhost++; cp += 2; continue; } cp++; } + if (*src == '/') { + /* Fully-qualified path, make a copy and expand %h escapes. */ + dst_size = src_len + (nhost * strlen(user_shost)) - (nhost * 2) + 1; + dst0 = sudo_rcstr_alloc(dst_size - 1); + if (dst0 == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + sudoerserror(NULL); + debug_return_str(NULL); + } + if (strlcpy_expand_host(dst0, src, dst_size) >= dst_size) + goto oflow; + debug_return_str(dst0); + } + + /* + * Relative paths are located in the same dir as the sudoers file. + * If the current sudoers file was opened via a colon-separated path, + * use the same path when opening src. + */ + dst_size = 0; + for (cp = sudo_strsplit(path, path_end, ":", &ep); cp != NULL; + cp = sudo_strsplit(NULL, path_end, ":", &ep)) { + char *dirend = memrchr(cp, '/', ep - cp); + if (dirend != NULL) { + dst_size += (size_t)(dirend - cp) + 1; + } + /* Includes space for ':' separator and NUL terminator. */ + dst_size += src_len + (nhost * strlen(user_shost)) - (nhost * 2) + 1; + } + /* Make a copy of the fully-qualified path and return it. */ - path = pp = sudo_rcstr_alloc(dirlen + len); - if (path == NULL) { + dst = dst0 = sudo_rcstr_alloc(dst_size - 1); + if (dst0 == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); sudoerserror(NULL); debug_return_str(NULL); } - if (dirlen) { - memcpy(path, sudoers, dirlen); - pp += dirlen; - } - if (subst) { - /* substitute for %h */ - cp = opath; - while (cp < ep) { - if (cp[0] == '%' && cp[1] == 'h') { - size_t n = strlcpy(pp, user_shost, len + 1); - if (n >= len + 1) - goto oflow; - cp += 2; - pp += n; - len -= n; - continue; - } - if (len < 1) + for (cp = sudo_strsplit(path, path_end, ":", &ep); cp != NULL; + cp = sudo_strsplit(NULL, path_end, ":", &ep)) { + size_t len; + char *dirend; + + if (cp != path) { + if (dst_size < 2) goto oflow; - *pp++ = *cp++; - len--; + *dst++ = ':'; + dst_size--; } - *pp = '\0'; - } else { - memcpy(pp, opath, len); - pp[len] = '\0'; + + dirend = memrchr(cp, '/', ep - cp); + if (dirend != NULL) { + len = (size_t)(dirend - cp) + 1; + if (len >= dst_size) + goto oflow; + memcpy(dst, cp, len); + dst += len; + dst_size -= len; + } + + len = strlcpy_expand_host(dst, src, dst_size); + if (len >= dst_size) + goto oflow; + dst += len; + dst_size -= len; } + *dst = '\0'; - debug_return_str(path); + debug_return_str(dst0); oflow: sudo_warnx(U_("internal error, %s overflow"), __func__); sudoerserror(NULL); - sudo_rcstr_delref(path); + free(dst0); debug_return_str(NULL); } @@ -5744,11 +5814,11 @@ * A missing or insecure include dir is simply ignored. * Returns false on error, else true. */ -bool -push_include(const char *opath, bool isdir) +static bool +push_include_int(const char *opath, bool isdir, int verbose) { struct path_list *pl; - char *path; + char *file = NULL, *path; FILE *fp; debug_decl(push_include, SUDOERS_DEBUG_PARSER); @@ -5760,8 +5830,11 @@ struct include_stack *new_istack; if (idepth > MAX_SUDOERS_DEPTH) { - if (sudoers_warnings) - sudo_warnx(U_("%s: %s"), path, U_("too many levels of includes")); + if (verbose > 0) { + fprintf(stderr, U_("%s: %s"), path, + U_("too many levels of includes")); + fputc('\n', stderr); + } sudoerserror(NULL); sudo_rcstr_delref(path); debug_return_bool(false); @@ -5779,11 +5852,16 @@ SLIST_INIT(&istack[idepth].more); if (isdir) { struct stat sb; - int count, status; + char dname[PATH_MAX]; + int count, fd, status; - status = sudo_secure_dir(path, sudoers_uid, sudoers_gid, &sb); + fd = sudo_open_conf_path(path, dname, sizeof(dname), NULL); + status = sudo_secure_fd(fd, S_IFDIR, sudoers_file_uid(), + sudoers_file_gid(), &sb); + if (fd != -1) + close(fd); /* XXX use in read_dir_files? */ if (status != SUDO_PATH_SECURE) { - if (sudoers_warnings) { + if (verbose > 0) { switch (status) { case SUDO_PATH_BAD_TYPE: errno = ENOTDIR; @@ -5792,7 +5870,7 @@ case SUDO_PATH_WRONG_OWNER: sudo_warnx(U_("%s is owned by uid %u, should be %u"), path, (unsigned int) sb.st_uid, - (unsigned int) sudoers_uid); + (unsigned int) sudoers_file_uid()); break; case SUDO_PATH_WORLD_WRITABLE: sudo_warnx(U_("%s is world writable"), path); @@ -5800,7 +5878,7 @@ case SUDO_PATH_GROUP_WRITABLE: sudo_warnx(U_("%s is owned by gid %u, should be %u"), path, (unsigned int) sb.st_gid, - (unsigned int) sudoers_gid); + (unsigned int) sudoers_file_gid()); break; default: break; @@ -5810,7 +5888,7 @@ sudo_rcstr_delref(path); debug_return_bool(true); } - count = switch_dir(&istack[idepth], path); + count = switch_dir(&istack[idepth], dname, verbose); if (count <= 0) { /* switch_dir() called sudoerserror() for us */ sudo_rcstr_delref(path); @@ -5819,6 +5897,7 @@ /* Parse the first dir entry we can open, leave the rest for later. */ do { + sudo_rcstr_delref(file); sudo_rcstr_delref(path); if ((pl = SLIST_FIRST(&istack[idepth].more)) == NULL) { /* Unable to open any files in include dir, not an error. */ @@ -5827,30 +5906,50 @@ SLIST_REMOVE_HEAD(&istack[idepth].more, entries); path = pl->path; free(pl); - } while ((fp = open_sudoers(path, false, &keepopen)) == NULL); + /* The file and path and the same for sudoers.d files. */ + file = path; + sudo_rcstr_addref(file); + } while ((fp = open_sudoers(file, NULL, false, &keepopen)) == NULL); } else { - if ((fp = open_sudoers(path, true, &keepopen)) == NULL) { + if ((fp = open_sudoers(path, &file, true, &keepopen)) == NULL) { /* The error was already printed by open_sudoers() */ sudoerserror(NULL); sudo_rcstr_delref(path); debug_return_bool(false); } } - /* Push the old (current) file and open the new one. */ - istack[idepth].path = sudoers; /* push old path (and its ref) */ + /* + * Push the old (current) file and open the new one. + * We use the existing refs of sudoers and sudoers_search_path. + */ + istack[idepth].file = sudoers; + istack[idepth].path = sudoers_search_path; istack[idepth].line = sudolinebuf; istack[idepth].bs = YY_CURRENT_BUFFER; istack[idepth].lineno = sudolineno; istack[idepth].keepopen = keepopen; idepth++; sudolineno = 1; - sudoers = path; + sudoers = file; + sudoers_search_path = path; sudoers_switch_to_buffer(sudoers_create_buffer(fp, YY_BUF_SIZE)); memset(&sudolinebuf, 0, sizeof(sudolinebuf)); debug_return_bool(true); } +bool +push_include(const char *opath, int verbose) +{ + return push_include_int(opath, false, verbose); +} + +bool +push_includedir(const char *opath, int verbose) +{ + return push_include_int(opath, true, verbose); +} + /* * Restore the previous sudoers file and buffer, or, in the case * of an includedir, switch to the next file in the dir. @@ -5872,12 +5971,15 @@ /* If we are in an include dir, move to the next file. */ while ((pl = SLIST_FIRST(&istack[idepth - 1].more)) != NULL) { SLIST_REMOVE_HEAD(&istack[idepth - 1].more, entries); - fp = open_sudoers(pl->path, false, &keepopen); + fp = open_sudoers(pl->path, NULL, false, &keepopen); if (fp != NULL) { sudolinebuf.len = sudolinebuf.off = 0; sudolinebuf.toke_start = sudolinebuf.toke_end = 0; sudo_rcstr_delref(sudoers); - sudoers = pl->path; + sudo_rcstr_delref(sudoers_search_path); + sudoers_search_path = pl->path; + sudoers = sudoers_search_path; + sudo_rcstr_addref(sudoers); sudolineno = 1; sudoers_switch_to_buffer(sudoers_create_buffer(fp, YY_BUF_SIZE)); free(pl); @@ -5894,7 +5996,9 @@ free(sudolinebuf.buf); sudolinebuf = istack[idepth].line; sudo_rcstr_delref(sudoers); - sudoers = istack[idepth].path; + sudoers = istack[idepth].file; + sudo_rcstr_delref(sudoers_search_path); + sudoers_search_path = istack[idepth].path; sudolineno = istack[idepth].lineno; keepopen = istack[idepth].keepopen; } diff -Nru sudo-1.9.13p3/plugins/sudoers/toke.h sudo-1.9.14p2/plugins/sudoers/toke.h --- sudo-1.9.13p3/plugins/sudoers/toke.h 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/toke.h 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,8 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2011-2013, 2015-2016, 2020 Todd C. Miller + * Copyright (c) 2011-2013, 2015-2016, 2020-2023 + * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -27,18 +28,23 @@ size_t toke_start; /* starting column of current token */ size_t toke_end; /* ending column of current token */ }; + extern const char *sudoers_errstr; extern struct sudolinebuf sudolinebuf; +extern int sudolineno; +extern char *sudoers_search_path; bool append(const char *, size_t); bool fill_args(const char *, size_t, int); bool fill_cmnd(const char *, size_t); bool fill(const char *, size_t); +void init_lexer(void); bool ipv6_valid(const char *s); int sudoers_trace_print(const char *); void sudoerserrorf(const char *, ...) sudo_printf0like(1, 2); void sudoerserror(const char *); -bool push_include(const char *, bool); +bool push_include(const char *, int); +bool push_includedir(const char *, int); #ifndef FLEX_SCANNER extern int (*trace_print)(const char *msg); diff -Nru sudo-1.9.13p3/plugins/sudoers/toke.l sudo-1.9.14p2/plugins/sudoers/toke.l --- sudo-1.9.13p3/plugins/sudoers/toke.l 2023-03-04 15:50:10.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/toke.l 2023-07-15 15:37:23.000000000 +0000 @@ -2,7 +2,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1996, 1998-2005, 2007-2022 + * Copyright (c) 1996, 1998-2005, 2007-2023 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -55,18 +55,13 @@ int sudolineno; /* current sudoers line number. */ char *sudoers; /* sudoers file being parsed. */ +char *sudoers_search_path; /* colon-separated path of sudoers files. */ const char *sudoers_errstr; /* description of last error from lexer. */ struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */ -/* Default sudoers path, mode and owner (may be set via sudo.conf) */ -const char *sudoers_file = _PATH_SUDOERS; -mode_t sudoers_mode = SUDOERS_MODE; -uid_t sudoers_uid = SUDOERS_UID; -gid_t sudoers_gid = SUDOERS_GID; - static bool continued, sawspace; static int prev_state; -static int digest_type = -1; +static unsigned int digest_type = SUDO_DIGEST_INVALID; static bool pop_include(void); static yy_size_t sudoers_input(char *buf, yy_size_t max_size); @@ -296,7 +291,7 @@ yyterminate(); BEGIN INITIAL; continued = false; - if (sudoers_strict) { + if (sudoers_strict()) { if (!sudo_regex_compile(NULL, sudoerstext, &sudoers_errstr)) { LEXTRACE("ERROR "); return ERROR; @@ -780,7 +775,7 @@ } /* a pathname */ {REGEX} { - if (sudoers_strict) { + if (sudoers_strict()) { if (!sudo_regex_compile(NULL, sudoerstext, &sudoers_errstr)) { LEXTRACE("ERROR "); return ERROR; @@ -922,7 +917,8 @@ struct include_stack { struct sudolinebuf line; YY_BUFFER_STATE bs; - char *path; + char *path; /* search path */ + char *file; struct path_list_head more; /* more files in case of includedir */ int lineno; bool keepopen; @@ -947,7 +943,7 @@ * If zero files are found, NULL is stored in pathsp. */ static int -read_dir_files(const char *dirpath, struct path_list ***pathsp) +read_dir_files(const char *dirpath, struct path_list ***pathsp, int verbose) { DIR *dir; int i, count = 0; @@ -957,6 +953,7 @@ const size_t dirlen = strlen(dirpath); debug_decl(read_dir_files, SUDOERS_DEBUG_PARSER); + /* XXX - fdopendir */ dir = opendir(dirpath); if (dir == NULL) { if (errno == ENOENT) @@ -969,20 +966,32 @@ goto oom; while ((dent = readdir(dir)) != NULL) { const size_t namelen = NAMLEN(dent); + const char *name = dent->d_name; struct path_list *pl; struct stat sb; size_t len; char *path; /* Ignore files that end in '~' or have a '.' in them. */ - if (namelen == 0 || dent->d_name[namelen - 1] == '~' - || strchr(dent->d_name, '.') != NULL) { + if (namelen == 0 || name[namelen - 1] == '~' || strchr(name, '.') != NULL) { + /* Warn about ignored files not starting with '.' if verbose. */ + if (namelen > 0 && name[0] != '.' && verbose > 1) { + if (name[namelen - 1] == '~' || + (namelen > 4 && strcmp(&name[namelen - 4], ".bak") == 0)) { + fprintf(stderr, U_("%s/%s: %s"), dirpath, name, + U_("ignoring editor backup file")); + } else { + fprintf(stderr, U_("%s/%s: %s"), dirpath, name, + U_("ignoring file name containing '.'")); + } + fputc('\n', stderr); + } continue; } len = dirlen + 1 + namelen; if ((path = sudo_rcstr_alloc(len)) == NULL) goto oom; - if ((size_t)snprintf(path, len + 1, "%s/%s", dirpath, dent->d_name) != len) { + if ((size_t)snprintf(path, len + 1, "%s/%s", dirpath, name) != len) { sudo_warnx(U_("internal error, %s overflow"), __func__); sudo_rcstr_delref(path); goto bad; @@ -1037,13 +1046,13 @@ * Returns the number of files or -1 on error. */ static int -switch_dir(struct include_stack *stack, char *dirpath) +switch_dir(struct include_stack *stack, char *dirpath, int verbose) { struct path_list **paths = NULL; int count, i; debug_decl(switch_dir, SUDOERS_DEBUG_PARSER); - count = read_dir_files(dirpath, &paths); + count = read_dir_files(dirpath, &paths, verbose); if (count > 0) { /* Sort the list as an array in reverse order. */ qsort(paths, count, sizeof(*paths), pl_compare); @@ -1098,7 +1107,7 @@ keepopen = false; sawspace = false; continued = false; - digest_type = -1; + digest_type = SUDO_DIGEST_INVALID; prev_state = INITIAL; BEGIN INITIAL; @@ -1106,88 +1115,149 @@ } /* + * Like strlcpy() but expand %h escapes to user_shost. + */ +static size_t +strlcpy_expand_host(char *dst, const char *src, size_t size) +{ + size_t len = 0; + char ch; + debug_decl(strlcpy_expand_host, SUDOERS_DEBUG_PARSER); + + while ((ch = *src++) != '\0') { + if (ch == '%' && *src == 'h') { + size_t n = strlcpy(dst, user_shost, size); + len += n; + if (n >= size) { + /* truncated */ + n = size ? size - 1 : 0; + } + dst += n; + size -= n; + src++; + continue; + } + if (size > 1) { + *dst++ = ch; + size--; + len++; + } + } + if (size > 0) + *dst = '\0'; + + debug_return_size_t(len); +} + +/* * Expand any embedded %h (host) escapes in the given path and makes * a relative path fully-qualified based on the current sudoers file. - * Returns a reference-counted string. + * Returns a reference-counted string on success or NULL on failure. */ static char * -expand_include(const char *opath) +expand_include(const char *src) { + const char *path = sudoers_search_path ? sudoers_search_path : sudoers; + const char *path_end = path + strlen(path); const char *cp, *ep; - char *path, *pp; - size_t len, olen, dirlen = 0; - bool subst = false; + char *dst0, *dst; + size_t dst_size, src_len; + unsigned int nhost = 0; debug_decl(expand_include, SUDOERS_DEBUG_PARSER); /* Strip double quotes if present. */ - olen = strlen(opath); - if (olen > 1 && opath[0] == '"' && opath[olen - 1] == '"') { - opath++; - olen -= 2; + src_len = strlen(src); + if (src_len > 1 && src[0] == '"' && src[src_len - 1] == '"') { + src++; + src_len -= 2; } - if (olen == 0) + if (src_len == 0) debug_return_ptr(NULL); - /* Relative paths are located in the same dir as the sudoers file. */ - if (*opath != '/') { - char *dirend = strrchr(sudoers, '/'); - if (dirend != NULL) - dirlen = (size_t)(dirend - sudoers) + 1; - } - - cp = opath; - ep = opath + olen; - len = olen; + /* Check for %h escapes in src. */ + cp = src; + ep = src + src_len; while (cp < ep) { if (cp[0] == '%' && cp[1] == 'h') { - subst = true; - len += strlen(user_shost); + nhost++; cp += 2; continue; } cp++; } + if (*src == '/') { + /* Fully-qualified path, make a copy and expand %h escapes. */ + dst_size = src_len + (nhost * strlen(user_shost)) - (nhost * 2) + 1; + dst0 = sudo_rcstr_alloc(dst_size - 1); + if (dst0 == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + sudoerserror(NULL); + debug_return_str(NULL); + } + if (strlcpy_expand_host(dst0, src, dst_size) >= dst_size) + goto oflow; + debug_return_str(dst0); + } + + /* + * Relative paths are located in the same dir as the sudoers file. + * If the current sudoers file was opened via a colon-separated path, + * use the same path when opening src. + */ + dst_size = 0; + for (cp = sudo_strsplit(path, path_end, ":", &ep); cp != NULL; + cp = sudo_strsplit(NULL, path_end, ":", &ep)) { + char *dirend = memrchr(cp, '/', ep - cp); + if (dirend != NULL) { + dst_size += (size_t)(dirend - cp) + 1; + } + /* Includes space for ':' separator and NUL terminator. */ + dst_size += src_len + (nhost * strlen(user_shost)) - (nhost * 2) + 1; + } + /* Make a copy of the fully-qualified path and return it. */ - path = pp = sudo_rcstr_alloc(dirlen + len); - if (path == NULL) { + dst = dst0 = sudo_rcstr_alloc(dst_size - 1); + if (dst0 == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); sudoerserror(NULL); debug_return_str(NULL); } - if (dirlen) { - memcpy(path, sudoers, dirlen); - pp += dirlen; - } - if (subst) { - /* substitute for %h */ - cp = opath; - while (cp < ep) { - if (cp[0] == '%' && cp[1] == 'h') { - size_t n = strlcpy(pp, user_shost, len + 1); - if (n >= len + 1) - goto oflow; - cp += 2; - pp += n; - len -= n; - continue; - } - if (len < 1) + for (cp = sudo_strsplit(path, path_end, ":", &ep); cp != NULL; + cp = sudo_strsplit(NULL, path_end, ":", &ep)) { + size_t len; + char *dirend; + + if (cp != path) { + if (dst_size < 2) goto oflow; - *pp++ = *cp++; - len--; + *dst++ = ':'; + dst_size--; } - *pp = '\0'; - } else { - memcpy(pp, opath, len); - pp[len] = '\0'; + + dirend = memrchr(cp, '/', ep - cp); + if (dirend != NULL) { + len = (size_t)(dirend - cp) + 1; + if (len >= dst_size) + goto oflow; + memcpy(dst, cp, len); + dst += len; + dst_size -= len; + } + + len = strlcpy_expand_host(dst, src, dst_size); + if (len >= dst_size) + goto oflow; + dst += len; + dst_size -= len; } + *dst = '\0'; - debug_return_str(path); + debug_return_str(dst0); oflow: sudo_warnx(U_("internal error, %s overflow"), __func__); sudoerserror(NULL); - sudo_rcstr_delref(path); + free(dst0); debug_return_str(NULL); } @@ -1197,11 +1267,11 @@ * A missing or insecure include dir is simply ignored. * Returns false on error, else true. */ -bool -push_include(const char *opath, bool isdir) +static bool +push_include_int(const char *opath, bool isdir, int verbose) { struct path_list *pl; - char *path; + char *file = NULL, *path; FILE *fp; debug_decl(push_include, SUDOERS_DEBUG_PARSER); @@ -1213,8 +1283,11 @@ struct include_stack *new_istack; if (idepth > MAX_SUDOERS_DEPTH) { - if (sudoers_warnings) - sudo_warnx(U_("%s: %s"), path, U_("too many levels of includes")); + if (verbose > 0) { + fprintf(stderr, U_("%s: %s"), path, + U_("too many levels of includes")); + fputc('\n', stderr); + } sudoerserror(NULL); sudo_rcstr_delref(path); debug_return_bool(false); @@ -1232,11 +1305,16 @@ SLIST_INIT(&istack[idepth].more); if (isdir) { struct stat sb; - int count, status; + char dname[PATH_MAX]; + int count, fd, status; - status = sudo_secure_dir(path, sudoers_uid, sudoers_gid, &sb); + fd = sudo_open_conf_path(path, dname, sizeof(dname), NULL); + status = sudo_secure_fd(fd, S_IFDIR, sudoers_file_uid(), + sudoers_file_gid(), &sb); + if (fd != -1) + close(fd); /* XXX use in read_dir_files? */ if (status != SUDO_PATH_SECURE) { - if (sudoers_warnings) { + if (verbose > 0) { switch (status) { case SUDO_PATH_BAD_TYPE: errno = ENOTDIR; @@ -1245,7 +1323,7 @@ case SUDO_PATH_WRONG_OWNER: sudo_warnx(U_("%s is owned by uid %u, should be %u"), path, (unsigned int) sb.st_uid, - (unsigned int) sudoers_uid); + (unsigned int) sudoers_file_uid()); break; case SUDO_PATH_WORLD_WRITABLE: sudo_warnx(U_("%s is world writable"), path); @@ -1253,7 +1331,7 @@ case SUDO_PATH_GROUP_WRITABLE: sudo_warnx(U_("%s is owned by gid %u, should be %u"), path, (unsigned int) sb.st_gid, - (unsigned int) sudoers_gid); + (unsigned int) sudoers_file_gid()); break; default: break; @@ -1263,7 +1341,7 @@ sudo_rcstr_delref(path); debug_return_bool(true); } - count = switch_dir(&istack[idepth], path); + count = switch_dir(&istack[idepth], dname, verbose); if (count <= 0) { /* switch_dir() called sudoerserror() for us */ sudo_rcstr_delref(path); @@ -1272,6 +1350,7 @@ /* Parse the first dir entry we can open, leave the rest for later. */ do { + sudo_rcstr_delref(file); sudo_rcstr_delref(path); if ((pl = SLIST_FIRST(&istack[idepth].more)) == NULL) { /* Unable to open any files in include dir, not an error. */ @@ -1280,30 +1359,50 @@ SLIST_REMOVE_HEAD(&istack[idepth].more, entries); path = pl->path; free(pl); - } while ((fp = open_sudoers(path, false, &keepopen)) == NULL); + /* The file and path and the same for sudoers.d files. */ + file = path; + sudo_rcstr_addref(file); + } while ((fp = open_sudoers(file, NULL, false, &keepopen)) == NULL); } else { - if ((fp = open_sudoers(path, true, &keepopen)) == NULL) { + if ((fp = open_sudoers(path, &file, true, &keepopen)) == NULL) { /* The error was already printed by open_sudoers() */ sudoerserror(NULL); sudo_rcstr_delref(path); debug_return_bool(false); } } - /* Push the old (current) file and open the new one. */ - istack[idepth].path = sudoers; /* push old path (and its ref) */ + /* + * Push the old (current) file and open the new one. + * We use the existing refs of sudoers and sudoers_search_path. + */ + istack[idepth].file = sudoers; + istack[idepth].path = sudoers_search_path; istack[idepth].line = sudolinebuf; istack[idepth].bs = YY_CURRENT_BUFFER; istack[idepth].lineno = sudolineno; istack[idepth].keepopen = keepopen; idepth++; sudolineno = 1; - sudoers = path; + sudoers = file; + sudoers_search_path = path; sudoers_switch_to_buffer(sudoers_create_buffer(fp, YY_BUF_SIZE)); memset(&sudolinebuf, 0, sizeof(sudolinebuf)); debug_return_bool(true); } +bool +push_include(const char *opath, int verbose) +{ + return push_include_int(opath, false, verbose); +} + +bool +push_includedir(const char *opath, int verbose) +{ + return push_include_int(opath, true, verbose); +} + /* * Restore the previous sudoers file and buffer, or, in the case * of an includedir, switch to the next file in the dir. @@ -1325,12 +1424,15 @@ /* If we are in an include dir, move to the next file. */ while ((pl = SLIST_FIRST(&istack[idepth - 1].more)) != NULL) { SLIST_REMOVE_HEAD(&istack[idepth - 1].more, entries); - fp = open_sudoers(pl->path, false, &keepopen); + fp = open_sudoers(pl->path, NULL, false, &keepopen); if (fp != NULL) { sudolinebuf.len = sudolinebuf.off = 0; sudolinebuf.toke_start = sudolinebuf.toke_end = 0; sudo_rcstr_delref(sudoers); - sudoers = pl->path; + sudo_rcstr_delref(sudoers_search_path); + sudoers_search_path = pl->path; + sudoers = sudoers_search_path; + sudo_rcstr_addref(sudoers); sudolineno = 1; sudoers_switch_to_buffer(sudoers_create_buffer(fp, YY_BUF_SIZE)); free(pl); @@ -1347,7 +1449,9 @@ free(sudolinebuf.buf); sudolinebuf = istack[idepth].line; sudo_rcstr_delref(sudoers); - sudoers = istack[idepth].path; + sudoers = istack[idepth].file; + sudo_rcstr_delref(sudoers_search_path); + sudoers_search_path = istack[idepth].path; sudolineno = istack[idepth].lineno; keepopen = istack[idepth].keepopen; } diff -Nru sudo-1.9.13p3/plugins/sudoers/toke_util.c sudo-1.9.14p2/plugins/sudoers/toke_util.c --- sudo-1.9.13p3/plugins/sudoers/toke_util.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/toke_util.c 2023-07-15 15:37:23.000000000 +0000 @@ -151,7 +151,7 @@ /* Check for sudoedit specified as a fully-qualified path. */ if ((dst = strrchr(sudoerslval.command.cmnd, '/')) != NULL) { // -V575 if (strcmp(dst, "/sudoedit") == 0) { - if (sudoers_strict) { + if (sudoers_strict()) { sudoerserror( N_("sudoedit should not be specified with a path")); } diff -Nru sudo-1.9.13p3/plugins/sudoers/visudo.c sudo-1.9.14p2/plugins/sudoers/visudo.c --- sudo-1.9.13p3/plugins/sudoers/visudo.c 2023-02-25 18:21:47.000000000 +0000 +++ sudo-1.9.14p2/plugins/sudoers/visudo.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1996, 1998-2005, 2007-2022 + * Copyright (c) 1996, 1998-2005, 2007-2023 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -72,12 +72,13 @@ struct sudoersfile { TAILQ_ENTRY(sudoersfile) entries; - char *path; - char *tpath; - bool modified; - bool doedit; - int fd; - int errorline; + char *opath; /* original path we opened */ + char *dpath; /* destination path to write to */ + char *tpath; /* editor temporary file path */ + bool modified; /* true if the user modified the file */ + bool doedit; /* true when editing (not just checking) sudoers */ + int fd; /* fd of the original file (if it exists) */ + int errorline; /* line number when there is a syntax error */ }; TAILQ_HEAD(sudoersfile_list, sudoersfile); @@ -97,6 +98,7 @@ static void parse_sudoers_options(void); static void setup_signals(void); static void visudo_cleanup(void); +sudo_noreturn static void export_sudoers(const char *infile, const char *outfile); sudo_noreturn static void help(void); sudo_noreturn static void usage(void); @@ -107,7 +109,9 @@ */ struct sudo_user sudo_user; struct passwd *list_pw; +static const char *path_sudoers = _PATH_SUDOERS; static struct sudoersfile_list sudoerslist = TAILQ_HEAD_INITIALIZER(sudoerslist); +static struct sudoers_parser_config sudoers_conf = SUDOERS_PARSER_CONFIG_INITIALIZER; static bool checkonly; static bool edit_includes = true; static unsigned int errors; @@ -188,7 +192,7 @@ checkonly = true; /* check mode */ break; case 'f': - sudoers_file = optarg; /* sudoers file path */ + path_sudoers = optarg; fflag = true; break; case 'h': @@ -226,7 +230,7 @@ case 1: /* Only accept sudoers file if no -f was specified. */ if (!fflag) { - sudoers_file = *argv; + path_sudoers = *argv; fflag = true; } break; @@ -237,11 +241,11 @@ if (fflag) { /* Looser owner/permission checks for an uninstalled sudoers file. */ if (!use_owner) { - sudoers_uid = -1; - sudoers_gid = -1; + sudoers_conf.sudoers_uid = (uid_t)-1; + sudoers_conf.sudoers_gid = (gid_t)-1; } if (!use_perms) - SET(sudoers_mode, S_IWUSR); + sudoers_conf.sudoers_mode |= S_IWUSR; } else { /* Check/set owner and mode for installed sudoers file. */ use_owner = true; @@ -250,13 +254,7 @@ if (export_path != NULL) { /* Backward compatibility for the time being. */ - sudo_warnx("%s", - U_("the -x option will be removed in a future release")); - sudo_warnx("%s", - U_("please consider using the cvtsudoers utility instead")); - execlp("cvtsudoers", "cvtsudoers", "-f", "json", "-o", export_path, - sudoers_file, (char *)0); - sudo_fatal(U_("unable to execute %s"), "cvtsudoers"); + export_sudoers(path_sudoers, export_path); } /* Mock up a fake sudo_user struct. */ @@ -282,7 +280,7 @@ sudo_fatalx("%s", U_("unable to initialize sudoers default values")); if (checkonly) { - exitcode = check_syntax(sudoers_file, quiet, strict, use_owner, + exitcode = check_syntax(path_sudoers, quiet, strict, use_owner, use_perms) ? 0 : 1; goto done; } @@ -291,9 +289,12 @@ * Parse the existing sudoers file(s) to highlight any existing * errors and to pull in editor and env_editor conf values. */ - if ((sudoersin = open_sudoers(sudoers_file, true, NULL)) == NULL) + sudoers_conf.strict = true; + sudoers_conf.verbose = quiet ? 0 : 2; + sudoers_conf.sudoers_path = path_sudoers; + init_parser(NULL, &sudoers_conf); + if ((sudoersin = open_sudoers(path_sudoers, &sudoers, true, NULL)) == NULL) exit(EXIT_FAILURE); - init_parser(sudoers_file, quiet, true); sudoers_setlocale(SUDOERS_LOCALE_SUDOERS, &oldlocale); (void) sudoersparse(); (void) update_defaults(&parsed_policy, NULL, @@ -310,8 +311,8 @@ if (!sp->doedit) continue; if (sp != TAILQ_FIRST(&sudoerslist)) { - printf(_("press return to edit %s: "), sp->path); - while ((ch = getchar()) != EOF && ch != '\n') + printf(_("press return to edit %s: "), sp->opath); + while ((ch = getchar()) != EOF && ch != '\r' && ch != '\n') continue; } edit_sudoers(sp, editor, editor_argc, editor_argv, -1); @@ -352,7 +353,7 @@ if (sp->errorline > 0) continue; /* preserve the first error */ - if (strcmp(file, sp->path) == 0 || + if (strcmp(file, sp->opath) == 0 || (sp->tpath != NULL && strcmp(file, sp->tpath) == 0)) { sp->errorline = line; break; @@ -494,19 +495,19 @@ debug_decl(edit_sudoers, SUDOERS_DEBUG_UTIL); if (fstat(sp->fd, &sb) == -1) - sudo_fatal(U_("unable to stat %s"), sp->path); + sudo_fatal(U_("unable to stat %s"), sp->opath); orig_size = sb.st_size; mtim_get(&sb, orig_mtim); /* Create the temp file if needed and set timestamp. */ if (sp->tpath == NULL) { - if (asprintf(&sp->tpath, "%s.tmp", sp->path) == -1) + if (asprintf(&sp->tpath, "%s.tmp", sp->dpath) == -1) sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); tfd = open(sp->tpath, O_WRONLY|O_CREAT|O_TRUNC, S_IRWXU|S_IRUSR); if (tfd < 0) sudo_fatal("%s", sp->tpath); - /* Copy sp->path -> sp->tpath and reset the mtime. */ + /* Copy sp->opath -> sp->tpath and reset the mtime. */ if (orig_size != 0) { char buf[4096], lastch = '\0'; ssize_t nread; @@ -569,19 +570,19 @@ */ if (stat(sp->tpath, &sb) == -1) { sudo_warnx(U_("unable to stat temporary file (%s), %s unchanged"), - sp->tpath, sp->path); + sp->tpath, sp->opath); goto done; } if (sb.st_size == 0 && orig_size != 0) { /* Avoid accidental zeroing of main sudoers file. */ if (sp == TAILQ_FIRST(&sudoerslist)) { sudo_warnx(U_("zero length temporary file (%s), %s unchanged"), - sp->tpath, sp->path); + sp->tpath, sp->opath); goto done; } } } else { - sudo_warnx(U_("editor (%s) failed, %s unchanged"), editor, sp->path); + sudo_warnx(U_("editor (%s) failed, %s unchanged"), editor, sp->opath); goto done; } @@ -649,12 +650,12 @@ fp = fopen(sp->tpath, "r+"); if (fp == NULL) sudo_fatalx(U_("unable to re-open temporary file (%s), %s unchanged."), - sp->tpath, sp->path); + sp->tpath, sp->opath); /* Clean slate for each parse */ if (!init_defaults()) sudo_fatalx("%s", U_("unable to initialize sudoers default values")); - init_parser(sp->path, quiet, true); + init_parser(sp->opath, &sudoers_conf); sp->errorline = -1; /* Parse the sudoers temp file(s) */ @@ -701,8 +702,8 @@ if ((sp = TAILQ_NEXT(last, entries)) != NULL) { bool modified = false; do { - printf(_("press return to edit %s: "), sp->path); - while ((ch = getchar()) != EOF && ch != '\n') + printf(_("press return to edit %s: "), sp->opath); + while ((ch = getchar()) != EOF && ch != '\r' && ch != '\n') continue; edit_sudoers(sp, editor, editor_argc, editor_argv, -1); if (sp->modified) @@ -745,19 +746,19 @@ (void) unlink(sp->tpath); if (fstat(sp->fd, &sb) == 0) { if (set_owner) { - if (sb.st_uid != sudoers_uid || sb.st_gid != sudoers_gid) { - if (chown(sp->path, sudoers_uid, sudoers_gid) != 0) { + if (sb.st_uid != sudoers_file_uid() || sb.st_gid != sudoers_file_gid()) { + if (chown(sp->opath, sudoers_file_uid(), sudoers_file_gid()) != 0) { sudo_warn(U_("unable to set (uid, gid) of %s to (%u, %u)"), - sp->path, (unsigned int)sudoers_uid, - (unsigned int)sudoers_gid); + sp->opath, (unsigned int)sudoers_file_uid(), + (unsigned int)sudoers_file_gid()); } } } if (set_mode) { - if ((sb.st_mode & ACCESSPERMS) != sudoers_mode) { - if (chmod(sp->path, sudoers_mode) != 0) { + if ((sb.st_mode & ACCESSPERMS) != sudoers_file_mode()) { + if (chmod(sp->opath, sudoers_file_mode()) != 0) { sudo_warn(U_("unable to change mode of %s to 0%o"), - sp->path, (unsigned int)sudoers_mode); + sp->opath, (unsigned int)sudoers_file_mode()); } } } @@ -767,19 +768,19 @@ } /* - * Change mode and ownership of temp file so when - * we move it to sp->path things are kosher. + * Change mode and ownership of temp file before moving it into place + * to avoid a race condition. */ if (!set_owner || !set_mode) { /* Preserve owner/perms of the existing file. */ if (fstat(sp->fd, &sb) == -1) - sudo_fatal(U_("unable to stat %s"), sp->path); + sudo_fatal(U_("unable to stat %s"), sp->opath); } if (set_owner) { - if (chown(sp->tpath, sudoers_uid, sudoers_gid) != 0) { + if (chown(sp->tpath, sudoers_file_uid(), sudoers_file_gid()) != 0) { sudo_warn(U_("unable to set (uid, gid) of %s to (%u, %u)"), - sp->tpath, (unsigned int)sudoers_uid, - (unsigned int)sudoers_gid); + sp->tpath, (unsigned int)sudoers_file_uid(), + (unsigned int)sudoers_file_gid()); goto done; } } else { @@ -789,9 +790,9 @@ } } if (set_mode) { - if (chmod(sp->tpath, sudoers_mode) != 0) { + if (chmod(sp->tpath, sudoers_file_mode()) != 0) { sudo_warn(U_("unable to change mode of %s to 0%o"), sp->tpath, - (unsigned int)sudoers_mode); + (unsigned int)sudoers_file_mode()); goto done; } } else { @@ -803,34 +804,35 @@ /* * Now that we know sp->tpath parses correctly, it needs to be - * rename(2)'d to sp->path. If the rename(2) fails we try using - * mv(1) in case sp->tpath and sp->path are on different file systems. + * rename(2)'d to sp->dpath. If the rename(2) fails we try using + * mv(1) in case sp->tpath and sp->dpath are on different file systems. */ - if (rename(sp->tpath, sp->path) == 0) { + if (rename(sp->tpath, sp->dpath) == 0) { free(sp->tpath); sp->tpath = NULL; } else { if (errno == EXDEV) { char *av[4]; sudo_warnx(U_("%s and %s not on the same file system, using mv to rename"), - sp->tpath, sp->path); + sp->tpath, sp->dpath); /* Build up argument vector for the command */ av[0] = sudo_basename(_PATH_MV); av[1] = sp->tpath; - av[2] = sp->path; + av[2] = sp->dpath; av[3] = NULL; /* And run it... */ if (run_command(_PATH_MV, av) != 0) { sudo_warnx(U_("command failed: '%s %s %s', %s unchanged"), - _PATH_MV, sp->tpath, sp->path, sp->path); + _PATH_MV, sp->tpath, sp->dpath, sp->opath); goto done; } free(sp->tpath); sp->tpath = NULL; } else { - sudo_warn(U_("error renaming %s, %s unchanged"), sp->tpath, sp->path); + sudo_warn(U_("error renaming %s, %s unchanged"), sp->tpath, + sp->opath); goto done; } } @@ -852,7 +854,7 @@ for (;;) { (void) fputs(_("What now? "), stdout); choice = getchar(); - for (c = choice; c != '\n' && c != EOF;) + for (c = choice; c != '\r' && c != '\n' && c != EOF;) c = getchar(); switch (choice) { @@ -937,23 +939,23 @@ if (stat(path, &sb) == 0) { if (check_owner) { - if (sb.st_uid != sudoers_uid || sb.st_gid != sudoers_gid) { + if (sb.st_uid != sudoers_file_uid() || sb.st_gid != sudoers_file_gid()) { ok = false; if (!quiet) { fprintf(stderr, _("%s: wrong owner (uid, gid) should be (%u, %u)\n"), - path, (unsigned int)sudoers_uid, - (unsigned int)sudoers_gid); + path, (unsigned int)sudoers_file_uid(), + (unsigned int)sudoers_file_gid()); } } } if (check_mode) { - if ((sb.st_mode & ALLPERMS) != sudoers_mode) { + if ((sb.st_mode & ALLPERMS) != sudoers_file_mode()) { ok = false; if (!quiet) { fprintf(stderr, _("%s: bad permissions, should be mode 0%o\n"), - path, (unsigned int)sudoers_mode); + path, (unsigned int)sudoers_file_mode()); } } } @@ -962,26 +964,32 @@ } static bool -check_syntax(const char *file, bool quiet, bool strict, bool check_owner, +check_syntax(const char *path, bool quiet, bool strict, bool check_owner, bool check_mode) { bool ok = false; - int oldlocale; + int fd, oldlocale; + char fname[PATH_MAX]; debug_decl(check_syntax, SUDOERS_DEBUG_UTIL); - if (strcmp(file, "-") == 0) { + if (strcmp(path, "-") == 0) { sudoersin = stdin; - file = "stdin"; - } else if ((sudoersin = fopen(file, "r")) == NULL) { - if (!quiet) - sudo_warn(U_("unable to open %s"), file); - goto done; + (void)strlcpy(fname, "stdin", sizeof(fname)); + } else { + fd = sudo_open_conf_path(path, fname, sizeof(fname), NULL); + if (fd == -1 || (sudoersin = fdopen(fd, "r")) == NULL) { + if (!quiet) + sudo_warn(U_("unable to open %s"), fname); + if (fd != -1) + close(fd); + goto done; + } } - init_parser(file, quiet, true); + init_parser(fname, &sudoers_conf); sudoers_setlocale(SUDOERS_LOCALE_SUDOERS, &oldlocale); if (sudoersparse() && !parse_error) { if (!quiet) - sudo_warnx(U_("failed to parse %s file, unknown error"), file); + sudo_warnx(U_("failed to parse %s file, unknown error"), fname); parse_error = true; } if (!parse_error) { @@ -996,16 +1004,16 @@ struct sudoersfile *sp; /* Parsed OK, check mode and owner. */ - if (check_file(file, quiet, check_owner, check_mode)) { + if (check_file(fname, quiet, check_owner, check_mode)) { if (!quiet) - (void) printf(_("%s: parsed OK\n"), file); + (void) printf(_("%s: parsed OK\n"), fname); } else { ok = false; } TAILQ_FOREACH(sp, &sudoerslist, entries) { - if (check_file(sp->path, quiet, check_owner, check_mode)) { + if (check_file(sp->opath, quiet, check_owner, check_mode)) { if (!quiet) - (void) printf(_("%s: parsed OK\n"), sp->path); + (void) printf(_("%s: parsed OK\n"), sp->opath); } else { ok = false; } @@ -1024,10 +1032,10 @@ if (!sudo_lock_file(entry->fd, SUDO_TLOCK)) { if (errno == EAGAIN || errno == EWOULDBLOCK) { - sudo_warnx(U_("%s busy, try again later"), entry->path); + sudo_warnx(U_("%s busy, try again later"), entry->opath); debug_return_bool(false); } - sudo_warn(U_("unable to lock %s"), entry->path); + sudo_warn(U_("unable to lock %s"), entry->opath); (void) fputs(_("Edit anyway? [y/N]"), stdout); ch = getchar(); if (tolower(ch) != 'y') @@ -1043,38 +1051,82 @@ static struct sudoersfile * new_sudoers(const char *path, bool doedit) { + const char *cp, *ep, *path_end; struct sudoersfile *entry; struct stat sb; - int open_flags; + size_t len; + int fd = -1; debug_decl(new_sudoersfile, SUDOERS_DEBUG_UTIL); - if (checkonly) - open_flags = O_RDONLY; - else - open_flags = O_RDWR | O_CREAT; - + /* We always write to the first file in the colon-separated path. */ + len = strcspn(path, ":"); entry = calloc(1, sizeof(*entry)); - if (entry == NULL || (entry->path = strdup(path)) == NULL) + if (entry == NULL || (entry->dpath = strndup(path, len)) == NULL) sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - /* entry->tpath = NULL; */ - /* entry->modified = false; */ - entry->doedit = doedit; - entry->fd = open(entry->path, open_flags, sudoers_mode); - if (entry->fd == -1 || fstat(entry->fd, &sb) == -1) { - sudo_warn("%s", entry->path); + + /* Open the first file found in the colon-separated path. */ + path_end = path + strlen(path); + for (cp = sudo_strsplit(path, path_end, ":", &ep); + cp != NULL; cp = sudo_strsplit(NULL, path_end, ":", &ep)) { + + char fname[PATH_MAX]; + len = ep - cp; + if (len >= sizeof(fname)) { + errno = ENAMETOOLONG; + break; + } + memcpy(fname, cp, len); + fname[len] = '\0'; + + /* Open in write mode for file locking. */ + fd = open(fname, checkonly ? O_RDONLY : O_RDWR); + if (fd != -1) { + /* Store the path we actually opened. */ + if ((entry->opath = strdup(fname)) == NULL) { + sudo_fatalx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); + } + break; + } + + /* If the file exists but we can't open it, that is a fatal error. */ + if (errno != ENOENT) { + sudo_warn("%s", fname); + goto bad; + } + } + if (fd == -1) { + if (!checkonly) { + /* No sudoers file, create the destination file for editing. */ + fd = open(entry->dpath, O_RDWR|O_CREAT, sudoers_file_mode()); + } + if (fd == -1) { + sudo_warn("%s", entry->dpath); + goto bad; + } + entry->opath = entry->dpath; + } + if (fstat(fd, &sb) == -1) { + sudo_warn("%s", entry->opath); goto bad; } if (!S_ISREG(sb.st_mode)) { - sudo_warnx(U_("%s is not a regular file"), entry->path); + sudo_warnx(U_("%s is not a regular file"), entry->opath); goto bad; } + entry->fd = fd; + /* entry->tpath = NULL; */ + /* entry->modified = false; */ + entry->doedit = doedit; if (!checkonly && !lock_sudoers(entry)) goto bad; debug_return_ptr(entry); bad: - if (entry->fd != -1) - close(entry->fd); - free(entry->path); + if (fd != -1) + close(fd); + if (entry->opath != entry->dpath) + free(entry->opath); + free(entry->dpath); free(entry); debug_return_ptr(NULL); } @@ -1084,27 +1136,30 @@ * any subsequent files #included via a callback from the parser. */ FILE * -open_sudoers(const char *path, bool doedit, bool *keepopen) +open_sudoers(const char *path, char **outfile, bool doedit, bool *keepopen) { struct sudoersfile *entry; + size_t len; FILE *fp; debug_decl(open_sudoers, SUDOERS_DEBUG_UTIL); - /* Check for existing entry */ + /* Check for existing entry using the first file in path. */ + len = strcspn(path, ":"); TAILQ_FOREACH(entry, &sudoerslist, entries) { - if (strcmp(path, entry->path) == 0) + if (strncmp(path, entry->dpath, len) == 0 && entry->dpath[len] == '\0') break; } if (entry == NULL) { if (doedit && !edit_includes) { /* Only edit the main sudoers file. */ - if (strcmp(path, sudoers_file) != 0) + if (strncmp(path, path_sudoers, len) != 0 || + (path_sudoers[len] != '\0' && path_sudoers[len] != ':')) doedit = false; } if ((entry = new_sudoers(path, doedit)) == NULL) debug_return_ptr(NULL); if ((fp = fdopen(entry->fd, "r")) == NULL) - sudo_fatal("%s", entry->path); + sudo_fatal("%s", entry->opath); TAILQ_INSERT_TAIL(&sudoerslist, entry, entries); } else { /* Already exists, open .tmp version if there is one. */ @@ -1113,15 +1168,47 @@ sudo_fatal("%s", entry->tpath); } else { if ((fp = fdopen(entry->fd, "r")) == NULL) - sudo_fatal("%s", entry->path); + sudo_fatal("%s", entry->opath); rewind(fp); } } if (keepopen != NULL) *keepopen = true; + if (outfile != NULL) { + *outfile = sudo_rcstr_dup(entry->opath); + if (*outfile == NULL) + sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + } debug_return_ptr(fp); } +/* + * Support "visudo -x" for backwards compatibility. + * To be removed in a future version of sudo. + */ +static void +export_sudoers(const char *infile, const char *outfile) +{ + char pathbuf[PATH_MAX]; + int fd; + debug_decl(export_sudoers, SUDOERS_DEBUG_UTIL); + + sudo_warnx("%s", + U_("the -x option will be removed in a future release")); + sudo_warnx("%s", + U_("please consider using the cvtsudoers utility instead")); + + /* Export the first sudoers file that exists in the path. */ + fd = sudo_open_conf_path(infile, pathbuf, sizeof(pathbuf), NULL); + if (fd != -1) { + close(fd); + infile = pathbuf; + } + execlp("cvtsudoers", "cvtsudoers", "-f", "json", "-o", outfile, + infile, (char *)0); + sudo_fatal(U_("unable to execute %s"), "cvtsudoers"); +} + /* Display unused aliases from check_aliases(). */ static int print_unused(struct sudoers_parse_tree *parse_tree, struct alias *a, void *v) @@ -1159,30 +1246,31 @@ for (cur = info->options; *cur != NULL; cur++) { const char *errstr, *p; id_t id; + mode_t mode; if (MATCHES(*cur, "sudoers_file=")) { - sudoers_file = *cur + sizeof("sudoers_file=") - 1; + path_sudoers = *cur + sizeof("sudoers_file=") - 1; continue; } if (MATCHES(*cur, "sudoers_uid=")) { p = *cur + sizeof("sudoers_uid=") - 1; id = sudo_strtoid(p, &errstr); if (errstr == NULL) - sudoers_uid = (uid_t) id; + sudoers_conf.sudoers_uid = (uid_t)id; continue; } if (MATCHES(*cur, "sudoers_gid=")) { p = *cur + sizeof("sudoers_gid=") - 1; id = sudo_strtoid(p, &errstr); if (errstr == NULL) - sudoers_gid = (gid_t) id; + sudoers_conf.sudoers_gid = (gid_t)id; continue; } if (MATCHES(*cur, "sudoers_mode=")) { p = *cur + sizeof("sudoers_mode=") - 1; - id = (id_t) sudo_strtomode(p, &errstr); + mode = sudo_strtomode(p, &errstr); if (errstr == NULL) - sudoers_mode = (mode_t) id; + sudoers_conf.sudoers_mode = mode; continue; } } diff -Nru sudo-1.9.13p3/plugins/system_group/Makefile.in sudo-1.9.14p2/plugins/system_group/Makefile.in --- sudo-1.9.13p3/plugins/system_group/Makefile.in 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/plugins/system_group/Makefile.in 2023-07-15 15:37:22.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2011-2018 Todd C. Miller +# Copyright (c) 2011-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -88,6 +88,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localstatedir = @localstatedir@ Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/po/cs.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/po/cs.mo differ diff -Nru sudo-1.9.13p3/po/cs.po sudo-1.9.14p2/po/cs.po --- sudo-1.9.13p3/po/cs.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/po/cs.po 2023-07-15 15:37:22.000000000 +0000 @@ -6,10 +6,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.13b2\n" +"Project-Id-Version: sudo 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-26 21:34+01:00\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-08 20:50+02:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" @@ -33,73 +33,76 @@ #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 #: lib/util/json.c:55 lib/util/json.c:197 lib/util/sudo_conf.c:215 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:80 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:205 src/exec_monitor.c:460 -#: src/exec_monitor.c:466 src/exec_monitor.c:474 src/exec_monitor.c:482 -#: src/exec_monitor.c:489 src/exec_monitor.c:496 src/exec_monitor.c:503 -#: src/exec_monitor.c:510 src/exec_monitor.c:517 src/exec_monitor.c:524 -#: src/exec_monitor.c:531 src/exec_nopty.c:231 src/exec_nopty.c:240 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:78 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:171 src/exec_monitor.c:418 +#: src/exec_monitor.c:424 src/exec_monitor.c:432 src/exec_monitor.c:440 +#: src/exec_monitor.c:447 src/exec_monitor.c:454 src/exec_monitor.c:461 +#: src/exec_monitor.c:468 src/exec_monitor.c:475 src/exec_monitor.c:482 +#: src/exec_monitor.c:489 src/exec_nopty.c:231 src/exec_nopty.c:240 #: 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:318 src/exec_nopty.c:326 -#: src/exec_nopty.c:736 src/exec_preload.c:343 src/exec_ptrace.c:475 -#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1095 -#: src/exec_ptrace.c:1270 src/exec_ptrace.c:1612 src/exec_ptrace.c:1639 -#: src/exec_pty.c:511 src/exec_pty.c:692 src/exec_pty.c:882 src/exec_pty.c:891 -#: src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 src/exec_pty.c:919 -#: src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 src/exec_pty.c:947 -#: src/exec_pty.c:954 src/exec_pty.c:962 src/load_plugins.c:98 -#: src/load_plugins.c:123 src/load_plugins.c:159 src/load_plugins.c:392 -#: src/load_plugins.c:398 src/parse_args.c:172 src/parse_args.c:193 -#: src/parse_args.c:267 src/parse_args.c:623 src/parse_args.c:645 -#: src/parse_args.c:670 src/preserve_fds.c:46 src/preserve_fds.c:131 -#: src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 src/selinux.c:489 -#: src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 src/sesh.c:246 -#: src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:641 src/sudo.c:706 -#: src/sudo.c:716 src/sudo.c:743 src/sudo.c:766 src/sudo.c:775 src/sudo.c:784 -#: src/sudo.c:801 src/sudo.c:842 src/sudo.c:851 src/sudo.c:861 src/sudo.c:894 -#: src/sudo.c:1122 src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 -#: src/sudo.c:1832 src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 -#: src/sudo_edit.c:429 src/sudo_edit.c:438 src/sudo_edit.c:538 -#: src/sudo_edit.c:545 src/sudo_edit.c:688 src/sudo_edit.c:708 -#: src/sudo_intercept_common.c:115 src/sudo_intercept_common.c:340 +#: src/exec_nopty.c:744 src/exec_preload.c:343 src/exec_ptrace.c:475 +#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1096 +#: src/exec_ptrace.c:1271 src/exec_ptrace.c:1624 src/exec_ptrace.c:1651 +#: src/exec_ptrace.c:1841 src/exec_pty.c:581 src/exec_pty.c:765 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:193 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 +#: src/sesh.c:246 src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:644 +#: src/sudo.c:709 src/sudo.c:719 src/sudo.c:746 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:787 src/sudo.c:805 src/sudo.c:846 src/sudo.c:855 src/sudo.c:865 +#: src/sudo.c:898 src/sudo.c:1127 src/sudo.c:1148 src/sudo.c:1441 +#: src/sudo.c:1610 src/sudo.c:1837 src/sudo.c:2171 src/sudo_edit.c:89 +#: src/sudo_edit.c:149 src/sudo_edit.c:430 src/sudo_edit.c:439 +#: src/sudo_edit.c:540 src/sudo_edit.c:547 src/sudo_edit.c:692 +#: src/sudo_edit.c:712 src/sudo_intercept_common.c:115 +#: src/sudo_intercept_common.c:340 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:56 #: lib/util/json.c:198 lib/util/regex.c:173 lib/util/sudo_conf.c:216 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:81 src/exec_intercept.c:111 src/exec_intercept.c:344 -#: src/exec_intercept.c:518 src/exec_intercept.c:582 src/exec_intercept.c:706 -#: src/exec_intercept.c:830 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:460 src/exec_monitor.c:466 -#: src/exec_monitor.c:474 src/exec_monitor.c:482 src/exec_monitor.c:489 -#: src/exec_monitor.c:496 src/exec_monitor.c:503 src/exec_monitor.c:510 -#: src/exec_monitor.c:517 src/exec_monitor.c:524 src/exec_monitor.c:531 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:79 src/exec_intercept.c:111 src/exec_intercept.c:350 +#: src/exec_intercept.c:525 src/exec_intercept.c:589 src/exec_intercept.c:713 +#: src/exec_intercept.c:837 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:418 src/exec_monitor.c:424 +#: src/exec_monitor.c:432 src/exec_monitor.c:440 src/exec_monitor.c:447 +#: src/exec_monitor.c:454 src/exec_monitor.c:461 src/exec_monitor.c:468 +#: src/exec_monitor.c:475 src/exec_monitor.c:482 src/exec_monitor.c:489 #: src/exec_nopty.c:231 src/exec_nopty.c:240 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:318 src/exec_nopty.c:326 src/exec_preload.c:343 #: src/exec_ptrace.c:475 src/exec_ptrace.c:768 src/exec_ptrace.c:983 -#: src/exec_ptrace.c:1639 src/exec_pty.c:511 src/exec_pty.c:882 -#: src/exec_pty.c:891 src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 -#: src/exec_pty.c:919 src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 -#: src/exec_pty.c:947 src/exec_pty.c:954 src/exec_pty.c:962 -#: src/load_plugins.c:98 src/load_plugins.c:123 src/load_plugins.c:159 -#: src/load_plugins.c:392 src/load_plugins.c:398 src/parse_args.c:172 -#: src/parse_args.c:194 src/parse_args.c:267 src/parse_args.c:623 -#: src/parse_args.c:645 src/parse_args.c:670 src/preserve_fds.c:46 +#: src/exec_ptrace.c:1651 src/exec_ptrace.c:1842 src/exec_pty.c:581 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:194 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 #: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 #: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:471 -#: src/sudo.c:230 src/sudo.c:641 src/sudo.c:894 src/sudo.c:1122 -#: src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 src/sudo.c:1832 -#: src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 -#: src/sudo_edit.c:438 src/sudo_edit.c:538 src/sudo_edit.c:545 -#: src/sudo_edit.c:688 src/sudo_edit.c:708 src/sudo_intercept_common.c:115 +#: src/sudo.c:228 src/sudo.c:644 src/sudo.c:898 src/sudo.c:1127 +#: src/sudo.c:1148 src/sudo.c:1441 src/sudo.c:1610 src/sudo.c:1837 +#: src/sudo.c:2171 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:430 +#: src/sudo_edit.c:439 src/sudo_edit.c:540 src/sudo_edit.c:547 +#: src/sudo_edit.c:692 src/sudo_edit.c:712 src/sudo_intercept_common.c:115 #: src/sudo_intercept_common.c:340 msgid "unable to allocate memory" msgstr "nelze alokovat paměť" @@ -114,9 +117,9 @@ msgid "%.*s exists but is not a directory (0%o)" msgstr "%.*s existuje, ale nejedná se o adresář (0%o)" -#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:666 -#: lib/util/sudo_conf.c:696 lib/util/sudo_conf.c:703 src/selinux.c:235 -#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:494 src/sudo_edit.c:557 +#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:664 +#: lib/util/sudo_conf.c:683 lib/util/sudo_conf.c:710 src/selinux.c:235 +#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:495 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "%s nelze otevřít" @@ -173,22 +176,22 @@ msgid "invalid max groups \"%s\" in %s, line %u" msgstr "neplatné maximum skupin „%s“ v %s, řádek %u" -#: lib/util/sudo_conf.c:669 +#: lib/util/sudo_conf.c:686 #, c-format msgid "%s is not a regular file" msgstr "%s není obyčejný soubor" -#: lib/util/sudo_conf.c:672 src/copy_file.c:164 +#: lib/util/sudo_conf.c:689 src/copy_file.c:164 #, 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:676 +#: lib/util/sudo_conf.c:693 #, c-format msgid "%s is world writable" msgstr "%s je zapisovatelný pro všechny" -#: lib/util/sudo_conf.c:679 +#: lib/util/sudo_conf.c:696 #, c-format msgid "%s is group writable" msgstr "%s je zapisovatelný pro skupinu" @@ -237,7 +240,7 @@ msgid "%s: bad file mode: 0%o" msgstr "%s: chybná práva souboru: 0%o" -#: src/edit_open.c:331 +#: src/edit_open.c:333 msgid "unable to restore current working directory" msgstr "současný pracovní adresář nelze obnovit" @@ -284,18 +287,18 @@ msgid "starting from %s" msgstr "začíná se od %s" -#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:569 src/exec_monitor.c:571 -#: src/exec_pty.c:225 src/exec_pty.c:1026 src/exec_pty.c:1028 src/signal.c:144 -#: src/signal.c:151 src/signal.c:165 src/suspend_nopty.c:93 +#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:552 src/exec_monitor.c:554 +#: src/exec_pty.c:1122 src/exec_pty.c:1124 src/signal.c:144 src/signal.c:151 +#: src/signal.c:165 src/suspend_parent.c:143 #, c-format msgid "unable to set handler for signal %d" msgstr "obsluhu pro signál %d nelze nastavit" -#: src/exec.c:422 +#: src/exec.c:424 msgid "intercept mode is not supported with SELinux RBAC on this system" msgstr "režim zachytávání není na tomto systému se selinuxovým RBAC podporován" -#: src/exec.c:427 +#: src/exec.c:429 msgid "unable to log sub-commands with SELinux RBAC on this system" msgstr "na tomto systému se selinuxovým RBAC nelze zaznamenávat podpříkazy" @@ -303,239 +306,258 @@ msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "z PRIV_LIMIT nelze odstranit PRIV_PROC_EXEC" -#: src/exec_intercept.c:70 src/exec_iolog.c:165 src/exec_iolog.c:175 -#: src/exec_iolog.c:220 src/exec_iolog.c:227 src/exec_iolog.c:254 -#: src/exec_monitor.c:468 src/exec_monitor.c:476 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_monitor.c:533 src/exec_nopty.c:233 src/exec_nopty.c:242 +#: src/exec_intercept.c:70 src/exec_iolog.c:163 src/exec_iolog.c:173 +#: src/exec_iolog.c:218 src/exec_iolog.c:225 src/exec_iolog.c:252 +#: src/exec_monitor.c:426 src/exec_monitor.c:434 src/exec_monitor.c:442 +#: src/exec_monitor.c:449 src/exec_monitor.c:456 src/exec_monitor.c:463 +#: src/exec_monitor.c:470 src/exec_monitor.c:477 src/exec_monitor.c:484 +#: src/exec_monitor.c:491 src/exec_nopty.c:233 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:305 #: src/exec_nopty.c:312 src/exec_nopty.c:320 src/exec_nopty.c:328 -#: src/exec_nopty.c:387 src/exec_nopty.c:453 src/exec_pty.c:360 -#: src/exec_pty.c:462 src/exec_pty.c:517 src/exec_pty.c:884 src/exec_pty.c:893 -#: src/exec_pty.c:900 src/exec_pty.c:907 src/exec_pty.c:914 src/exec_pty.c:921 -#: src/exec_pty.c:928 src/exec_pty.c:935 src/exec_pty.c:942 src/exec_pty.c:949 -#: src/exec_pty.c:956 +#: src/exec_nopty.c:387 src/exec_nopty.c:457 src/exec_pty.c:432 +#: src/exec_pty.c:537 src/exec_pty.c:587 src/exec_pty.c:965 src/exec_pty.c:974 +#: src/exec_pty.c:981 src/exec_pty.c:988 src/exec_pty.c:995 +#: src/exec_pty.c:1002 src/exec_pty.c:1009 src/exec_pty.c:1016 +#: src/exec_pty.c:1023 src/exec_pty.c:1030 src/exec_pty.c:1037 +#: src/exec_pty.c:1044 msgid "unable to add event to queue" msgstr "událost nelze přidat do fronty" -#: src/exec_intercept.c:317 src/sudo.c:1028 +#: src/exec_intercept.c:323 src/sudo.c:1033 msgid "command not set by the security policy" msgstr "příkaz nenastaven bezpečnostní politikou" -#: src/exec_intercept.c:395 src/exec_intercept.c:435 src/sudo.c:1248 -#: src/sudo.c:1293 src/sudo.c:1337 +#: src/exec_intercept.c:401 src/exec_intercept.c:441 src/sudo.c:1253 +#: src/sudo.c:1298 src/sudo.c:1342 msgid "command rejected by policy" msgstr "příkaz zamítnut politikou" -#: src/exec_intercept.c:505 src/sudo.c:1935 +#: src/exec_intercept.c:512 src/sudo.c:1940 msgid "approval plugin error" msgstr "chyba schvalovacího modulu" -#: src/exec_intercept.c:530 src/sudo.c:1253 src/sudo.c:1298 src/sudo.c:1342 -#: src/sudo.c:1416 +#: src/exec_intercept.c:537 src/sudo.c:1258 src/sudo.c:1303 src/sudo.c:1347 +#: src/sudo.c:1421 msgid "policy plugin error" msgstr "chyba modulu s politikou" -#: src/exec_intercept.c:559 +#: src/exec_intercept.c:566 msgid "invalid PolicyCheckRequest" msgstr "neplatný požadavek PolicyCheckRequest" -#: src/exec_intercept.c:702 +#: src/exec_intercept.c:709 #, c-format msgid "client request too large: %zu" msgstr "požadavek od klienta je příliš dlouhý: %zu" -#: src/exec_intercept.c:744 +#: src/exec_intercept.c:751 #, c-format msgid "unable to unpack %s size %zu" msgstr "nelze rozbalit %s o velikosti %zu" -#: src/exec_intercept.c:792 +#: src/exec_intercept.c:799 #, 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:818 +#: src/exec_intercept.c:825 #, c-format msgid "server message too large: %zu" msgstr "zpráva serveru je příliš dlouhá: %zu" -#: src/exec_iolog.c:323 src/exec_iolog.c:363 src/exec_iolog.c:403 -#: src/exec_iolog.c:454 src/exec_iolog.c:505 +#: src/exec_iolog.c:321 src/exec_iolog.c:361 src/exec_iolog.c:401 +#: src/exec_iolog.c:452 src/exec_iolog.c:503 msgid "I/O plugin error" msgstr "chyba vstupně-výstupního modulu" -#: src/exec_iolog.c:327 src/exec_iolog.c:367 src/exec_iolog.c:407 -#: src/exec_iolog.c:458 src/exec_iolog.c:509 +#: src/exec_iolog.c:325 src/exec_iolog.c:365 src/exec_iolog.c:405 +#: src/exec_iolog.c:456 src/exec_iolog.c:507 msgid "command rejected by I/O plugin" msgstr "příkaz zamítnut vstupně-výstupním modulem" -#: src/exec_iolog.c:556 +#: src/exec_iolog.c:555 msgid "error logging suspend" msgstr "chyba pozastavování protokolu" -#: src/exec_iolog.c:591 +#: src/exec_iolog.c:590 msgid "error changing window size" msgstr "chyba při měnění velikosti okna" -#: src/exec_monitor.c:362 +#: src/exec_monitor.c:328 msgid "error reading from socketpair" msgstr "chyba při čtení z dvojice socketů" -#: src/exec_monitor.c:379 +#: src/exec_monitor.c:340 #, c-format 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:587 +#: src/exec_monitor.c:566 msgid "unable to set controlling tty" msgstr "řídicí terminál nelze nastavit" -#: src/exec_monitor.c:595 src/exec_nopty.c:498 src/exec_nopty.c:508 -#: src/exec_nopty.c:518 src/exec_nopty.c:552 src/exec_pty.c:1097 -#: src/exec_pty.c:1118 src/exec_pty.c:1138 src/tgetpass.c:305 +#: src/exec_monitor.c:574 src/exec_nopty.c:504 src/exec_nopty.c:514 +#: src/exec_nopty.c:524 src/exec_nopty.c:560 src/exec_pty.c:1195 +#: src/exec_pty.c:1222 src/exec_pty.c:1242 src/exec_pty.c:1262 +#: src/tgetpass.c:306 msgid "unable to create pipe" msgstr "nelze vytvořit rouru" -#: src/exec_monitor.c:605 +#: src/exec_monitor.c:584 msgid "unable to receive message from parent" msgstr "od rodiče nelze přijmout zprávu" -#: src/exec_monitor.c:621 src/exec_nopty.c:595 src/exec_pty.c:1176 -#: src/sudo_edit.c:361 src/tgetpass.c:309 +#: src/exec_monitor.c:600 src/exec_nopty.c:603 src/exec_pty.c:1303 +#: src/sudo_edit.c:361 src/tgetpass.c:310 msgid "unable to fork" msgstr "nelze vytvořit potomka" -#: src/exec_monitor.c:625 src/exec_monitor.c:723 src/exec_nopty.c:700 +#: src/exec_monitor.c:604 src/exec_monitor.c:700 src/exec_nopty.c:708 msgid "unable to restore tty label" msgstr "nelze obnovit značku TTY" -#: src/exec_monitor.c:638 src/sesh.c:217 src/sudo.c:1199 +#: src/exec_monitor.c:615 src/sesh.c:217 src/sudo.c:1204 #, c-format msgid "unable to execute %s" msgstr "%s nelze spustit" -#: src/exec_nopty.c:546 src/exec_pty.c:1035 +#: src/exec_nopty.c:554 src/exec_pty.c:1131 msgid "policy plugin failed session initialization" msgstr "modul s politikami zrušil inicializaci relace" -#: src/exec_nopty.c:561 src/exec_pty.c:1004 src/exec_pty.c:1013 +#: src/exec_nopty.c:569 src/exec_pty.c:1100 src/exec_pty.c:1109 msgid "unable to create sockets" msgstr "nelze vytvořit sockety" -#: src/exec_nopty.c:688 src/exec_pty.c:1274 +#: src/exec_nopty.c:696 src/exec_pty.c:1406 msgid "error in event loop" msgstr "chyba ve smyčce s událostmi" #: src/exec_preload.c:167 src/net_ifs.c:206 src/net_ifs.c:372 -#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:851 src/sudo.c:488 +#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:852 src/sudo.c:488 #: 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/exec_ptrace.c:1079 src/exec_ptrace.c:1104 src/exec_ptrace.c:1900 +#: src/exec_ptrace.c:1080 src/exec_ptrace.c:1105 src/exec_ptrace.c:1925 #, c-format msgid "unable to set registers for process %d" msgstr "nelze nastavit registry pro proces %d" -#: src/exec_ptrace.c:1099 src/exec_ptrace.c:1274 src/exec_ptrace.c:1616 +#: src/exec_ptrace.c:1100 src/exec_ptrace.c:1275 src/exec_ptrace.c:1628 #, c-format msgid "process %d exited unexpectedly" msgstr "proces %d nečekaně skončil" -#: src/exec_ptrace.c:1208 +#: src/exec_ptrace.c:1209 msgid "unable to set seccomp filter" msgstr "nelze nastavit filtr seccomp" -#: src/exec_ptrace.c:1405 +#: src/exec_ptrace.c:1406 #, c-format msgid "interpreter argument , expected \"%s\", got \"%s\"" msgstr "argument interpretru, očekáváno „%s“, obdrženo „%s“" -#: src/exec_ptrace.c:1504 +#: src/exec_ptrace.c:1505 #, c-format msgid "pathname mismatch, expected \"%s\", got \"%s\"" msgstr "cesta neodpovídá, očekáváno „%s“, obdrženo „%s“" -#: src/exec_ptrace.c:1513 src/exec_ptrace.c:1520 src/exec_ptrace.c:1533 -#: src/exec_ptrace.c:1541 src/exec_ptrace.c:1547 src/exec_ptrace.c:1553 +#: src/exec_ptrace.c:1514 src/exec_ptrace.c:1521 src/exec_ptrace.c:1545 +#: src/exec_ptrace.c:1553 src/exec_ptrace.c:1559 src/exec_ptrace.c:1565 #, c-format msgid "%s[%d] mismatch, expected \"%s\", got \"%s\"" msgstr "%s[%d] neodpovídá, očekáváno „%s“, obdrženo „%s“" -#: src/exec_ptrace.c:1620 +#: src/exec_ptrace.c:1632 #, c-format msgid "process %d unexpected status 0x%x" msgstr "proces %d má nečekaný stav 0x%x" -#: src/exec_ptrace.c:1711 +#: src/exec_ptrace.c:1723 #, c-format msgid "unable to get event message for process %d" msgstr "nelze získat zprávu o události v procesu %d" -#: src/exec_ptrace.c:1718 +#: src/exec_ptrace.c:1730 #, c-format msgid "unable to get registers for process %d" msgstr "nelze získat registry procesu %d" -#: src/exec_pty.c:103 +#: src/exec_pty.c:84 msgid "unable to allocate pty" msgstr "nelze alokovat PTY" -#: src/exec_pty.c:268 src/signal.c:101 src/suspend_nopty.c:99 +#: src/exec_pty.c:131 src/exec_pty.c:284 src/tgetpass.c:251 +msgid "unable to restore terminal settings" +msgstr "nastavení terminálu nelze obnovit" + +#: src/exec_pty.c:243 +msgid "unable to set handler for SIGCONT" +msgstr "obsluhu pro signál SIGCONT nelze nastavit" + +#: src/exec_pty.c:293 #, c-format -msgid "unable to restore handler for signal %d" -msgstr "nelze obnovit obsluhu signálu %d" +msgid "unable to set handler for SIG%s" +msgstr "obsluhu pro signál SIG%s nelze nastavit" + +#: src/exec_pty.c:317 +#, c-format +msgid "unable to restore handler for SIG%s" +msgstr "nelze obnovit obsluhu signálu SIG%s" -#: src/exec_pty.c:1222 +#: src/exec_pty.c:345 +msgid "unable to restore handler for SIGCONT" +msgstr "nelze obnovit obsluhu signálu SIGCONT" + +#: src/exec_pty.c:1353 msgid "unable to send message to monitor process" msgstr "dohlížejícímu procesu nelze odeslat zprávu" -#: src/load_plugins.c:73 src/load_plugins.c:220 src/load_plugins.c:230 -#: src/load_plugins.c:240 src/load_plugins.c:287 +#: src/load_plugins.c:75 src/load_plugins.c:222 src/load_plugins.c:232 +#: src/load_plugins.c:242 src/load_plugins.c:289 #, 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:184 src/load_plugins.c:255 +#: src/load_plugins.c:186 src/load_plugins.c:257 #, 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:222 +#: src/load_plugins.c:224 #, c-format msgid "unable to load %s: %s" msgstr "%s nelze zavést: %s" -#: src/load_plugins.c:232 +#: src/load_plugins.c:234 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "v %s nelze nalézt symbol „%s“" -#: src/load_plugins.c:242 +#: src/load_plugins.c:244 #, 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:260 +#: src/load_plugins.c:262 #, 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:263 +#: src/load_plugins.c:265 msgid "only a single policy plugin may be specified" msgstr "lze zadat pouze jeden modul s politikou" -#: src/load_plugins.c:289 +#: src/load_plugins.c:291 #, 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:472 +#: src/load_plugins.c:474 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "modul s politikou %s neobsahuje metodu check_policy" @@ -545,47 +567,47 @@ msgid "invalid environment variable name: %s" msgstr "neplatný název proměnné prostředí: %s" -#: src/parse_args.c:317 +#: src/parse_args.c:319 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:554 +#: src/parse_args.c:556 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:559 +#: src/parse_args.c:561 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:569 +#: src/parse_args.c:571 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:572 +#: src/parse_args.c:574 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:582 +#: src/parse_args.c:584 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:586 +#: src/parse_args.c:588 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:684 +#: src/parse_args.c:686 msgid "sudoedit is not supported on this platform" msgstr "na této platformě není sudoedit podporován" -#: src/parse_args.c:767 +#: src/parse_args.c:744 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:780 +#: src/parse_args.c:757 msgid "Only one of the -K, -k or -N options may be specified" msgstr "Smí být zadán pouze jeden z přepínačů -K, -k nebo -N" -#: src/parse_args.c:796 +#: src/parse_args.c:778 #, c-format msgid "" "%s - edit files as another user\n" @@ -594,7 +616,7 @@ "%s – upraví soubory jako jiný uživatel\n" "\n" -#: src/parse_args.c:798 +#: src/parse_args.c:780 #, c-format msgid "" "%s - execute a command as another user\n" @@ -603,7 +625,7 @@ "%s – vykoná příkaz jako jiný uživatel\n" "\n" -#: src/parse_args.c:804 +#: src/parse_args.c:785 msgid "" "\n" "Options:\n" @@ -611,131 +633,131 @@ "\n" "Přepínače:\n" -#: src/parse_args.c:806 +#: src/parse_args.c:787 msgid "use a helper program for password prompting" msgstr "dotazuje se na heslo prostřednictvím pomocného programu" -#: src/parse_args.c:809 +#: src/parse_args.c:790 msgid "use specified BSD authentication type" msgstr "použije zadaný druh BSD autentizace" -#: src/parse_args.c:813 +#: src/parse_args.c:794 msgid "run command in the background" msgstr "spustí příkaz na pozadí" -#: src/parse_args.c:816 +#: src/parse_args.c:797 msgid "ring bell when prompting" msgstr "při výzvě vydá zvukové znamení" -#: src/parse_args.c:818 +#: src/parse_args.c:799 msgid "close all file descriptors >= num" msgstr "uzavře všechny deskriptory souboru >= číslu" -#: src/parse_args.c:821 +#: src/parse_args.c:802 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:824 +#: src/parse_args.c:805 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:827 +#: src/parse_args.c:808 msgid "preserve user environment when running command" msgstr "při spuštění příkazu zachová uživatelské prostředí" -#: src/parse_args.c:829 +#: src/parse_args.c:810 msgid "preserve specific environment variables" msgstr "zachová určité proměnné prostředí" -#: src/parse_args.c:831 +#: src/parse_args.c:812 msgid "edit files instead of running a command" msgstr "místo spuštění příkazu upraví soubory" -#: src/parse_args.c:834 +#: src/parse_args.c:815 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:837 +#: src/parse_args.c:818 msgid "set HOME variable to target user's home dir" msgstr "nastaví proměnnou HOME na domovský adresář uživatele" -#: src/parse_args.c:840 +#: src/parse_args.c:821 msgid "display help message and exit" msgstr "zobrazí nápovědu a skončí" -#: src/parse_args.c:842 +#: src/parse_args.c:823 msgid "run command on host (if supported by plugin)" msgstr "spustí příkaz na stroji (je-li podporováno modulem)" -#: src/parse_args.c:845 +#: src/parse_args.c:826 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:847 +#: src/parse_args.c:828 msgid "remove timestamp file completely" msgstr "úplně odstraní soubor s časovými údaji" -#: src/parse_args.c:850 +#: src/parse_args.c:831 msgid "invalidate timestamp file" msgstr "zneplatní soubor s časovými údaji" -#: src/parse_args.c:853 +#: src/parse_args.c:834 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:856 +#: src/parse_args.c:837 msgid "non-interactive mode, no prompts are used" msgstr "neinteraktivní režim, nepoužijí se žádné dotazy" -#: src/parse_args.c:859 +#: src/parse_args.c:840 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:862 +#: src/parse_args.c:843 msgid "use the specified password prompt" msgstr "použije určený dotaz na heslo" -#: src/parse_args.c:864 +#: src/parse_args.c:845 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:867 +#: src/parse_args.c:848 msgid "create SELinux security context with specified role" msgstr "vytvoří selinuxový bezpečnostní kontext se zadanou rolí" -#: src/parse_args.c:870 +#: src/parse_args.c:851 msgid "read password from standard input" msgstr "načte heslo ze standardní vstupu" -#: src/parse_args.c:873 +#: src/parse_args.c:854 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:877 +#: src/parse_args.c:858 msgid "create SELinux security context with specified type" msgstr "vytvoří selinuxový bezpečnostní kontext se zadaným typem" -#: src/parse_args.c:880 +#: src/parse_args.c:861 msgid "terminate command after the specified time limit" msgstr "po uplynutí zadaného času ukončí příkaz" -#: src/parse_args.c:883 +#: src/parse_args.c:864 msgid "in list mode, display privileges for user" msgstr "v režimu výpisu zobrazí oprávnění uživatele" -#: src/parse_args.c:886 +#: src/parse_args.c:867 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:888 +#: src/parse_args.c:869 msgid "display version information and exit" msgstr "zobrazí údaje o verzi a skončí" -#: src/parse_args.c:891 +#: src/parse_args.c:872 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:894 +#: src/parse_args.c:875 msgid "stop processing command line arguments" msgstr "přestane zpracovávat argumenty příkazového řádku" @@ -879,6 +901,11 @@ msgid "unable to save handler for signal %d" msgstr "obsluhu signálu %d nelze uložit" +#: src/signal.c:101 src/suspend_parent.c:149 +#, c-format +msgid "unable to restore handler for signal %d" +msgstr "nelze obnovit obsluhu signálu %d" + #: src/solaris.c:72 msgid "resource control limit has been reached" msgstr "omezení z řízení zdrojů bylo dosaženo" @@ -922,21 +949,21 @@ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "pozor, nepodařilo se přiřadit řízení zdrojů projektu „%s“" -#: src/sudo.c:216 +#: src/sudo.c:214 #, c-format msgid "Sudo version %s\n" msgstr "Sudo verze %s\n" -#: src/sudo.c:218 +#: src/sudo.c:216 #, c-format msgid "Configure options: %s\n" msgstr "Přepínače configure: %s\n" -#: src/sudo.c:226 +#: src/sudo.c:224 msgid "fatal error, unable to load plugins" msgstr "nepřekonatelná chyba, moduly nelze zavést" -#: src/sudo.c:272 +#: src/sudo.c:270 msgid "plugin did not return a command to execute" msgstr "modul nevrátil příkaz k provedení" @@ -945,128 +972,128 @@ msgid "unexpected sudo mode 0x%x" msgstr "neočekávaný režim programu sudo 0x%x" -#: src/sudo.c:555 +#: src/sudo.c:559 #, c-format msgid "you do not exist in the %s database" msgstr "neexistujete v databázi %s" -#: src/sudo.c:612 +#: src/sudo.c:616 msgid "unable to determine tty" msgstr "nelze určit terminál" -#: src/sudo.c:928 +#: src/sudo.c:932 msgid "The \"no new privileges\" flag is set, which prevents sudo from running as root." msgstr "Je nastaven příznak „žádná další oprávnění“, což brání sudu, aby běželo jako root" -#: src/sudo.c:930 +#: src/sudo.c:934 msgid "If sudo is running in a container, you may need to adjust the container configuration to disable the flag." msgstr "Běží-li sudo v kontejneru, můžete potřebovat upravit nastavení kontejneru, aby se tento příznak vypnul." -#: src/sudo.c:964 +#: src/sudo.c:968 #, 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:967 +#: src/sudo.c:971 #, 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:973 +#: src/sudo.c:977 #, 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:989 src/tgetpass.c:331 +#: src/sudo.c:993 src/tgetpass.c:332 msgid "unable to set supplementary group IDs" msgstr "nelze nastavit ID doplňkových skupin" -#: src/sudo.c:996 +#: src/sudo.c:1000 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "efektivní GID nelze nastavit na %u" -#: src/sudo.c:1002 +#: src/sudo.c:1006 #, c-format msgid "unable to set gid to runas gid %u" msgstr "GID nelze nastavit na %u" -#: src/sudo.c:1032 +#: src/sudo.c:1037 msgid "argv not set by the security policy" msgstr "pole argumentů nenastaveno bezpečnostní politikou" -#: src/sudo.c:1036 +#: src/sudo.c:1041 msgid "envp not set by the security policy" msgstr "pole proměnných prostředí nenastaveno bezpečnostní politikou" -#: src/sudo.c:1058 +#: src/sudo.c:1063 #, c-format msgid "unexpected child termination condition: %d" msgstr "neočekávaný důvod ukončení potomka: %d" -#: src/sudo.c:1171 +#: src/sudo.c:1176 msgid "unable to initialize policy plugin" msgstr "modul s politikami nelze inicializovat" -#: src/sudo.c:1233 +#: src/sudo.c:1238 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "modulu s politikami %s chybí metoda „check_policy“" -#: src/sudo.c:1279 +#: src/sudo.c:1284 #, 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:1323 +#: src/sudo.c:1328 #, 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:1361 +#: src/sudo.c:1366 #, 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:1490 +#: src/sudo.c:1495 #, c-format msgid "error initializing I/O plugin %s" msgstr "chyba při inicializaci vstupně-výstupního modulu %s" -#: src/sudo.c:1493 +#: src/sudo.c:1498 msgid "error initializing I/O plugin" msgstr "chyba při inicializaci vstupně-výstupního modulu" -#: src/sudo.c:1642 +#: src/sudo.c:1647 #, c-format msgid "error initializing audit plugin %s" msgstr "chyba při inicializaci auditního modulu %s" -#: src/sudo.c:1721 +#: src/sudo.c:1726 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s nelze zaznamenat chybovou událost%s%s" -#: src/sudo.c:1757 +#: src/sudo.c:1762 #, 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:1762 src/sudo.c:1800 +#: src/sudo.c:1767 src/sudo.c:1805 msgid "audit plugin error" msgstr "chyba auditního modulu" -#: src/sudo.c:1795 +#: src/sudo.c:1800 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s nelze zaznamenat zamítací událost%s%s " -#: src/sudo.c:1855 +#: src/sudo.c:1860 #, c-format msgid "error initializing approval plugin %s" msgstr "chyba při inicializaci schvalovacího modulu %s" -#: src/sudo.c:1925 +#: src/sudo.c:1930 msgid "command rejected by approver" msgstr "příkaz zamítnut schvalovatelem" @@ -1074,55 +1101,55 @@ msgid "no writable temporary directory found" msgstr "nenalezen žádný dočasný adresář, do kterého lze zapisovat" -#: src/sudo_edit.c:291 +#: src/sudo_edit.c:292 #, c-format msgid "%s left unmodified" msgstr "%s ponechán nezměněn" -#: src/sudo_edit.c:304 src/sudo_edit.c:569 +#: src/sudo_edit.c:305 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s nezměněn" -#: src/sudo_edit.c:481 +#: src/sudo_edit.c:482 msgid "sesh: internal error: odd number of paths" msgstr "sesh: vnitřní chyba: lichý počet cest" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:484 msgid "sesh: unable to create temporary files" msgstr "sesh: nelze vytvořit dočasné soubory" -#: src/sudo_edit.c:485 src/sudo_edit.c:604 +#: src/sudo_edit.c:486 src/sudo_edit.c:606 msgid "sesh: killed by a signal" msgstr "sesh: zabit signálem" -#: src/sudo_edit.c:487 src/sudo_edit.c:607 +#: src/sudo_edit.c:488 src/sudo_edit.c:609 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: neznámá chyba %d" -#: src/sudo_edit.c:597 +#: src/sudo_edit.c:599 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:601 +#: src/sudo_edit.c:603 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:646 +#: src/sudo_edit.c:650 #, c-format msgid "unable to change uid to root (%u)" msgstr "UID nelze změnit na roota (%u)" -#: src/sudo_edit.c:660 +#: src/sudo_edit.c:664 msgid "plugin error: invalid file list for sudoedit" msgstr "chyba modulu: neplatný seznam souborů pro program sudoedit" -#: src/sudo_edit.c:681 +#: src/sudo_edit.c:685 msgid "plugin error: missing file list for sudoedit" msgstr "chyba modulu: chybí seznam souborů pro program sudoedit" -#: src/sudo_edit.c:724 src/sudo_edit.c:739 +#: src/sudo_edit.c:728 src/sudo_edit.c:743 msgid "unable to read the clock" msgstr "nelze přečíst hodiny" @@ -1150,30 +1177,30 @@ 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:326 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" msgstr "GID nelze nastavit na %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:337 #, c-format msgid "unable to set uid to %u" msgstr "UID nelze nastavit na %u" -#: src/tgetpass.c:341 +#: src/tgetpass.c:342 #, c-format msgid "unable to run %s" msgstr "%s nelze spustit" -#: src/utmp.c:288 +#: src/utmp.c:283 msgid "unable to save stdin" msgstr "standardní vstup nelze uložit" -#: src/utmp.c:290 +#: src/utmp.c:285 msgid "unable to dup2 stdin" msgstr "standardní vstup nelze zduplikovat voláním dup2" -#: src/utmp.c:293 +#: src/utmp.c:288 msgid "unable to restore stdin" msgstr "standardní vstup nelze obnovit" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/po/de.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/po/de.mo differ diff -Nru sudo-1.9.13p3/po/de.po sudo-1.9.14p2/po/de.po --- sudo-1.9.13p3/po/de.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/po/de.po 2023-07-15 15:37:22.000000000 +0000 @@ -4,10 +4,10 @@ # Mario Blättermann , 2012, 2014-2017, 2019-2023. msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.13b2\n" +"Project-Id-Version: sudo 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-26 18:48+0100\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-08 20:27+0200\n" "Last-Translator: Mario Blättermann \n" "Language-Team: German \n" "Language: de\n" @@ -16,7 +16,7 @@ "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: Lokalize 22.12.0\n" +"X-Generator: Lokalize 23.04.1\n" #: lib/util/aix.c:89 lib/util/aix.c:169 msgid "unable to open userdb" @@ -33,73 +33,76 @@ #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 #: lib/util/json.c:55 lib/util/json.c:197 lib/util/sudo_conf.c:215 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:80 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:205 src/exec_monitor.c:460 -#: src/exec_monitor.c:466 src/exec_monitor.c:474 src/exec_monitor.c:482 -#: src/exec_monitor.c:489 src/exec_monitor.c:496 src/exec_monitor.c:503 -#: src/exec_monitor.c:510 src/exec_monitor.c:517 src/exec_monitor.c:524 -#: src/exec_monitor.c:531 src/exec_nopty.c:231 src/exec_nopty.c:240 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:78 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:171 src/exec_monitor.c:418 +#: src/exec_monitor.c:424 src/exec_monitor.c:432 src/exec_monitor.c:440 +#: src/exec_monitor.c:447 src/exec_monitor.c:454 src/exec_monitor.c:461 +#: src/exec_monitor.c:468 src/exec_monitor.c:475 src/exec_monitor.c:482 +#: src/exec_monitor.c:489 src/exec_nopty.c:231 src/exec_nopty.c:240 #: 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:318 src/exec_nopty.c:326 -#: src/exec_nopty.c:736 src/exec_preload.c:343 src/exec_ptrace.c:475 -#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1095 -#: src/exec_ptrace.c:1270 src/exec_ptrace.c:1612 src/exec_ptrace.c:1639 -#: src/exec_pty.c:511 src/exec_pty.c:692 src/exec_pty.c:882 src/exec_pty.c:891 -#: src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 src/exec_pty.c:919 -#: src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 src/exec_pty.c:947 -#: src/exec_pty.c:954 src/exec_pty.c:962 src/load_plugins.c:98 -#: src/load_plugins.c:123 src/load_plugins.c:159 src/load_plugins.c:392 -#: src/load_plugins.c:398 src/parse_args.c:172 src/parse_args.c:193 -#: src/parse_args.c:267 src/parse_args.c:623 src/parse_args.c:645 -#: src/parse_args.c:670 src/preserve_fds.c:46 src/preserve_fds.c:131 -#: src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 src/selinux.c:489 -#: src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 src/sesh.c:246 -#: src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:641 src/sudo.c:706 -#: src/sudo.c:716 src/sudo.c:743 src/sudo.c:766 src/sudo.c:775 src/sudo.c:784 -#: src/sudo.c:801 src/sudo.c:842 src/sudo.c:851 src/sudo.c:861 src/sudo.c:894 -#: src/sudo.c:1122 src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 -#: src/sudo.c:1832 src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 -#: src/sudo_edit.c:429 src/sudo_edit.c:438 src/sudo_edit.c:538 -#: src/sudo_edit.c:545 src/sudo_edit.c:688 src/sudo_edit.c:708 -#: src/sudo_intercept_common.c:115 src/sudo_intercept_common.c:340 +#: src/exec_nopty.c:744 src/exec_preload.c:343 src/exec_ptrace.c:475 +#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1096 +#: src/exec_ptrace.c:1271 src/exec_ptrace.c:1624 src/exec_ptrace.c:1651 +#: src/exec_ptrace.c:1841 src/exec_pty.c:581 src/exec_pty.c:765 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:193 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 +#: src/sesh.c:246 src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:644 +#: src/sudo.c:709 src/sudo.c:719 src/sudo.c:746 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:787 src/sudo.c:805 src/sudo.c:846 src/sudo.c:855 src/sudo.c:865 +#: src/sudo.c:898 src/sudo.c:1127 src/sudo.c:1148 src/sudo.c:1441 +#: src/sudo.c:1610 src/sudo.c:1837 src/sudo.c:2171 src/sudo_edit.c:89 +#: src/sudo_edit.c:149 src/sudo_edit.c:430 src/sudo_edit.c:439 +#: src/sudo_edit.c:540 src/sudo_edit.c:547 src/sudo_edit.c:692 +#: src/sudo_edit.c:712 src/sudo_intercept_common.c:115 +#: src/sudo_intercept_common.c:340 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:56 #: lib/util/json.c:198 lib/util/regex.c:173 lib/util/sudo_conf.c:216 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:81 src/exec_intercept.c:111 src/exec_intercept.c:344 -#: src/exec_intercept.c:518 src/exec_intercept.c:582 src/exec_intercept.c:706 -#: src/exec_intercept.c:830 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:460 src/exec_monitor.c:466 -#: src/exec_monitor.c:474 src/exec_monitor.c:482 src/exec_monitor.c:489 -#: src/exec_monitor.c:496 src/exec_monitor.c:503 src/exec_monitor.c:510 -#: src/exec_monitor.c:517 src/exec_monitor.c:524 src/exec_monitor.c:531 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:79 src/exec_intercept.c:111 src/exec_intercept.c:350 +#: src/exec_intercept.c:525 src/exec_intercept.c:589 src/exec_intercept.c:713 +#: src/exec_intercept.c:837 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:418 src/exec_monitor.c:424 +#: src/exec_monitor.c:432 src/exec_monitor.c:440 src/exec_monitor.c:447 +#: src/exec_monitor.c:454 src/exec_monitor.c:461 src/exec_monitor.c:468 +#: src/exec_monitor.c:475 src/exec_monitor.c:482 src/exec_monitor.c:489 #: src/exec_nopty.c:231 src/exec_nopty.c:240 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:318 src/exec_nopty.c:326 src/exec_preload.c:343 #: src/exec_ptrace.c:475 src/exec_ptrace.c:768 src/exec_ptrace.c:983 -#: src/exec_ptrace.c:1639 src/exec_pty.c:511 src/exec_pty.c:882 -#: src/exec_pty.c:891 src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 -#: src/exec_pty.c:919 src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 -#: src/exec_pty.c:947 src/exec_pty.c:954 src/exec_pty.c:962 -#: src/load_plugins.c:98 src/load_plugins.c:123 src/load_plugins.c:159 -#: src/load_plugins.c:392 src/load_plugins.c:398 src/parse_args.c:172 -#: src/parse_args.c:194 src/parse_args.c:267 src/parse_args.c:623 -#: src/parse_args.c:645 src/parse_args.c:670 src/preserve_fds.c:46 +#: src/exec_ptrace.c:1651 src/exec_ptrace.c:1842 src/exec_pty.c:581 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:194 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 #: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 #: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:471 -#: src/sudo.c:230 src/sudo.c:641 src/sudo.c:894 src/sudo.c:1122 -#: src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 src/sudo.c:1832 -#: src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 -#: src/sudo_edit.c:438 src/sudo_edit.c:538 src/sudo_edit.c:545 -#: src/sudo_edit.c:688 src/sudo_edit.c:708 src/sudo_intercept_common.c:115 +#: src/sudo.c:228 src/sudo.c:644 src/sudo.c:898 src/sudo.c:1127 +#: src/sudo.c:1148 src/sudo.c:1441 src/sudo.c:1610 src/sudo.c:1837 +#: src/sudo.c:2171 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:430 +#: src/sudo_edit.c:439 src/sudo_edit.c:540 src/sudo_edit.c:547 +#: src/sudo_edit.c:692 src/sudo_edit.c:712 src/sudo_intercept_common.c:115 #: src/sudo_intercept_common.c:340 msgid "unable to allocate memory" msgstr "Speicher konnte nicht zugewiesen werden" @@ -114,9 +117,9 @@ msgid "%.*s exists but is not a directory (0%o)" msgstr "%.*s existiert, aber ist kein Verzeichnis (0%o)" -#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:666 -#: lib/util/sudo_conf.c:696 lib/util/sudo_conf.c:703 src/selinux.c:235 -#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:494 src/sudo_edit.c:557 +#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:664 +#: lib/util/sudo_conf.c:683 lib/util/sudo_conf.c:710 src/selinux.c:235 +#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:495 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "%s konnte nicht geöffnet werden" @@ -172,22 +175,22 @@ msgid "invalid max groups \"%s\" in %s, line %u" msgstr "Ungültige Maximalzahl an Gruppen »%s« in %s, Zeile %u" -#: lib/util/sudo_conf.c:669 +#: lib/util/sudo_conf.c:686 #, c-format msgid "%s is not a regular file" msgstr "%s ist keine reguläre Datei" -#: lib/util/sudo_conf.c:672 src/copy_file.c:164 +#: lib/util/sudo_conf.c:689 src/copy_file.c:164 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s gehört Benutzer mit UID %u, sollte allerdings %u gehören" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:693 #, c-format msgid "%s is world writable" msgstr "%s kann von allen verändert werden" -#: lib/util/sudo_conf.c:679 +#: lib/util/sudo_conf.c:696 #, c-format msgid "%s is group writable" msgstr "%s kann von der Gruppe verändert werden" @@ -236,7 +239,7 @@ msgid "%s: bad file mode: 0%o" msgstr "%s: falscher Dateimodus: 0%o" -#: src/edit_open.c:331 +#: src/edit_open.c:333 msgid "unable to restore current working directory" msgstr "Aktueller Arbeitsordner konnte nicht wiederhergestellt werden" @@ -281,18 +284,18 @@ msgid "starting from %s" msgstr "beginnend mit %s" -#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:569 src/exec_monitor.c:571 -#: src/exec_pty.c:225 src/exec_pty.c:1026 src/exec_pty.c:1028 src/signal.c:144 -#: src/signal.c:151 src/signal.c:165 src/suspend_nopty.c:93 +#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:552 src/exec_monitor.c:554 +#: src/exec_pty.c:1122 src/exec_pty.c:1124 src/signal.c:144 src/signal.c:151 +#: src/signal.c:165 src/suspend_parent.c:143 #, c-format msgid "unable to set handler for signal %d" msgstr "Handler für Signal %d konnte nicht gesetzt werden" -#: src/exec.c:422 +#: src/exec.c:424 msgid "intercept mode is not supported with SELinux RBAC on this system" msgstr "Abfangmodus wird mit SELinux RBAC auf diesem System nicht unterstützt" -#: src/exec.c:427 +#: src/exec.c:429 msgid "unable to log sub-commands with SELinux RBAC on this system" msgstr "Unterbefehle können mit SELinux RBAC auf diesem System nicht protokolliert werden" @@ -300,239 +303,258 @@ msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "PRIV_PROC_EXEC konnte nicht von PRIV_LIMIT entfernt werden" -#: src/exec_intercept.c:70 src/exec_iolog.c:165 src/exec_iolog.c:175 -#: src/exec_iolog.c:220 src/exec_iolog.c:227 src/exec_iolog.c:254 -#: src/exec_monitor.c:468 src/exec_monitor.c:476 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_monitor.c:533 src/exec_nopty.c:233 src/exec_nopty.c:242 +#: src/exec_intercept.c:70 src/exec_iolog.c:163 src/exec_iolog.c:173 +#: src/exec_iolog.c:218 src/exec_iolog.c:225 src/exec_iolog.c:252 +#: src/exec_monitor.c:426 src/exec_monitor.c:434 src/exec_monitor.c:442 +#: src/exec_monitor.c:449 src/exec_monitor.c:456 src/exec_monitor.c:463 +#: src/exec_monitor.c:470 src/exec_monitor.c:477 src/exec_monitor.c:484 +#: src/exec_monitor.c:491 src/exec_nopty.c:233 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:305 #: src/exec_nopty.c:312 src/exec_nopty.c:320 src/exec_nopty.c:328 -#: src/exec_nopty.c:387 src/exec_nopty.c:453 src/exec_pty.c:360 -#: src/exec_pty.c:462 src/exec_pty.c:517 src/exec_pty.c:884 src/exec_pty.c:893 -#: src/exec_pty.c:900 src/exec_pty.c:907 src/exec_pty.c:914 src/exec_pty.c:921 -#: src/exec_pty.c:928 src/exec_pty.c:935 src/exec_pty.c:942 src/exec_pty.c:949 -#: src/exec_pty.c:956 +#: src/exec_nopty.c:387 src/exec_nopty.c:457 src/exec_pty.c:432 +#: src/exec_pty.c:537 src/exec_pty.c:587 src/exec_pty.c:965 src/exec_pty.c:974 +#: src/exec_pty.c:981 src/exec_pty.c:988 src/exec_pty.c:995 +#: src/exec_pty.c:1002 src/exec_pty.c:1009 src/exec_pty.c:1016 +#: src/exec_pty.c:1023 src/exec_pty.c:1030 src/exec_pty.c:1037 +#: src/exec_pty.c:1044 msgid "unable to add event to queue" msgstr "Ereignis konnte nicht zur Warteschlange hinzugefügt werden" -#: src/exec_intercept.c:317 src/sudo.c:1028 +#: src/exec_intercept.c:323 src/sudo.c:1033 msgid "command not set by the security policy" msgstr "Befehl wurde durch Sicherheitsregelwerk nicht gesetzt" -#: src/exec_intercept.c:395 src/exec_intercept.c:435 src/sudo.c:1248 -#: src/sudo.c:1293 src/sudo.c:1337 +#: src/exec_intercept.c:401 src/exec_intercept.c:441 src/sudo.c:1253 +#: src/sudo.c:1298 src/sudo.c:1342 msgid "command rejected by policy" msgstr "Befehl wurde durch Regelwerk abgewiesen" -#: src/exec_intercept.c:505 src/sudo.c:1935 +#: src/exec_intercept.c:512 src/sudo.c:1940 msgid "approval plugin error" msgstr "Genehmigungs-Plugin-Fehler" -#: src/exec_intercept.c:530 src/sudo.c:1253 src/sudo.c:1298 src/sudo.c:1342 -#: src/sudo.c:1416 +#: src/exec_intercept.c:537 src/sudo.c:1258 src/sudo.c:1303 src/sudo.c:1347 +#: src/sudo.c:1421 msgid "policy plugin error" msgstr "Regelwerk-Plugin-Fehler" -#: src/exec_intercept.c:559 +#: src/exec_intercept.c:566 msgid "invalid PolicyCheckRequest" msgstr "ungültige PolicyCheckRequest" -#: src/exec_intercept.c:702 +#: src/exec_intercept.c:709 #, c-format msgid "client request too large: %zu" msgstr "Client-Anfrage ist zu groß: %zu" -#: src/exec_intercept.c:744 +#: src/exec_intercept.c:751 #, c-format msgid "unable to unpack %s size %zu" msgstr "%s, Größe %zu, kann nicht entpackt werden" -#: src/exec_intercept.c:792 +#: src/exec_intercept.c:799 #, c-format msgid "unexpected type_case value %d in %s from %s" msgstr "unerwarteter Wert %d für type_case in %s aus %s" -#: src/exec_intercept.c:818 +#: src/exec_intercept.c:825 #, c-format msgid "server message too large: %zu" msgstr "Server-Meldung ist zu groß: %zu" -#: src/exec_iolog.c:323 src/exec_iolog.c:363 src/exec_iolog.c:403 -#: src/exec_iolog.c:454 src/exec_iolog.c:505 +#: src/exec_iolog.c:321 src/exec_iolog.c:361 src/exec_iolog.c:401 +#: src/exec_iolog.c:452 src/exec_iolog.c:503 msgid "I/O plugin error" msgstr "E/A-Pluginfehler" -#: src/exec_iolog.c:327 src/exec_iolog.c:367 src/exec_iolog.c:407 -#: src/exec_iolog.c:458 src/exec_iolog.c:509 +#: src/exec_iolog.c:325 src/exec_iolog.c:365 src/exec_iolog.c:405 +#: src/exec_iolog.c:456 src/exec_iolog.c:507 msgid "command rejected by I/O plugin" msgstr "Befehl wurde vom E/A-Plugin abgewiesen" -#: src/exec_iolog.c:556 +#: src/exec_iolog.c:555 msgid "error logging suspend" msgstr "Fehler bei der Aussetzung der Protokollierung" -#: src/exec_iolog.c:591 +#: src/exec_iolog.c:590 msgid "error changing window size" msgstr "Fehler beim Ändern der Fenstergröße" -#: src/exec_monitor.c:362 +#: src/exec_monitor.c:328 msgid "error reading from socketpair" msgstr "Fehler beim Lesen des Socket-Paars" -#: src/exec_monitor.c:379 +#: src/exec_monitor.c:340 #, c-format msgid "unexpected reply type on backchannel: %d" msgstr "Unerwarteter Antworttyp auf Rückmeldungskanal: %d" -#: src/exec_monitor.c:587 +#: src/exec_monitor.c:566 msgid "unable to set controlling tty" msgstr "Kontrollierendes TTY konnte nicht gesetzt werden" -#: src/exec_monitor.c:595 src/exec_nopty.c:498 src/exec_nopty.c:508 -#: src/exec_nopty.c:518 src/exec_nopty.c:552 src/exec_pty.c:1097 -#: src/exec_pty.c:1118 src/exec_pty.c:1138 src/tgetpass.c:305 +#: src/exec_monitor.c:574 src/exec_nopty.c:504 src/exec_nopty.c:514 +#: src/exec_nopty.c:524 src/exec_nopty.c:560 src/exec_pty.c:1195 +#: src/exec_pty.c:1222 src/exec_pty.c:1242 src/exec_pty.c:1262 +#: src/tgetpass.c:306 msgid "unable to create pipe" msgstr "Weiterleitung konnte nicht erstellt werden" -#: src/exec_monitor.c:605 +#: src/exec_monitor.c:584 msgid "unable to receive message from parent" msgstr "Die Nachricht konnte nicht empfangen werden" -#: src/exec_monitor.c:621 src/exec_nopty.c:595 src/exec_pty.c:1176 -#: src/sudo_edit.c:361 src/tgetpass.c:309 +#: src/exec_monitor.c:600 src/exec_nopty.c:603 src/exec_pty.c:1303 +#: src/sudo_edit.c:361 src/tgetpass.c:310 msgid "unable to fork" msgstr "Es konnte nicht geforkt werden" -#: src/exec_monitor.c:625 src/exec_monitor.c:723 src/exec_nopty.c:700 +#: src/exec_monitor.c:604 src/exec_monitor.c:700 src/exec_nopty.c:708 msgid "unable to restore tty label" msgstr "TTY-Kennzeichnung konnte nicht wiederhergestellt werden" -#: src/exec_monitor.c:638 src/sesh.c:217 src/sudo.c:1199 +#: src/exec_monitor.c:615 src/sesh.c:217 src/sudo.c:1204 #, c-format msgid "unable to execute %s" msgstr "%s konnte nicht ausgeführt werden" -#: src/exec_nopty.c:546 src/exec_pty.c:1035 +#: src/exec_nopty.c:554 src/exec_pty.c:1131 msgid "policy plugin failed session initialization" msgstr "Regelwerks-Plugin konnte Sitzung nicht initialisieren" -#: src/exec_nopty.c:561 src/exec_pty.c:1004 src/exec_pty.c:1013 +#: src/exec_nopty.c:569 src/exec_pty.c:1100 src/exec_pty.c:1109 msgid "unable to create sockets" msgstr "Sockets konnten nicht hergestellt werden" -#: src/exec_nopty.c:688 src/exec_pty.c:1274 +#: src/exec_nopty.c:696 src/exec_pty.c:1406 msgid "error in event loop" msgstr "Fehler in Ereignisschleife" #: src/exec_preload.c:167 src/net_ifs.c:206 src/net_ifs.c:372 -#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:851 src/sudo.c:488 +#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:852 src/sudo.c:488 #: src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "Interner Fehler: %s-Überlauf" -#: src/exec_ptrace.c:1079 src/exec_ptrace.c:1104 src/exec_ptrace.c:1900 +#: src/exec_ptrace.c:1080 src/exec_ptrace.c:1105 src/exec_ptrace.c:1925 #, c-format msgid "unable to set registers for process %d" msgstr "Register konnten für Prozess %d nicht gesetzt werden" -#: src/exec_ptrace.c:1099 src/exec_ptrace.c:1274 src/exec_ptrace.c:1616 +#: src/exec_ptrace.c:1100 src/exec_ptrace.c:1275 src/exec_ptrace.c:1628 #, c-format msgid "process %d exited unexpectedly" msgstr "Prozess %d wurde unerwartet beendet" -#: src/exec_ptrace.c:1208 +#: src/exec_ptrace.c:1209 msgid "unable to set seccomp filter" msgstr "seccomp-Filter konnte nicht gesetzt werden" -#: src/exec_ptrace.c:1405 +#: src/exec_ptrace.c:1406 #, c-format msgid "interpreter argument , expected \"%s\", got \"%s\"" msgstr "Interpreter-Argument: »%s« wurde erwartet, »%s« erhalten" -#: src/exec_ptrace.c:1504 +#: src/exec_ptrace.c:1505 #, c-format msgid "pathname mismatch, expected \"%s\", got \"%s\"" msgstr "Pfadname passt nicht, »%s« wurde erwartet, »%s« erhalten" -#: src/exec_ptrace.c:1513 src/exec_ptrace.c:1520 src/exec_ptrace.c:1533 -#: src/exec_ptrace.c:1541 src/exec_ptrace.c:1547 src/exec_ptrace.c:1553 +#: src/exec_ptrace.c:1514 src/exec_ptrace.c:1521 src/exec_ptrace.c:1545 +#: src/exec_ptrace.c:1553 src/exec_ptrace.c:1559 src/exec_ptrace.c:1565 #, c-format msgid "%s[%d] mismatch, expected \"%s\", got \"%s\"" msgstr "%s[%d] passt nicht, »%s« wurde erwartet, »%s« erhalten" -#: src/exec_ptrace.c:1620 +#: src/exec_ptrace.c:1632 #, c-format msgid "process %d unexpected status 0x%x" msgstr "Prozess %d hat den unerwarteten Status 0x%x" -#: src/exec_ptrace.c:1711 +#: src/exec_ptrace.c:1723 #, c-format msgid "unable to get event message for process %d" msgstr "Ereignismeldung für Prozess %d konnte nicht erhalten werden" -#: src/exec_ptrace.c:1718 +#: src/exec_ptrace.c:1730 #, c-format msgid "unable to get registers for process %d" msgstr "Register konnten für Prozess %d nicht erhalten werden" -#: src/exec_pty.c:103 +#: src/exec_pty.c:84 msgid "unable to allocate pty" msgstr "PTY konnte nicht vergeben werden" -#: src/exec_pty.c:268 src/signal.c:101 src/suspend_nopty.c:99 +#: src/exec_pty.c:131 src/exec_pty.c:284 src/tgetpass.c:251 +msgid "unable to restore terminal settings" +msgstr "Terminaleinstellungen konnten nicht wiederhergestellt werden" + +#: src/exec_pty.c:243 +msgid "unable to set handler for SIGCONT" +msgstr "Handler für SIGCONT konnte nicht gesetzt werden" + +#: src/exec_pty.c:293 #, c-format -msgid "unable to restore handler for signal %d" -msgstr "Handler für Signal %d konnte nicht wiederhergestellt werden" +msgid "unable to set handler for SIG%s" +msgstr "Handler für SIG%s konnte nicht gesetzt werden" + +#: src/exec_pty.c:317 +#, c-format +msgid "unable to restore handler for SIG%s" +msgstr "Handler für SIG%s konnte nicht wiederhergestellt werden" -#: src/exec_pty.c:1222 +#: src/exec_pty.c:345 +msgid "unable to restore handler for SIGCONT" +msgstr "Handler für SIGCONT konnte nicht wiederhergestellt werden" + +#: src/exec_pty.c:1353 msgid "unable to send message to monitor process" msgstr "Die Nachricht konnte nicht an den überwachenden Prozess verschickt werden" -#: src/load_plugins.c:73 src/load_plugins.c:220 src/load_plugins.c:230 -#: src/load_plugins.c:240 src/load_plugins.c:287 +#: src/load_plugins.c:75 src/load_plugins.c:222 src/load_plugins.c:232 +#: src/load_plugins.c:242 src/load_plugins.c:289 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "Fehler in %s, Zeile %d, während Plugin »%s« geladen wurde" -#: src/load_plugins.c:184 src/load_plugins.c:255 +#: src/load_plugins.c:186 src/load_plugins.c:257 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "Doppelt vorhandenes Plugin »%s« in %s, Zeile %d, wird ignoriert" -#: src/load_plugins.c:222 +#: src/load_plugins.c:224 #, c-format msgid "unable to load %s: %s" msgstr "»%s« konnte nicht geladen werden: %s" -#: src/load_plugins.c:232 +#: src/load_plugins.c:234 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "Symbol »%s« konnte in %s nicht gefunden werden" -#: src/load_plugins.c:242 +#: src/load_plugins.c:244 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "Inkompatible Hauptversion %d des Regelwerks (%d erwartet) wurde in %s gefunden" -#: src/load_plugins.c:260 +#: src/load_plugins.c:262 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "Regelwerks-Plugin »%s« in %s, Zeile %d, wird ignoriert" -#: src/load_plugins.c:263 +#: src/load_plugins.c:265 msgid "only a single policy plugin may be specified" msgstr "Nur ein einziges Regelwerks-Plugin kann geladen werden" -#: src/load_plugins.c:289 +#: src/load_plugins.c:291 #, c-format msgid "unknown plugin type %d found in %s" msgstr "Unbekannter Plugintyp %d wurde in %s gefunden" -#: src/load_plugins.c:472 +#: src/load_plugins.c:474 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "Das Regelwerks-Plugin %s enthält keine check_policy-Methode" @@ -542,47 +564,47 @@ msgid "invalid environment variable name: %s" msgstr "Unzulässiger Name der Umgebungsvariable: %s" -#: src/parse_args.c:317 +#: src/parse_args.c:319 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "Das Argument für -C muss eine Zahl größer oder gleich 3 sein" -#: src/parse_args.c:554 +#: src/parse_args.c:556 msgid "you may not specify both the -i and -s options" msgstr "Die Optionen -i und -s können nicht gemeinsam benutzt werden" -#: src/parse_args.c:559 +#: src/parse_args.c:561 msgid "you may not specify both the -i and -E options" msgstr "Die Optionen -i und -E können nicht gemeinsam benutzt werden" -#: src/parse_args.c:569 +#: src/parse_args.c:571 msgid "the -E option is not valid in edit mode" msgstr "Die Option -E ist im Bearbeiten-Modus ungültig" -#: src/parse_args.c:572 +#: src/parse_args.c:574 msgid "you may not specify environment variables in edit mode" msgstr "Im Bearbeiten-Modus können keine Umgebungsvariablen gesetzt werden" -#: src/parse_args.c:582 +#: src/parse_args.c:584 msgid "the -U option may only be used with the -l option" msgstr "Die Option -U kann nur zusammen mit -l benutzt werden" -#: src/parse_args.c:586 +#: src/parse_args.c:588 msgid "the -A and -S options may not be used together" msgstr "Die Optionen -A und -S können nicht gemeinsam benutzt werden" -#: src/parse_args.c:684 +#: src/parse_args.c:686 msgid "sudoedit is not supported on this platform" msgstr "sudoedit ist auf dieser Plattform nicht verfügbar" -#: src/parse_args.c:767 +#: src/parse_args.c:744 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "Nur eine der Optionen -e, -h, -i, -K, -l, -s, -v oder -V darf angegeben werden" -#: src/parse_args.c:780 +#: src/parse_args.c:757 msgid "Only one of the -K, -k or -N options may be specified" msgstr "Nur eine der Optionen -K, -k oder -N darf angegeben werden" -#: src/parse_args.c:796 +#: src/parse_args.c:778 #, c-format msgid "" "%s - edit files as another user\n" @@ -591,7 +613,7 @@ "%s - Dateien als anderer Benutzer verändern\n" "\n" -#: src/parse_args.c:798 +#: src/parse_args.c:780 #, c-format msgid "" "%s - execute a command as another user\n" @@ -600,7 +622,7 @@ "%s - Einen Befehl als anderer Benutzer ausführen\n" "\n" -#: src/parse_args.c:804 +#: src/parse_args.c:785 msgid "" "\n" "Options:\n" @@ -608,131 +630,131 @@ "\n" "Optionen:\n" -#: src/parse_args.c:806 +#: src/parse_args.c:787 msgid "use a helper program for password prompting" msgstr "Hilfsprogramm zum Eingeben des Passworts verwenden" -#: src/parse_args.c:809 +#: src/parse_args.c:790 msgid "use specified BSD authentication type" msgstr "Angegebenen BSD-Legitimierungstypen verwenden" -#: src/parse_args.c:813 +#: src/parse_args.c:794 msgid "run command in the background" msgstr "Befehl im Hintergrund ausführen" -#: src/parse_args.c:816 +#: src/parse_args.c:797 msgid "ring bell when prompting" msgstr "Bei Eingabeaufforderung Systemklang abspielen" -#: src/parse_args.c:818 +#: src/parse_args.c:799 msgid "close all file descriptors >= num" msgstr "Alle Dateideskriptoren >= num schließen" -#: src/parse_args.c:821 +#: src/parse_args.c:802 msgid "run command with the specified BSD login class" msgstr "Befehl unter angegebener Login-Klasse ausführen" -#: src/parse_args.c:824 +#: src/parse_args.c:805 msgid "change the working directory before running command" msgstr "Arbeitsverzeichnis vor der Ausführung des Befehls wechseln" -#: src/parse_args.c:827 +#: src/parse_args.c:808 msgid "preserve user environment when running command" msgstr "Benutzerumgebung beim Starten des Befehls beibehalten" -#: src/parse_args.c:829 +#: src/parse_args.c:810 msgid "preserve specific environment variables" msgstr "Spezifische Umgebungsvariablen beibehalten" -#: src/parse_args.c:831 +#: src/parse_args.c:812 msgid "edit files instead of running a command" msgstr "Dateien bearbeiten, statt einen Befehl auszuführen" -#: src/parse_args.c:834 +#: src/parse_args.c:815 msgid "run command as the specified group name or ID" msgstr "Befehl unter angegebenem Gruppennamen oder Gruppen-ID ausführen" -#: src/parse_args.c:837 +#: src/parse_args.c:818 msgid "set HOME variable to target user's home dir" msgstr "HOME-Variable als Home-Verzeichnis des Zielbenutzers setzen" -#: src/parse_args.c:840 +#: src/parse_args.c:821 msgid "display help message and exit" msgstr "Hilfe ausgeben und beenden" -#: src/parse_args.c:842 +#: src/parse_args.c:823 msgid "run command on host (if supported by plugin)" msgstr "Befehl auf entferntem System ausführen (falls vom Plugin unterstützt)" -#: src/parse_args.c:845 +#: src/parse_args.c:826 msgid "run login shell as the target user; a command may also be specified" msgstr "Anmeldeshell als Zielbenutzer starten; es kann auch ein Befehl angegeben werden" -#: src/parse_args.c:847 +#: src/parse_args.c:828 msgid "remove timestamp file completely" msgstr "Zeitstempeldateien komplett entfernen" -#: src/parse_args.c:850 +#: src/parse_args.c:831 msgid "invalidate timestamp file" msgstr "Zeitstempeldatei ungültig machen" -#: src/parse_args.c:853 +#: src/parse_args.c:834 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "Benutzerrechte aufzählen oder einen bestimmten Befehl testen; für ein längeres Format zweimal angeben" -#: src/parse_args.c:856 +#: src/parse_args.c:837 msgid "non-interactive mode, no prompts are used" msgstr "Nicht-interaktiver Modus, es werden keine Eingabeaufforderungen verwendet" -#: src/parse_args.c:859 +#: src/parse_args.c:840 msgid "preserve group vector instead of setting to target's" msgstr "Gruppen-Vektor beibehalten, statt auf den des Zielbenutzers zu setzen" -#: src/parse_args.c:862 +#: src/parse_args.c:843 msgid "use the specified password prompt" msgstr "Angegebene Passwort-Eingabeaufforderung benutzen" -#: src/parse_args.c:864 +#: src/parse_args.c:845 msgid "change the root directory before running command" msgstr "Wurzelverzeichnis vor der Ausführung des Befehls wechseln" -#: src/parse_args.c:867 +#: src/parse_args.c:848 msgid "create SELinux security context with specified role" msgstr "SELinux-Sicherheitskontext mit angegebener Funktion erstellen" -#: src/parse_args.c:870 +#: src/parse_args.c:851 msgid "read password from standard input" msgstr "Passwort von der Standardeingabe lesen" -#: src/parse_args.c:873 +#: src/parse_args.c:854 msgid "run shell as the target user; a command may also be specified" msgstr "Shell als Zielbenutzer ausführen; es kann auch ein Befehl angegeben werden" -#: src/parse_args.c:877 +#: src/parse_args.c:858 msgid "create SELinux security context with specified type" msgstr "SELinux-Sicherheitskontext mit angegebenem Typ erstellen" -#: src/parse_args.c:880 +#: src/parse_args.c:861 msgid "terminate command after the specified time limit" msgstr "Befehlausführung nach der angegebenen Zeitbegrenzung abbrechen" -#: src/parse_args.c:883 +#: src/parse_args.c:864 msgid "in list mode, display privileges for user" msgstr "im Aufzählungsmodus, Rechte des Benutzers anzeigen" -#: src/parse_args.c:886 +#: src/parse_args.c:867 msgid "run command (or edit file) as specified user name or ID" msgstr "Befehl oder Datei unter angegebenem Benutzernamen oder Benutzer-ID ausführen bzw. ändern" -#: src/parse_args.c:888 +#: src/parse_args.c:869 msgid "display version information and exit" msgstr "Versionsinformation anzeigen und beenden" -#: src/parse_args.c:891 +#: src/parse_args.c:872 msgid "update user's timestamp without running a command" msgstr "Den Zeitstempel des Benutzers erneuern, ohne einen Befehl auszuführen" -#: src/parse_args.c:894 +#: src/parse_args.c:875 msgid "stop processing command line arguments" msgstr "Aufhören, die Befehlszeilenargumente zu verarbeiten" @@ -880,6 +902,11 @@ msgid "unable to save handler for signal %d" msgstr "Handler für Signal %d konnte nicht gespeichert werden" +#: src/signal.c:101 src/suspend_parent.c:149 +#, c-format +msgid "unable to restore handler for signal %d" +msgstr "Handler für Signal %d konnte nicht wiederhergestellt werden" + #: src/solaris.c:72 msgid "resource control limit has been reached" msgstr "Limit der Ressourcenkontrolle wurde erreicht" @@ -923,21 +950,21 @@ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "Warnung: Ressourcenkontrolle von Projekt »%s« konnte nicht zugewiesen werden" -#: src/sudo.c:216 +#: src/sudo.c:214 #, c-format msgid "Sudo version %s\n" msgstr "Sudo-Version %s\n" -#: src/sudo.c:218 +#: src/sudo.c:216 #, c-format msgid "Configure options: %s\n" msgstr "Optionen für »configure«: %s\n" -#: src/sudo.c:226 +#: src/sudo.c:224 msgid "fatal error, unable to load plugins" msgstr "Schwerwiegender Fehler, Plugins konnten nicht geladen werden" -#: src/sudo.c:272 +#: src/sudo.c:270 msgid "plugin did not return a command to execute" msgstr "Plugin gab keinen auszuführenden Befehl zurück" @@ -946,128 +973,128 @@ msgid "unexpected sudo mode 0x%x" msgstr "Unerwarteter sudo-Modus 0x%x" -#: src/sudo.c:555 +#: src/sudo.c:559 #, c-format msgid "you do not exist in the %s database" msgstr "Sie sind in der %s-Datenbank nicht enthalten" -#: src/sudo.c:612 +#: src/sudo.c:616 msgid "unable to determine tty" msgstr "TTY konnte nicht ermittelt werden" -#: src/sudo.c:928 +#: src/sudo.c:932 msgid "The \"no new privileges\" flag is set, which prevents sudo from running as root." msgstr "Der Schalter »no new privileges« ist gesetzt, welcher sudo daran hindert, als Root ausgeführt zu werden." -#: src/sudo.c:930 +#: src/sudo.c:934 msgid "If sudo is running in a container, you may need to adjust the container configuration to disable the flag." msgstr "Falls sudo in einem Container ausgeführt wird, könnte es nötig sein, die Containerkonfiguration anzupassen, um diesen Schalter zu deaktivieren." -#: src/sudo.c:964 +#: src/sudo.c:968 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s muss dem Benutzer mit UID %d gehören und das »setuid«-Bit gesetzt haben" -#: src/sudo.c:967 +#: src/sudo.c:971 #, 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 "Effektive UID ist nicht %d. Liegt %s auf einem Dateisystem mit gesetzter »nosuid«-Option oder auf einem NFS-Dateisystem ohne Root-Rechte?" -#: src/sudo.c:973 +#: src/sudo.c:977 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "Effektive UID ist nicht %d. Wurde sudo mit »setuid root« installiert?" -#: src/sudo.c:989 src/tgetpass.c:331 +#: src/sudo.c:993 src/tgetpass.c:332 msgid "unable to set supplementary group IDs" msgstr "Zusätzliche Gruppenkennungen konnten nicht gesetzt werden" -#: src/sudo.c:996 +#: src/sudo.c:1000 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "Effektive GID konnte nicht auf »runas«-GID %u gesetzt werden" -#: src/sudo.c:1002 +#: src/sudo.c:1006 #, c-format msgid "unable to set gid to runas gid %u" msgstr "GID konnte nicht auf »runas«-GID %u gesetzt werden" -#: src/sudo.c:1032 +#: src/sudo.c:1037 msgid "argv not set by the security policy" msgstr "argv wurde durch Sicherheitsregelwerk nicht gesetzt" -#: src/sudo.c:1036 +#: src/sudo.c:1041 msgid "envp not set by the security policy" msgstr "envp wurde durch Sicherheitsregelwerk nicht gesetzt" -#: src/sudo.c:1058 +#: src/sudo.c:1063 #, c-format msgid "unexpected child termination condition: %d" msgstr "Unerwartete Abbruchbedingung eines Unterprozesses: %d" -#: src/sudo.c:1171 +#: src/sudo.c:1176 msgid "unable to initialize policy plugin" msgstr "Regelwerks-Plugin konnte nicht initialisiert werden" -#: src/sudo.c:1233 +#: src/sudo.c:1238 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "Dem Regelwerks-Plugin %s fehlt die »check_policy«-Methode" -#: src/sudo.c:1279 +#: src/sudo.c:1284 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "Regelwerks-Plugin %s unterstützt das Auflisten von Privilegien nicht" -#: src/sudo.c:1323 +#: src/sudo.c:1328 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "Regelwerks-Plugin %s unterstützt die Option -v nicht" -#: src/sudo.c:1361 +#: src/sudo.c:1366 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "Regelwerks-Plugin %s unterstützt die Optionen -k und -K nicht" -#: src/sudo.c:1490 +#: src/sudo.c:1495 #, c-format msgid "error initializing I/O plugin %s" msgstr "E/A-Plugin %s konnte nicht initialisiert werden" -#: src/sudo.c:1493 +#: src/sudo.c:1498 msgid "error initializing I/O plugin" msgstr "E/A-Plugin konnte nicht initialisiert werden" -#: src/sudo.c:1642 +#: src/sudo.c:1647 #, c-format msgid "error initializing audit plugin %s" msgstr "Audit-Plugin %s konnte nicht initialisiert werden" -#: src/sudo.c:1721 +#: src/sudo.c:1726 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s: Fehlerereignis%s%s konnte nicht protokolliert werden" -#: src/sudo.c:1757 +#: src/sudo.c:1762 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: Ereignis%s%s konnte für das Protokoll nicht akzeptiert werden" -#: src/sudo.c:1762 src/sudo.c:1800 +#: src/sudo.c:1767 src/sudo.c:1805 msgid "audit plugin error" msgstr "Audit-Pluginfehler" -#: src/sudo.c:1795 +#: src/sudo.c:1800 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: Ereignis%s%s wurde vom Protokoll abgewiesen" -#: src/sudo.c:1855 +#: src/sudo.c:1860 #, c-format msgid "error initializing approval plugin %s" msgstr "Genehmigungs-Plugin %s konnte nicht initialisiert werden" -#: src/sudo.c:1925 +#: src/sudo.c:1930 msgid "command rejected by approver" msgstr "Befehl wurde vom Genehmigenden abgewiesen" @@ -1075,55 +1102,55 @@ msgid "no writable temporary directory found" msgstr "Kein beschreibbares temporäres Verzeichnis gefunden" -#: src/sudo_edit.c:291 +#: src/sudo_edit.c:292 #, c-format msgid "%s left unmodified" msgstr "%s blieb unverändert" -#: src/sudo_edit.c:304 src/sudo_edit.c:569 +#: src/sudo_edit.c:305 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s unverändert" -#: src/sudo_edit.c:481 +#: src/sudo_edit.c:482 msgid "sesh: internal error: odd number of paths" msgstr "sesh: interner Fehler: seltsame Anzahl an Pfaden" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:484 msgid "sesh: unable to create temporary files" msgstr "sesh: Temporäre Dateien konnten nicht angelegt werden" -#: src/sudo_edit.c:485 src/sudo_edit.c:604 +#: src/sudo_edit.c:486 src/sudo_edit.c:606 msgid "sesh: killed by a signal" msgstr "sesh: von einem Signal getötet" -#: src/sudo_edit.c:487 src/sudo_edit.c:607 +#: src/sudo_edit.c:488 src/sudo_edit.c:609 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: unbekannter Fehler %d" -#: src/sudo_edit.c:597 +#: src/sudo_edit.c:599 msgid "unable to copy temporary files back to their original location" msgstr "Temporäre Dateien konnten nicht an ihre ursprünglichen Orte zurück kopiert werden" -#: src/sudo_edit.c:601 +#: src/sudo_edit.c:603 msgid "unable to copy some of the temporary files back to their original location" msgstr "Einige der temporären Dateien konnten nicht an ihre ursprünglichen Orte zurück kopiert werden" -#: src/sudo_edit.c:646 +#: src/sudo_edit.c:650 #, c-format msgid "unable to change uid to root (%u)" msgstr "UID konnte nicht zu Root (%u) geändert werden" -#: src/sudo_edit.c:660 +#: src/sudo_edit.c:664 msgid "plugin error: invalid file list for sudoedit" msgstr "Plugin-Fehler: ungültige Dateiliste für sudoedit" -#: src/sudo_edit.c:681 +#: src/sudo_edit.c:685 msgid "plugin error: missing file list for sudoedit" msgstr "Plugin-Fehler: Fehlende Dateiliste für sudoedit" -#: src/sudo_edit.c:724 src/sudo_edit.c:739 +#: src/sudo_edit.c:728 src/sudo_edit.c:743 msgid "unable to read the clock" msgstr "Die Uhr konnte nicht gelesen werden" @@ -1151,30 +1178,30 @@ msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "Kein »askpass«-Programm angegeben, es wird versucht, SUDO_ASKPASS zu setzen" -#: src/tgetpass.c:326 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" msgstr "GID konnte nicht als %u festgelegt werden" -#: src/tgetpass.c:336 +#: src/tgetpass.c:337 #, c-format msgid "unable to set uid to %u" msgstr "UID konnte nicht als %u festgelegt werden" -#: src/tgetpass.c:341 +#: src/tgetpass.c:342 #, c-format msgid "unable to run %s" msgstr "%s konnte nicht ausgeführt werden" -#: src/utmp.c:288 +#: src/utmp.c:283 msgid "unable to save stdin" msgstr "Standardeingabe konnte nicht gespeichert werden" -#: src/utmp.c:290 +#: src/utmp.c:285 msgid "unable to dup2 stdin" msgstr "dup2 konnte nicht auf die Standardeingabe angewendet werden" -#: src/utmp.c:293 +#: src/utmp.c:288 msgid "unable to restore stdin" msgstr "Standardeingabe konnte nicht wiederhergestellt werden" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/po/eo.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/po/eo.mo differ diff -Nru sudo-1.9.13p3/po/eo.po sudo-1.9.14p2/po/eo.po --- sudo-1.9.13p3/po/eo.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/po/eo.po 2023-07-15 15:37:22.000000000 +0000 @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.12b2\n" +"Project-Id-Version: sudo 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2022-10-09 09:48-0600\n" -"PO-Revision-Date: 2023-01-01 15:34-0500\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-11 19:33-0400\n" "Last-Translator: Keith Bowes \n" "Language-Team: Esperanto \n" "Language: eo\n" @@ -33,74 +33,77 @@ 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:219 -#: lib/util/sudo_conf.c:305 lib/util/sudo_conf.c:382 lib/util/sudo_conf.c:666 -#: src/conversation.c:80 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:205 src/exec_monitor.c:458 -#: 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:236 -#: src/exec_nopty.c:243 src/exec_nopty.c:250 src/exec_nopty.c:257 -#: src/exec_nopty.c:264 src/exec_nopty.c:271 src/exec_nopty.c:278 -#: src/exec_nopty.c:285 src/exec_nopty.c:292 src/exec_nopty.c:299 -#: src/exec_nopty.c:306 src/exec_nopty.c:314 src/exec_nopty.c:322 -#: src/exec_nopty.c:732 src/exec_preload.c:341 src/exec_ptrace.c:474 -#: src/exec_ptrace.c:767 src/exec_ptrace.c:982 src/exec_ptrace.c:1094 -#: src/exec_ptrace.c:1269 src/exec_ptrace.c:1611 src/exec_ptrace.c:1638 -#: src/exec_pty.c:506 src/exec_pty.c:687 src/exec_pty.c:873 src/exec_pty.c:882 -#: src/exec_pty.c:889 src/exec_pty.c:896 src/exec_pty.c:903 src/exec_pty.c:910 -#: src/exec_pty.c:917 src/exec_pty.c:924 src/exec_pty.c:931 src/exec_pty.c:938 -#: src/exec_pty.c:945 src/exec_pty.c:953 src/load_plugins.c:157 -#: src/load_plugins.c:182 src/load_plugins.c:218 src/load_plugins.c:451 -#: src/load_plugins.c:457 src/parse_args.c:172 src/parse_args.c:193 -#: src/parse_args.c:267 src/parse_args.c:623 src/parse_args.c:645 -#: src/parse_args.c:670 src/preserve_fds.c:46 src/preserve_fds.c:131 -#: src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 src/selinux.c:489 -#: src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 src/sesh.c:246 -#: src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:639 src/sudo.c:704 -#: src/sudo.c:714 src/sudo.c:741 src/sudo.c:764 src/sudo.c:773 src/sudo.c:782 -#: src/sudo.c:799 src/sudo.c:841 src/sudo.c:851 src/sudo.c:884 src/sudo.c:1112 -#: src/sudo.c:1133 src/sudo.c:1426 src/sudo.c:1595 src/sudo.c:1822 -#: src/sudo.c:2156 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 -#: src/sudo_edit.c:438 src/sudo_edit.c:538 src/sudo_edit.c:545 -#: src/sudo_edit.c:673 src/sudo_edit.c:693 src/sudo_intercept_common.c:115 +#: lib/util/json.c:55 lib/util/json.c:197 lib/util/sudo_conf.c:215 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:78 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:171 src/exec_monitor.c:418 +#: src/exec_monitor.c:424 src/exec_monitor.c:432 src/exec_monitor.c:440 +#: src/exec_monitor.c:447 src/exec_monitor.c:454 src/exec_monitor.c:461 +#: src/exec_monitor.c:468 src/exec_monitor.c:475 src/exec_monitor.c:482 +#: src/exec_monitor.c:489 src/exec_nopty.c:231 src/exec_nopty.c:240 +#: 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:318 src/exec_nopty.c:326 +#: src/exec_nopty.c:744 src/exec_preload.c:343 src/exec_ptrace.c:475 +#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1096 +#: src/exec_ptrace.c:1271 src/exec_ptrace.c:1624 src/exec_ptrace.c:1651 +#: src/exec_ptrace.c:1841 src/exec_pty.c:581 src/exec_pty.c:765 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:193 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 +#: src/sesh.c:246 src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:644 +#: src/sudo.c:709 src/sudo.c:719 src/sudo.c:746 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:787 src/sudo.c:805 src/sudo.c:846 src/sudo.c:855 src/sudo.c:865 +#: src/sudo.c:898 src/sudo.c:1127 src/sudo.c:1148 src/sudo.c:1441 +#: src/sudo.c:1610 src/sudo.c:1837 src/sudo.c:2171 src/sudo_edit.c:89 +#: src/sudo_edit.c:149 src/sudo_edit.c:430 src/sudo_edit.c:439 +#: src/sudo_edit.c:540 src/sudo_edit.c:547 src/sudo_edit.c:692 +#: src/sudo_edit.c:712 src/sudo_intercept_common.c:115 #: src/sudo_intercept_common.c:340 #, 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/regex.c:113 lib/util/regex.c:121 -#: lib/util/sudo_conf.c:220 lib/util/sudo_conf.c:305 lib/util/sudo_conf.c:382 -#: lib/util/sudo_conf.c:666 src/conversation.c:81 src/exec_intercept.c:111 -#: src/exec_intercept.c:344 src/exec_intercept.c:504 src/exec_intercept.c:566 -#: src/exec_intercept.c:682 src/exec_intercept.c:806 src/exec_iolog.c:124 -#: src/exec_iolog.c:135 src/exec_iolog.c:212 src/exec_monitor.c:458 -#: 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:236 -#: src/exec_nopty.c:243 src/exec_nopty.c:250 src/exec_nopty.c:257 -#: src/exec_nopty.c:264 src/exec_nopty.c:271 src/exec_nopty.c:278 -#: src/exec_nopty.c:285 src/exec_nopty.c:292 src/exec_nopty.c:299 -#: src/exec_nopty.c:306 src/exec_nopty.c:314 src/exec_nopty.c:322 -#: src/exec_preload.c:341 src/exec_ptrace.c:474 src/exec_ptrace.c:767 -#: src/exec_ptrace.c:982 src/exec_ptrace.c:1638 src/exec_pty.c:506 -#: src/exec_pty.c:873 src/exec_pty.c:882 src/exec_pty.c:889 src/exec_pty.c:896 -#: src/exec_pty.c:903 src/exec_pty.c:910 src/exec_pty.c:917 src/exec_pty.c:924 -#: src/exec_pty.c:931 src/exec_pty.c:938 src/exec_pty.c:945 src/exec_pty.c:953 -#: src/load_plugins.c:157 src/load_plugins.c:182 src/load_plugins.c:218 -#: src/load_plugins.c:451 src/load_plugins.c:457 src/parse_args.c:172 -#: src/parse_args.c:194 src/parse_args.c:267 src/parse_args.c:623 -#: src/parse_args.c:645 src/parse_args.c:670 src/preserve_fds.c:46 +#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:56 +#: lib/util/json.c:198 lib/util/regex.c:173 lib/util/sudo_conf.c:216 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:79 src/exec_intercept.c:111 src/exec_intercept.c:350 +#: src/exec_intercept.c:525 src/exec_intercept.c:589 src/exec_intercept.c:713 +#: src/exec_intercept.c:837 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:418 src/exec_monitor.c:424 +#: src/exec_monitor.c:432 src/exec_monitor.c:440 src/exec_monitor.c:447 +#: src/exec_monitor.c:454 src/exec_monitor.c:461 src/exec_monitor.c:468 +#: src/exec_monitor.c:475 src/exec_monitor.c:482 src/exec_monitor.c:489 +#: src/exec_nopty.c:231 src/exec_nopty.c:240 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:318 src/exec_nopty.c:326 src/exec_preload.c:343 +#: src/exec_ptrace.c:475 src/exec_ptrace.c:768 src/exec_ptrace.c:983 +#: src/exec_ptrace.c:1651 src/exec_ptrace.c:1842 src/exec_pty.c:581 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:194 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 #: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 #: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:471 -#: src/sudo.c:230 src/sudo.c:639 src/sudo.c:884 src/sudo.c:1112 -#: src/sudo.c:1133 src/sudo.c:1426 src/sudo.c:1595 src/sudo.c:1822 -#: src/sudo.c:2156 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 -#: src/sudo_edit.c:438 src/sudo_edit.c:538 src/sudo_edit.c:545 -#: src/sudo_edit.c:673 src/sudo_edit.c:693 src/sudo_intercept_common.c:115 +#: src/sudo.c:228 src/sudo.c:644 src/sudo.c:898 src/sudo.c:1127 +#: src/sudo.c:1148 src/sudo.c:1441 src/sudo.c:1610 src/sudo.c:1837 +#: src/sudo.c:2171 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:430 +#: src/sudo_edit.c:439 src/sudo_edit.c:540 src/sudo_edit.c:547 +#: src/sudo_edit.c:692 src/sudo_edit.c:712 src/sudo_intercept_common.c:115 #: src/sudo_intercept_common.c:340 msgid "unable to allocate memory" msgstr "ne eblas generi memoron" @@ -115,9 +118,9 @@ msgid "%.*s exists but is not a directory (0%o)" msgstr "%.*s ekzistas sed ne estas dosierujo (0%o)" -#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:677 -#: lib/util/sudo_conf.c:689 lib/util/sudo_conf.c:715 src/selinux.c:235 -#: src/selinux.c:265 src/sudo.c:371 src/sudo_edit.c:494 src/sudo_edit.c:557 +#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:664 +#: lib/util/sudo_conf.c:683 lib/util/sudo_conf.c:710 src/selinux.c:235 +#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:495 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "ne eblas malfermi %s" @@ -132,7 +135,7 @@ msgid "unable to open %.*s" msgstr "ne eblas malfermi %.*s" -#: lib/util/regex.c:103 +#: lib/util/regex.c:163 msgid "regular expression too large" msgstr "regulesprimo tra grandas" @@ -153,42 +156,42 @@ msgid "value too small" msgstr "valoro tro malgrandas" -#: lib/util/sudo_conf.c:238 +#: lib/util/sudo_conf.c:234 #, 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:404 lib/util/sudo_conf.c:420 lib/util/sudo_conf.c:473 +#: lib/util/sudo_conf.c:400 lib/util/sudo_conf.c:453 #, 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:441 +#: lib/util/sudo_conf.c:421 #, 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:457 +#: lib/util/sudo_conf.c:437 #, 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:692 +#: lib/util/sudo_conf.c:686 #, c-format msgid "%s is not a regular file" msgstr "%s estas ne regula dosiero" -#: lib/util/sudo_conf.c:695 src/copy_file.c:164 +#: lib/util/sudo_conf.c:689 src/copy_file.c:164 #, 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:699 +#: lib/util/sudo_conf.c:693 #, c-format msgid "%s is world writable" msgstr "%s estas skribebla de ĉiuj" -#: lib/util/sudo_conf.c:702 +#: lib/util/sudo_conf.c:696 #, c-format msgid "%s is group writable" msgstr "%s estas skribebla de la tuta grupo" @@ -237,7 +240,7 @@ msgid "%s: bad file mode: 0%o" msgstr "%s: malbona dosiera reĝimo: 0%o" -#: src/edit_open.c:331 +#: src/edit_open.c:333 msgid "unable to restore current working directory" msgstr "ne eblas restarigi nune kurantan dosierujon" @@ -282,18 +285,18 @@ msgid "starting from %s" msgstr "komenciĝas de %s" -#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:567 src/exec_monitor.c:569 -#: src/exec_pty.c:225 src/exec_pty.c:1017 src/exec_pty.c:1019 src/signal.c:144 -#: src/signal.c:151 src/signal.c:165 src/suspend_nopty.c:93 +#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:552 src/exec_monitor.c:554 +#: src/exec_pty.c:1122 src/exec_pty.c:1124 src/signal.c:144 src/signal.c:151 +#: src/signal.c:165 src/suspend_parent.c:143 #, c-format msgid "unable to set handler for signal %d" msgstr "ne eblas difini traktilon por la signalo %d" -#: src/exec.c:422 +#: src/exec.c:424 msgid "intercept mode is not supported with SELinux RBAC on this system" msgstr "interkapta reĝo ne estas regata kun SELinux-RABC en ĉi tiu sistemo" -#: src/exec.c:427 +#: src/exec.c:429 msgid "unable to log sub-commands with SELinux RBAC on this system" msgstr "ne eblas protokoli subkomandojn kun SELinux-RBAC en ĉi tiu sistemo" @@ -301,250 +304,258 @@ msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "ne eblas forigi PRIV_PROC_EXEC-on de PRIV_LIMIT" -#: src/exec_intercept.c:70 src/exec_iolog.c:165 src/exec_iolog.c:175 -#: src/exec_iolog.c:220 src/exec_iolog.c:227 src/exec_iolog.c:254 -#: src/exec_monitor.c:466 src/exec_monitor.c:474 src/exec_monitor.c:482 -#: src/exec_monitor.c:489 src/exec_monitor.c:496 src/exec_monitor.c:503 -#: src/exec_monitor.c:510 src/exec_monitor.c:517 src/exec_monitor.c:524 -#: src/exec_monitor.c:531 src/exec_nopty.c:229 src/exec_nopty.c:238 -#: 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:316 src/exec_nopty.c:324 -#: src/exec_nopty.c:383 src/exec_nopty.c:449 src/exec_pty.c:355 -#: src/exec_pty.c:457 src/exec_pty.c:512 src/exec_pty.c:875 src/exec_pty.c:884 -#: src/exec_pty.c:891 src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 -#: src/exec_pty.c:919 src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 -#: src/exec_pty.c:947 +#: src/exec_intercept.c:70 src/exec_iolog.c:163 src/exec_iolog.c:173 +#: src/exec_iolog.c:218 src/exec_iolog.c:225 src/exec_iolog.c:252 +#: src/exec_monitor.c:426 src/exec_monitor.c:434 src/exec_monitor.c:442 +#: src/exec_monitor.c:449 src/exec_monitor.c:456 src/exec_monitor.c:463 +#: src/exec_monitor.c:470 src/exec_monitor.c:477 src/exec_monitor.c:484 +#: src/exec_monitor.c:491 src/exec_nopty.c:233 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:305 +#: src/exec_nopty.c:312 src/exec_nopty.c:320 src/exec_nopty.c:328 +#: src/exec_nopty.c:387 src/exec_nopty.c:457 src/exec_pty.c:432 +#: src/exec_pty.c:537 src/exec_pty.c:587 src/exec_pty.c:965 src/exec_pty.c:974 +#: src/exec_pty.c:981 src/exec_pty.c:988 src/exec_pty.c:995 +#: src/exec_pty.c:1002 src/exec_pty.c:1009 src/exec_pty.c:1016 +#: src/exec_pty.c:1023 src/exec_pty.c:1030 src/exec_pty.c:1037 +#: src/exec_pty.c:1044 msgid "unable to add event to queue" msgstr "ne eblas aldoni al la atendovico eventon" -#: src/exec_intercept.c:317 src/sudo.c:1018 +#: src/exec_intercept.c:323 src/sudo.c:1033 msgid "command not set by the security policy" msgstr "komando ne agordita per la sekureco-regularo" -#: src/exec_intercept.c:393 src/exec_intercept.c:421 src/sudo.c:1238 -#: src/sudo.c:1283 src/sudo.c:1327 +#: src/exec_intercept.c:401 src/exec_intercept.c:441 src/sudo.c:1253 +#: src/sudo.c:1298 src/sudo.c:1342 msgid "command rejected by policy" msgstr "komando rifuzita pro konduto-regularo" -#: src/exec_intercept.c:491 src/sudo.c:1925 +#: src/exec_intercept.c:512 src/sudo.c:1940 msgid "approval plugin error" msgstr "eraro de aproba kromprogramo" -#: src/exec_intercept.c:508 src/sudo.c:1243 src/sudo.c:1288 src/sudo.c:1332 -#: src/sudo.c:1406 +#: src/exec_intercept.c:537 src/sudo.c:1258 src/sudo.c:1303 src/sudo.c:1347 +#: src/sudo.c:1421 msgid "policy plugin error" msgstr "eraro de konduta kromprogramo" -#: src/exec_intercept.c:543 +#: src/exec_intercept.c:566 msgid "invalid PolicyCheckRequest" msgstr "nevalida PolicyCheckRequest" -#: src/exec_intercept.c:678 +#: src/exec_intercept.c:709 #, c-format msgid "client request too large: %zu" msgstr "klienta peto tro granda: %zu" -#: src/exec_intercept.c:720 +#: src/exec_intercept.c:751 #, c-format msgid "unable to unpack %s size %zu" msgstr "ne eblas malpaki %s, grando %zu" -#: src/exec_intercept.c:768 +#: src/exec_intercept.c:799 #, 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:794 +#: src/exec_intercept.c:825 #, c-format msgid "server message too large: %zu" msgstr "servila mesaĝo tro granda: %zu" -#: src/exec_iolog.c:323 src/exec_iolog.c:363 src/exec_iolog.c:403 -#: src/exec_iolog.c:454 src/exec_iolog.c:505 +#: src/exec_iolog.c:321 src/exec_iolog.c:361 src/exec_iolog.c:401 +#: src/exec_iolog.c:452 src/exec_iolog.c:503 msgid "I/O plugin error" msgstr "En/eliga kromprograma eraro" -#: src/exec_iolog.c:327 src/exec_iolog.c:367 src/exec_iolog.c:407 -#: src/exec_iolog.c:458 src/exec_iolog.c:509 +#: src/exec_iolog.c:325 src/exec_iolog.c:365 src/exec_iolog.c:405 +#: src/exec_iolog.c:456 src/exec_iolog.c:507 msgid "command rejected by I/O plugin" msgstr "komando rifuzita de en/eliga kromprogramo" -#: src/exec_iolog.c:556 +#: src/exec_iolog.c:555 msgid "error logging suspend" msgstr "ni paŭzas la protokoladon de eraroj" -#: src/exec_iolog.c:591 +#: src/exec_iolog.c:590 msgid "error changing window size" msgstr "eraro dum ŝanĝo de fenestro-grando" -#: src/exec_monitor.c:360 +#: src/exec_monitor.c:328 msgid "error reading from socketpair" msgstr "eraro dum legi la konektingan paron" -#: src/exec_monitor.c:377 +#: src/exec_monitor.c:340 #, c-format msgid "unexpected reply type on backchannel: %d" msgstr "neatendita respondotipo ĉe la postkanalo: %d" -#: src/exec_monitor.c:585 +#: src/exec_monitor.c:566 msgid "unable to set controlling tty" msgstr "ne eblas elekti la regan tty-on" -#: src/exec_monitor.c:593 src/exec_nopty.c:494 src/exec_nopty.c:504 -#: src/exec_nopty.c:514 src/exec_nopty.c:548 src/exec_pty.c:1088 -#: src/exec_pty.c:1109 src/exec_pty.c:1129 src/tgetpass.c:305 +#: src/exec_monitor.c:574 src/exec_nopty.c:504 src/exec_nopty.c:514 +#: src/exec_nopty.c:524 src/exec_nopty.c:560 src/exec_pty.c:1195 +#: src/exec_pty.c:1222 src/exec_pty.c:1242 src/exec_pty.c:1262 +#: src/tgetpass.c:306 msgid "unable to create pipe" msgstr "ne eblas krei tubon" -#: src/exec_monitor.c:603 +#: src/exec_monitor.c:584 msgid "unable to receive message from parent" msgstr "ne eblas ricevi mesaĝon el supre" -#: src/exec_monitor.c:619 src/exec_nopty.c:591 src/exec_pty.c:1167 -#: src/sudo_edit.c:361 src/tgetpass.c:309 +#: src/exec_monitor.c:600 src/exec_nopty.c:603 src/exec_pty.c:1303 +#: src/sudo_edit.c:361 src/tgetpass.c:310 msgid "unable to fork" msgstr "ne eblas forki" -#: src/exec_monitor.c:623 src/exec_monitor.c:721 src/exec_nopty.c:696 +#: src/exec_monitor.c:604 src/exec_monitor.c:700 src/exec_nopty.c:708 msgid "unable to restore tty label" msgstr "ne eblis reatingi tty-etikedon" -#: src/exec_monitor.c:636 src/sesh.c:217 src/sudo.c:1189 +#: src/exec_monitor.c:615 src/sesh.c:217 src/sudo.c:1204 #, c-format msgid "unable to execute %s" msgstr "ne eblas plenumigi: %s" -#: src/exec_nopty.c:542 src/exec_pty.c:1026 +#: src/exec_nopty.c:554 src/exec_pty.c:1131 msgid "policy plugin failed session initialization" msgstr "konduta kromprogramo fiaskis dum seanca komenciĝo" -#: src/exec_nopty.c:557 src/exec_pty.c:995 src/exec_pty.c:1004 +#: src/exec_nopty.c:569 src/exec_pty.c:1100 src/exec_pty.c:1109 msgid "unable to create sockets" msgstr "ne eblas krei konektingojn" -#: src/exec_nopty.c:684 src/exec_pty.c:1265 +#: src/exec_nopty.c:696 src/exec_pty.c:1406 msgid "error in event loop" msgstr "eraro en la eventa iteracio" -#: src/exec_preload.c:165 src/net_ifs.c:206 src/net_ifs.c:372 -#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:851 src/sudo.c:486 +#: src/exec_preload.c:167 src/net_ifs.c:206 src/net_ifs.c:372 +#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:852 src/sudo.c:488 #: src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "interna eraro, superfluo en %s" -#: src/exec_ptrace.c:1078 src/exec_ptrace.c:1103 src/exec_ptrace.c:1909 +#: src/exec_ptrace.c:1080 src/exec_ptrace.c:1105 src/exec_ptrace.c:1925 #, c-format msgid "unable to set registers for process %d" msgstr "ne eblas ŝanĝi registrejojn por procezo %d" -#: src/exec_ptrace.c:1098 src/exec_ptrace.c:1273 src/exec_ptrace.c:1615 +#: src/exec_ptrace.c:1100 src/exec_ptrace.c:1275 src/exec_ptrace.c:1628 #, c-format msgid "process %d exited unexpectedly" msgstr "procezo %d neatendite finiĝis" -#: src/exec_ptrace.c:1207 +#: src/exec_ptrace.c:1209 msgid "unable to set seccomp filter" msgstr "ne eblas elekti seccomp-filtrilon" -#: src/exec_ptrace.c:1404 +#: src/exec_ptrace.c:1406 #, c-format msgid "interpreter argument , expected \"%s\", got \"%s\"" msgstr "interpretila argumento , atendita \"%s\", ricevita \"%s\"" -#: src/exec_ptrace.c:1503 +#: src/exec_ptrace.c:1505 #, c-format msgid "pathname mismatch, expected \"%s\", got \"%s\"" msgstr "vojnomo malkongruaĵo, atendita \"%s\", ricevita \"%s\"" -#: src/exec_ptrace.c:1512 src/exec_ptrace.c:1519 src/exec_ptrace.c:1532 -#: src/exec_ptrace.c:1540 src/exec_ptrace.c:1546 src/exec_ptrace.c:1552 +#: src/exec_ptrace.c:1514 src/exec_ptrace.c:1521 src/exec_ptrace.c:1545 +#: src/exec_ptrace.c:1553 src/exec_ptrace.c:1559 src/exec_ptrace.c:1565 #, c-format msgid "%s[%d] mismatch, expected \"%s\", got \"%s\"" msgstr "%s[%d] malkongruaĵo, atendita \"%s\", ricevita \"%s\"" -#: src/exec_ptrace.c:1619 +#: src/exec_ptrace.c:1632 #, c-format msgid "process %d unexpected status 0x%x" msgstr "procezo %d neatendita stato 0x%x" -#: src/exec_ptrace.c:1711 +#: src/exec_ptrace.c:1723 #, c-format msgid "unable to get event message for process %d" msgstr "ne eblas atingi eventan mesaĝon por procezo %d" -#: src/exec_ptrace.c:1718 +#: src/exec_ptrace.c:1730 #, c-format msgid "unable to get registers for process %d" msgstr "ne eblas atingi registrejojn por procezo %d" -#: src/exec_pty.c:103 +#: src/exec_pty.c:84 msgid "unable to allocate pty" msgstr "ne eblis generi pty-on" -#: src/exec_pty.c:263 src/signal.c:101 src/suspend_nopty.c:99 +#: src/exec_pty.c:131 src/exec_pty.c:284 src/tgetpass.c:251 +msgid "unable to restore terminal settings" +msgstr "ne eblas restarigi terminalan agordon" + +#: src/exec_pty.c:243 +msgid "unable to set handler for SIGCONT" +msgstr "ne eblas difini traktilon por la signalo SIGCONT" + +#: src/exec_pty.c:293 #, c-format -msgid "unable to restore handler for signal %d" -msgstr "ne eblas restarigi traktilon por la signalo %d" +msgid "unable to set handler for SIG%s" +msgstr "ne eblas difini traktilon por la signalo SIG%s" -#: src/exec_pty.c:1213 +#: src/exec_pty.c:317 +#, c-format +msgid "unable to restore handler for SIG%s" +msgstr "ne eblas restarigi traktilon por la signalo SIG%s" + +#: src/exec_pty.c:345 +msgid "unable to restore handler for SIGCONT" +msgstr "ne eblas restarigi traktilon por la signalo SIGCONT" + +#: src/exec_pty.c:1353 msgid "unable to send message to monitor process" msgstr "ne eblas sendi mesaĝon al observa procezo" -#: src/load_plugins.c:109 src/load_plugins.c:123 src/load_plugins.c:129 -#: src/load_plugins.c:279 src/load_plugins.c:289 src/load_plugins.c:299 -#: src/load_plugins.c:346 +#: src/load_plugins.c:75 src/load_plugins.c:222 src/load_plugins.c:232 +#: src/load_plugins.c:242 src/load_plugins.c:289 #, 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:125 -#, c-format -msgid "%s must be owned by uid %d" -msgstr "%s devas esti estrita de uid %d" - -#: src/load_plugins.c:131 -#, c-format -msgid "%s must be only be writable by owner" -msgstr "%s estas skribebla nur de estro" - -#: src/load_plugins.c:243 src/load_plugins.c:314 +#: src/load_plugins.c:186 src/load_plugins.c:257 #, 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:281 +#: src/load_plugins.c:224 #, c-format msgid "unable to load %s: %s" msgstr "maleblas ŝarĝi je %s: %s" -#: src/load_plugins.c:291 +#: src/load_plugins.c:234 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "ne eblas trovi simbolon \"%s\" en %s" -#: src/load_plugins.c:301 +#: src/load_plugins.c:244 #, 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:319 +#: src/load_plugins.c:262 #, 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:322 +#: src/load_plugins.c:265 msgid "only a single policy plugin may be specified" msgstr "nur unu konduta kromprogramo povas esti indikata" -#: src/load_plugins.c:348 +#: src/load_plugins.c:291 #, c-format msgid "unknown plugin type %d found in %s" msgstr "nekonata kromprograma tipo %d trovita en %s" -#: src/load_plugins.c:531 +#: src/load_plugins.c:474 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "konduta kromprogramo %s ne inkluzivas la metodon check_policy" @@ -554,47 +565,47 @@ msgid "invalid environment variable name: %s" msgstr "malvalida medivariabla nomo: %s" -#: src/parse_args.c:317 +#: src/parse_args.c:319 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:554 +#: src/parse_args.c:556 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:559 +#: src/parse_args.c:561 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:569 +#: src/parse_args.c:571 msgid "the -E option is not valid in edit mode" msgstr "la parametro -E ne validas en redakta reĝimo" -#: src/parse_args.c:572 +#: src/parse_args.c:574 msgid "you may not specify environment variables in edit mode" msgstr "vi ne rajtas specifi medivariablojn en redakta reĝimo" -#: src/parse_args.c:582 +#: src/parse_args.c:584 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:586 +#: src/parse_args.c:588 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:684 +#: src/parse_args.c:686 msgid "sudoedit is not supported on this platform" msgstr "sudoedit ne estas havebla en ĉi tiu platformon" -#: src/parse_args.c:767 +#: src/parse_args.c:744 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:780 +#: src/parse_args.c:757 msgid "Only one of the -K, -k or -N options may be specified" msgstr "Vi rajtas specifi nur unu el -K, -k aŭ -N" -#: src/parse_args.c:796 +#: src/parse_args.c:778 #, c-format msgid "" "%s - edit files as another user\n" @@ -603,7 +614,7 @@ "%s - redakti dosierojn kiel alia uzanto\n" "\n" -#: src/parse_args.c:798 +#: src/parse_args.c:780 #, c-format msgid "" "%s - execute a command as another user\n" @@ -612,7 +623,7 @@ "%s - plenumigi komandon kiel alia uzanto\n" "\n" -#: src/parse_args.c:804 +#: src/parse_args.c:785 msgid "" "\n" "Options:\n" @@ -620,131 +631,131 @@ "\n" "Parametroj:\n" -#: src/parse_args.c:806 +#: src/parse_args.c:787 msgid "use a helper program for password prompting" msgstr "uzi helpoprogrogramon por pasvortilo" -#: src/parse_args.c:809 +#: src/parse_args.c:790 msgid "use specified BSD authentication type" msgstr "uzi specifitan BSD-konstatan tipon" -#: src/parse_args.c:813 +#: src/parse_args.c:794 msgid "run command in the background" msgstr "plenumigi komandon fone" -#: src/parse_args.c:816 +#: src/parse_args.c:797 msgid "ring bell when prompting" msgstr "sonigi pepon kiam invitanta" -#: src/parse_args.c:818 +#: src/parse_args.c:799 msgid "close all file descriptors >= num" msgstr "fermi ĉiujn dosierpriskribilojn >= numeron" -#: src/parse_args.c:821 +#: src/parse_args.c:802 msgid "run command with the specified BSD login class" msgstr "plenumigi komandon per specifita BSD-ensaluta klaso" -#: src/parse_args.c:824 +#: src/parse_args.c:805 msgid "change the working directory before running command" msgstr "ŝanĝu la kurantan dosierujon antaŭ plenumi komandon" -#: src/parse_args.c:827 +#: src/parse_args.c:808 msgid "preserve user environment when running command" msgstr "konservi uzanto-medivariablojn dum plenumigi komandon" -#: src/parse_args.c:829 +#: src/parse_args.c:810 msgid "preserve specific environment variables" msgstr "konservi specifajn medivariablojn" -#: src/parse_args.c:831 +#: src/parse_args.c:812 msgid "edit files instead of running a command" msgstr "redakti dosierojn anstataŭ plenumigi komandon" -#: src/parse_args.c:834 +#: src/parse_args.c:815 msgid "run command as the specified group name or ID" msgstr "plenumigi komandon kiel la specifitan grupnomon aŭ identigilon" -#: src/parse_args.c:837 +#: src/parse_args.c:818 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:840 +#: src/parse_args.c:821 msgid "display help message and exit" msgstr "elmontri helpan mesaĝon kaj eliri" -#: src/parse_args.c:842 +#: src/parse_args.c:823 msgid "run command on host (if supported by plugin)" msgstr "plenumigi komandon en gastiganto (se permesata de kromprogramo)" -#: src/parse_args.c:845 +#: src/parse_args.c:826 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:847 +#: src/parse_args.c:828 msgid "remove timestamp file completely" msgstr "tute forigi tempo-indikilan dosieron" -#: src/parse_args.c:850 +#: src/parse_args.c:831 msgid "invalidate timestamp file" msgstr "eksvalidigi tempo-indikilan dosieron" -#: src/parse_args.c:853 +#: src/parse_args.c:834 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:856 +#: src/parse_args.c:837 msgid "non-interactive mode, no prompts are used" msgstr "neinteraga reĝimo, ne demandos al uzanto" -#: src/parse_args.c:859 +#: src/parse_args.c:840 msgid "preserve group vector instead of setting to target's" msgstr "konservi grupan vektoron anstataŭ elekti celan" -#: src/parse_args.c:862 +#: src/parse_args.c:843 msgid "use the specified password prompt" msgstr "uzi specifitan pasvortilon" -#: src/parse_args.c:864 +#: src/parse_args.c:845 msgid "change the root directory before running command" msgstr "ŝanĝu la radikan dosierujon antaŭ ol plenumigi komandon" -#: src/parse_args.c:867 +#: src/parse_args.c:848 msgid "create SELinux security context with specified role" msgstr "krei SELinux-sekurecan kuntekston kun specifita rolo" -#: src/parse_args.c:870 +#: src/parse_args.c:851 msgid "read password from standard input" msgstr "legi pasvorton el norma enigo" -#: src/parse_args.c:873 +#: src/parse_args.c:854 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:877 +#: src/parse_args.c:858 msgid "create SELinux security context with specified type" msgstr "krei SELinux-sekurecan kuntekston kun specifita rolo" -#: src/parse_args.c:880 +#: src/parse_args.c:861 msgid "terminate command after the specified time limit" msgstr "finigi la komandon post la specifita tempolimo" -#: src/parse_args.c:883 +#: src/parse_args.c:864 msgid "in list mode, display privileges for user" msgstr "en lista reĝimo elmontri privilegiojn por uzanto" -#: src/parse_args.c:886 +#: src/parse_args.c:867 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:888 +#: src/parse_args.c:869 msgid "display version information and exit" msgstr "elmontri eldonan informon kaj eliri" -#: src/parse_args.c:891 +#: src/parse_args.c:872 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:894 +#: src/parse_args.c:875 msgid "stop processing command line arguments" msgstr "ĉesigi procedi komandliniajn parametrojn" @@ -888,6 +899,11 @@ msgid "unable to save handler for signal %d" msgstr "ne eblas konservi traktilon por la signalo %d" +#: src/signal.c:101 src/suspend_parent.c:149 +#, c-format +msgid "unable to restore handler for signal %d" +msgstr "ne eblas restarigi traktilon por la signalo %d" + #: src/solaris.c:72 msgid "resource control limit has been reached" msgstr "rimedo-rega limigo estis atingita" @@ -931,151 +947,151 @@ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "averto, rimedo-rega asigno malsukcesis por projekto \"%s\"" -#: src/sudo.c:216 +#: src/sudo.c:214 #, c-format msgid "Sudo version %s\n" msgstr "Sudo: eldono %s\n" -#: src/sudo.c:218 +#: src/sudo.c:216 #, c-format msgid "Configure options: %s\n" msgstr "Muntaj parametroj: %s\n" -#: src/sudo.c:226 +#: src/sudo.c:224 msgid "fatal error, unable to load plugins" msgstr "ĉesiga eraro: ne eblas ŝargi kromprogramojn" -#: src/sudo.c:272 +#: src/sudo.c:270 msgid "plugin did not return a command to execute" msgstr "kromprogramo ne liveris komandon por plenumi" -#: src/sudo.c:305 +#: src/sudo.c:306 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "neatendita sudo-reĝimon 0x%x" -#: src/sudo.c:553 +#: src/sudo.c:559 #, c-format msgid "you do not exist in the %s database" msgstr "vi ne ekzistas en la datumbazo %s" -#: src/sudo.c:610 +#: src/sudo.c:616 msgid "unable to determine tty" msgstr "ne eblas determini tty-on" -#: src/sudo.c:918 +#: src/sudo.c:932 msgid "The \"no new privileges\" flag is set, which prevents sudo from running as root." msgstr "La flago \"neniuj novaj privilegioj\" estas agordita. Tio malhelpas al sudo plenumigi kiel la ĉefuzanto." -#: src/sudo.c:920 +#: src/sudo.c:934 msgid "If sudo is running in a container, you may need to adjust the container configuration to disable the flag." msgstr "Se sudo plenumiĝas en ujo, vi eble devas alĝustigi la ujan agordo por malŝalti la flagon." -#: src/sudo.c:954 +#: src/sudo.c:968 #, 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:957 +#: src/sudo.c:971 #, 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:963 +#: src/sudo.c:977 #, 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:979 src/tgetpass.c:331 +#: src/sudo.c:993 src/tgetpass.c:332 msgid "unable to set supplementary group IDs" msgstr "ne eblas elekti suplementajn grupajn identigilojn" -#: src/sudo.c:986 +#: src/sudo.c:1000 #, 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:992 +#: src/sudo.c:1006 #, 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:1022 +#: src/sudo.c:1037 msgid "argv not set by the security policy" msgstr "argv ne agordita per la sekureco-regularo" -#: src/sudo.c:1026 +#: src/sudo.c:1041 msgid "envp not set by the security policy" msgstr "envp ne agordita per la sekureco-regularo" -#: src/sudo.c:1048 +#: src/sudo.c:1063 #, c-format msgid "unexpected child termination condition: %d" msgstr "neatendita ido finiĝis laŭ la kondiĉo: %d" -#: src/sudo.c:1161 +#: src/sudo.c:1176 msgid "unable to initialize policy plugin" msgstr "ne eblas komenci konduktan kromprogramon" -#: src/sudo.c:1223 +#: src/sudo.c:1238 #, 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:1269 +#: src/sudo.c:1284 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "konduta kromprogramo %s ne komprenas listigon de privilegioj" -#: src/sudo.c:1313 +#: src/sudo.c:1328 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "konduta kromprogramo %s ne komprenas la parametron -v" -#: src/sudo.c:1351 +#: src/sudo.c:1366 #, 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:1480 +#: src/sudo.c:1495 #, c-format msgid "error initializing I/O plugin %s" msgstr "eraro dum lanĉo de eneliga kromprogramo %s" -#: src/sudo.c:1483 +#: src/sudo.c:1498 msgid "error initializing I/O plugin" msgstr "eraro dum lanĉo de eneliga kromprogramo" -#: src/sudo.c:1632 +#: src/sudo.c:1647 #, c-format msgid "error initializing audit plugin %s" msgstr "eraro dum lanĉo de ekzamena kromprogramo %s" -#: src/sudo.c:1711 +#: src/sudo.c:1726 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%smaleblas protokoli eraro-eventon%s%s" -#: src/sudo.c:1747 +#: src/sudo.c:1762 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: maleblas protokoli akcepto-eventon%s%s" -#: src/sudo.c:1752 src/sudo.c:1790 +#: src/sudo.c:1767 src/sudo.c:1805 msgid "audit plugin error" msgstr "Kontrolo-kromprograma eraro" -#: src/sudo.c:1785 +#: src/sudo.c:1800 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: neeblas protokoli malakcepto-eventon%s%s" -#: src/sudo.c:1845 +#: src/sudo.c:1860 #, c-format msgid "error initializing approval plugin %s" msgstr "eraro dum lanĉo de aproba kromprogramo %s" -#: src/sudo.c:1915 +#: src/sudo.c:1930 msgid "command rejected by approver" msgstr "komando rifuzita de aprobanto" @@ -1083,51 +1099,55 @@ msgid "no writable temporary directory found" msgstr "neniu skribebla provizora dosierujo estis trovata" -#: src/sudo_edit.c:291 +#: src/sudo_edit.c:292 #, c-format msgid "%s left unmodified" msgstr "%s restas ne modifita" -#: src/sudo_edit.c:304 src/sudo_edit.c:569 +#: src/sudo_edit.c:305 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s ne ŝanĝita" -#: src/sudo_edit.c:481 +#: src/sudo_edit.c:482 msgid "sesh: internal error: odd number of paths" msgstr "sesh: interna eraro: malpara nombro da vojoj" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:484 msgid "sesh: unable to create temporary files" msgstr "sesh: ne eblas krei provizorajn dosierojn" -#: src/sudo_edit.c:485 src/sudo_edit.c:604 +#: src/sudo_edit.c:486 src/sudo_edit.c:606 msgid "sesh: killed by a signal" msgstr "sesh: mortigita de signalo" -#: src/sudo_edit.c:487 src/sudo_edit.c:607 +#: src/sudo_edit.c:488 src/sudo_edit.c:609 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: nekonata eraro %d" -#: src/sudo_edit.c:597 +#: src/sudo_edit.c:599 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:601 +#: src/sudo_edit.c:603 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:650 #, 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:664 +msgid "plugin error: invalid file list for sudoedit" +msgstr "kromprograma eraro: malvalida dosieran liston por sudoedit" + +#: src/sudo_edit.c:685 msgid "plugin error: missing file list for sudoedit" msgstr "kromprograma eraro: malhavas dosieran liston por sudoedit" -#: src/sudo_edit.c:709 src/sudo_edit.c:723 +#: src/sudo_edit.c:728 src/sudo_edit.c:743 msgid "unable to read the clock" msgstr "ne eblas legi la horloĝon" @@ -1155,29 +1175,29 @@ msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "neniu programo askpass indikita, provu difini SUDO_ASKPASS" -#: src/tgetpass.c:326 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" msgstr "ne eblas elekti gid-on al %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:337 #, c-format msgid "unable to set uid to %u" msgstr "ne eblas elekti uid-on al %u" -#: src/tgetpass.c:341 +#: src/tgetpass.c:342 #, c-format msgid "unable to run %s" msgstr "ne eblas plenumigi: %s" -#: src/utmp.c:288 +#: src/utmp.c:283 msgid "unable to save stdin" msgstr "ne eblas konservi norman enigon" -#: src/utmp.c:290 +#: src/utmp.c:285 msgid "unable to dup2 stdin" msgstr "ne eblas dup2 el norma enigo" -#: src/utmp.c:293 +#: src/utmp.c:288 msgid "unable to restore stdin" msgstr "ne eblas restarigi norman enigon" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/po/fr.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/po/fr.mo differ diff -Nru sudo-1.9.13p3/po/fr.po sudo-1.9.14p2/po/fr.po --- sudo-1.9.13p3/po/fr.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/po/fr.po 2023-07-15 15:37:22.000000000 +0000 @@ -6,10 +6,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.13b2\n" +"Project-Id-Version: sudo 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-26 12:12+0100\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-08 21:12+0200\n" "Last-Translator: Frédéric Marchal \n" "Language-Team: French \n" "Language: fr\n" @@ -34,73 +34,76 @@ #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 #: lib/util/json.c:55 lib/util/json.c:197 lib/util/sudo_conf.c:215 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:80 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:205 src/exec_monitor.c:460 -#: src/exec_monitor.c:466 src/exec_monitor.c:474 src/exec_monitor.c:482 -#: src/exec_monitor.c:489 src/exec_monitor.c:496 src/exec_monitor.c:503 -#: src/exec_monitor.c:510 src/exec_monitor.c:517 src/exec_monitor.c:524 -#: src/exec_monitor.c:531 src/exec_nopty.c:231 src/exec_nopty.c:240 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:78 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:171 src/exec_monitor.c:418 +#: src/exec_monitor.c:424 src/exec_monitor.c:432 src/exec_monitor.c:440 +#: src/exec_monitor.c:447 src/exec_monitor.c:454 src/exec_monitor.c:461 +#: src/exec_monitor.c:468 src/exec_monitor.c:475 src/exec_monitor.c:482 +#: src/exec_monitor.c:489 src/exec_nopty.c:231 src/exec_nopty.c:240 #: 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:318 src/exec_nopty.c:326 -#: src/exec_nopty.c:736 src/exec_preload.c:343 src/exec_ptrace.c:475 -#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1095 -#: src/exec_ptrace.c:1270 src/exec_ptrace.c:1612 src/exec_ptrace.c:1639 -#: src/exec_pty.c:511 src/exec_pty.c:692 src/exec_pty.c:882 src/exec_pty.c:891 -#: src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 src/exec_pty.c:919 -#: src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 src/exec_pty.c:947 -#: src/exec_pty.c:954 src/exec_pty.c:962 src/load_plugins.c:98 -#: src/load_plugins.c:123 src/load_plugins.c:159 src/load_plugins.c:392 -#: src/load_plugins.c:398 src/parse_args.c:172 src/parse_args.c:193 -#: src/parse_args.c:267 src/parse_args.c:623 src/parse_args.c:645 -#: src/parse_args.c:670 src/preserve_fds.c:46 src/preserve_fds.c:131 -#: src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 src/selinux.c:489 -#: src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 src/sesh.c:246 -#: src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:641 src/sudo.c:706 -#: src/sudo.c:716 src/sudo.c:743 src/sudo.c:766 src/sudo.c:775 src/sudo.c:784 -#: src/sudo.c:801 src/sudo.c:842 src/sudo.c:851 src/sudo.c:861 src/sudo.c:894 -#: src/sudo.c:1122 src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 -#: src/sudo.c:1832 src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 -#: src/sudo_edit.c:429 src/sudo_edit.c:438 src/sudo_edit.c:538 -#: src/sudo_edit.c:545 src/sudo_edit.c:688 src/sudo_edit.c:708 -#: src/sudo_intercept_common.c:115 src/sudo_intercept_common.c:340 +#: src/exec_nopty.c:744 src/exec_preload.c:343 src/exec_ptrace.c:475 +#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1096 +#: src/exec_ptrace.c:1271 src/exec_ptrace.c:1624 src/exec_ptrace.c:1651 +#: src/exec_ptrace.c:1841 src/exec_pty.c:581 src/exec_pty.c:765 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:193 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 +#: src/sesh.c:246 src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:644 +#: src/sudo.c:709 src/sudo.c:719 src/sudo.c:746 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:787 src/sudo.c:805 src/sudo.c:846 src/sudo.c:855 src/sudo.c:865 +#: src/sudo.c:898 src/sudo.c:1127 src/sudo.c:1148 src/sudo.c:1441 +#: src/sudo.c:1610 src/sudo.c:1837 src/sudo.c:2171 src/sudo_edit.c:89 +#: src/sudo_edit.c:149 src/sudo_edit.c:430 src/sudo_edit.c:439 +#: src/sudo_edit.c:540 src/sudo_edit.c:547 src/sudo_edit.c:692 +#: src/sudo_edit.c:712 src/sudo_intercept_common.c:115 +#: src/sudo_intercept_common.c:340 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:56 #: lib/util/json.c:198 lib/util/regex.c:173 lib/util/sudo_conf.c:216 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:81 src/exec_intercept.c:111 src/exec_intercept.c:344 -#: src/exec_intercept.c:518 src/exec_intercept.c:582 src/exec_intercept.c:706 -#: src/exec_intercept.c:830 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:460 src/exec_monitor.c:466 -#: src/exec_monitor.c:474 src/exec_monitor.c:482 src/exec_monitor.c:489 -#: src/exec_monitor.c:496 src/exec_monitor.c:503 src/exec_monitor.c:510 -#: src/exec_monitor.c:517 src/exec_monitor.c:524 src/exec_monitor.c:531 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:79 src/exec_intercept.c:111 src/exec_intercept.c:350 +#: src/exec_intercept.c:525 src/exec_intercept.c:589 src/exec_intercept.c:713 +#: src/exec_intercept.c:837 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:418 src/exec_monitor.c:424 +#: src/exec_monitor.c:432 src/exec_monitor.c:440 src/exec_monitor.c:447 +#: src/exec_monitor.c:454 src/exec_monitor.c:461 src/exec_monitor.c:468 +#: src/exec_monitor.c:475 src/exec_monitor.c:482 src/exec_monitor.c:489 #: src/exec_nopty.c:231 src/exec_nopty.c:240 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:318 src/exec_nopty.c:326 src/exec_preload.c:343 #: src/exec_ptrace.c:475 src/exec_ptrace.c:768 src/exec_ptrace.c:983 -#: src/exec_ptrace.c:1639 src/exec_pty.c:511 src/exec_pty.c:882 -#: src/exec_pty.c:891 src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 -#: src/exec_pty.c:919 src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 -#: src/exec_pty.c:947 src/exec_pty.c:954 src/exec_pty.c:962 -#: src/load_plugins.c:98 src/load_plugins.c:123 src/load_plugins.c:159 -#: src/load_plugins.c:392 src/load_plugins.c:398 src/parse_args.c:172 -#: src/parse_args.c:194 src/parse_args.c:267 src/parse_args.c:623 -#: src/parse_args.c:645 src/parse_args.c:670 src/preserve_fds.c:46 +#: src/exec_ptrace.c:1651 src/exec_ptrace.c:1842 src/exec_pty.c:581 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:194 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 #: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 #: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:471 -#: src/sudo.c:230 src/sudo.c:641 src/sudo.c:894 src/sudo.c:1122 -#: src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 src/sudo.c:1832 -#: src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 -#: src/sudo_edit.c:438 src/sudo_edit.c:538 src/sudo_edit.c:545 -#: src/sudo_edit.c:688 src/sudo_edit.c:708 src/sudo_intercept_common.c:115 +#: src/sudo.c:228 src/sudo.c:644 src/sudo.c:898 src/sudo.c:1127 +#: src/sudo.c:1148 src/sudo.c:1441 src/sudo.c:1610 src/sudo.c:1837 +#: src/sudo.c:2171 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:430 +#: src/sudo_edit.c:439 src/sudo_edit.c:540 src/sudo_edit.c:547 +#: src/sudo_edit.c:692 src/sudo_edit.c:712 src/sudo_intercept_common.c:115 #: src/sudo_intercept_common.c:340 msgid "unable to allocate memory" msgstr "impossible d'allouer la mémoire" @@ -115,9 +118,9 @@ msgid "%.*s exists but is not a directory (0%o)" msgstr "%.*s existe mais il n'est pas un répertoire (0%o)" -#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:666 -#: lib/util/sudo_conf.c:696 lib/util/sudo_conf.c:703 src/selinux.c:235 -#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:494 src/sudo_edit.c:557 +#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:664 +#: lib/util/sudo_conf.c:683 lib/util/sudo_conf.c:710 src/selinux.c:235 +#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:495 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "impossible d'ouvrir %s" @@ -173,22 +176,22 @@ msgid "invalid max groups \"%s\" in %s, line %u" msgstr "groupes max « %s » incorrects dans %s, ligne %u" -#: lib/util/sudo_conf.c:669 +#: lib/util/sudo_conf.c:686 #, c-format msgid "%s is not a regular file" msgstr "%s n'est pas un fichier régulier" -#: lib/util/sudo_conf.c:672 src/copy_file.c:164 +#: lib/util/sudo_conf.c:689 src/copy_file.c:164 #, 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:676 +#: lib/util/sudo_conf.c:693 #, c-format msgid "%s is world writable" msgstr "%s peut être écrit par tout le monde" -#: lib/util/sudo_conf.c:679 +#: lib/util/sudo_conf.c:696 #, c-format msgid "%s is group writable" msgstr "%s peut être écrit par le groupe" @@ -237,7 +240,7 @@ msgid "%s: bad file mode: 0%o" msgstr "%s: mauvais mode de fichier : 0%o" -#: src/edit_open.c:331 +#: src/edit_open.c:333 msgid "unable to restore current working directory" msgstr "impossible de rétablir le répertoire de travail actuel" @@ -282,18 +285,18 @@ msgid "starting from %s" msgstr "au départ de %s" -#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:569 src/exec_monitor.c:571 -#: src/exec_pty.c:225 src/exec_pty.c:1026 src/exec_pty.c:1028 src/signal.c:144 -#: src/signal.c:151 src/signal.c:165 src/suspend_nopty.c:93 +#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:552 src/exec_monitor.c:554 +#: src/exec_pty.c:1122 src/exec_pty.c:1124 src/signal.c:144 src/signal.c:151 +#: src/signal.c:165 src/suspend_parent.c:143 #, c-format msgid "unable to set handler for signal %d" msgstr "impossible de spécifier le gestionnaire pour le signal %d" -#: src/exec.c:422 +#: src/exec.c:424 msgid "intercept mode is not supported with SELinux RBAC on this system" msgstr "le mode d'interception n'est pas supporté avec SELinux RBAC sur ce système" -#: src/exec.c:427 +#: src/exec.c:429 msgid "unable to log sub-commands with SELinux RBAC on this system" msgstr "impossible d'écrire les sous-commandes dans le journal avec SELinux RBAC sur ce système" @@ -301,239 +304,258 @@ msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "impossible de supprimer PRIV_PROC_EXEC de PRIV_LIMIT" -#: src/exec_intercept.c:70 src/exec_iolog.c:165 src/exec_iolog.c:175 -#: src/exec_iolog.c:220 src/exec_iolog.c:227 src/exec_iolog.c:254 -#: src/exec_monitor.c:468 src/exec_monitor.c:476 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_monitor.c:533 src/exec_nopty.c:233 src/exec_nopty.c:242 +#: src/exec_intercept.c:70 src/exec_iolog.c:163 src/exec_iolog.c:173 +#: src/exec_iolog.c:218 src/exec_iolog.c:225 src/exec_iolog.c:252 +#: src/exec_monitor.c:426 src/exec_monitor.c:434 src/exec_monitor.c:442 +#: src/exec_monitor.c:449 src/exec_monitor.c:456 src/exec_monitor.c:463 +#: src/exec_monitor.c:470 src/exec_monitor.c:477 src/exec_monitor.c:484 +#: src/exec_monitor.c:491 src/exec_nopty.c:233 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:305 #: src/exec_nopty.c:312 src/exec_nopty.c:320 src/exec_nopty.c:328 -#: src/exec_nopty.c:387 src/exec_nopty.c:453 src/exec_pty.c:360 -#: src/exec_pty.c:462 src/exec_pty.c:517 src/exec_pty.c:884 src/exec_pty.c:893 -#: src/exec_pty.c:900 src/exec_pty.c:907 src/exec_pty.c:914 src/exec_pty.c:921 -#: src/exec_pty.c:928 src/exec_pty.c:935 src/exec_pty.c:942 src/exec_pty.c:949 -#: src/exec_pty.c:956 +#: src/exec_nopty.c:387 src/exec_nopty.c:457 src/exec_pty.c:432 +#: src/exec_pty.c:537 src/exec_pty.c:587 src/exec_pty.c:965 src/exec_pty.c:974 +#: src/exec_pty.c:981 src/exec_pty.c:988 src/exec_pty.c:995 +#: src/exec_pty.c:1002 src/exec_pty.c:1009 src/exec_pty.c:1016 +#: src/exec_pty.c:1023 src/exec_pty.c:1030 src/exec_pty.c:1037 +#: src/exec_pty.c:1044 msgid "unable to add event to queue" msgstr "impossible d'ajouter l'événement à la queue" -#: src/exec_intercept.c:317 src/sudo.c:1028 +#: src/exec_intercept.c:323 src/sudo.c:1033 msgid "command not set by the security policy" msgstr "commande pas définie par la politique de sécurité" -#: src/exec_intercept.c:395 src/exec_intercept.c:435 src/sudo.c:1248 -#: src/sudo.c:1293 src/sudo.c:1337 +#: src/exec_intercept.c:401 src/exec_intercept.c:441 src/sudo.c:1253 +#: src/sudo.c:1298 src/sudo.c:1342 msgid "command rejected by policy" msgstr "commande rejetée par la politique" -#: src/exec_intercept.c:505 src/sudo.c:1935 +#: src/exec_intercept.c:512 src/sudo.c:1940 msgid "approval plugin error" msgstr "erreur du greffon d'approbation" -#: src/exec_intercept.c:530 src/sudo.c:1253 src/sudo.c:1298 src/sudo.c:1342 -#: src/sudo.c:1416 +#: src/exec_intercept.c:537 src/sudo.c:1258 src/sudo.c:1303 src/sudo.c:1347 +#: src/sudo.c:1421 msgid "policy plugin error" msgstr "erreur du greffon de politique" -#: src/exec_intercept.c:559 +#: src/exec_intercept.c:566 msgid "invalid PolicyCheckRequest" msgstr "PolicyCheckRequest invalide" -#: src/exec_intercept.c:702 +#: src/exec_intercept.c:709 #, c-format msgid "client request too large: %zu" msgstr "demande client trop grand : %zu" -#: src/exec_intercept.c:744 +#: src/exec_intercept.c:751 #, c-format msgid "unable to unpack %s size %zu" msgstr "impossible de décompresser %s avec une taille de %zu" -#: src/exec_intercept.c:792 +#: src/exec_intercept.c:799 #, 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:818 +#: src/exec_intercept.c:825 #, c-format msgid "server message too large: %zu" msgstr "message serveur trop grand : %zu" -#: src/exec_iolog.c:323 src/exec_iolog.c:363 src/exec_iolog.c:403 -#: src/exec_iolog.c:454 src/exec_iolog.c:505 +#: src/exec_iolog.c:321 src/exec_iolog.c:361 src/exec_iolog.c:401 +#: src/exec_iolog.c:452 src/exec_iolog.c:503 msgid "I/O plugin error" msgstr "erreur du greffon d'E/S" -#: src/exec_iolog.c:327 src/exec_iolog.c:367 src/exec_iolog.c:407 -#: src/exec_iolog.c:458 src/exec_iolog.c:509 +#: src/exec_iolog.c:325 src/exec_iolog.c:365 src/exec_iolog.c:405 +#: src/exec_iolog.c:456 src/exec_iolog.c:507 msgid "command rejected by I/O plugin" msgstr "commande rejetée par le greffon d'E/S" -#: src/exec_iolog.c:556 +#: src/exec_iolog.c:555 msgid "error logging suspend" msgstr "l'enregistrement des erreurs est suspendu" -#: src/exec_iolog.c:591 +#: src/exec_iolog.c:590 msgid "error changing window size" msgstr "erreur lors du changement de la taille de la fenêtre" -#: src/exec_monitor.c:362 +#: src/exec_monitor.c:328 msgid "error reading from socketpair" msgstr "erreur de lecture sur la paire de sockets" -#: src/exec_monitor.c:379 +#: src/exec_monitor.c:340 #, c-format msgid "unexpected reply type on backchannel: %d" msgstr "réponse inattendue sur le backchannel : %d" -#: src/exec_monitor.c:587 +#: src/exec_monitor.c:566 msgid "unable to set controlling tty" msgstr "impossible de choisir le tty de contrôle" -#: src/exec_monitor.c:595 src/exec_nopty.c:498 src/exec_nopty.c:508 -#: src/exec_nopty.c:518 src/exec_nopty.c:552 src/exec_pty.c:1097 -#: src/exec_pty.c:1118 src/exec_pty.c:1138 src/tgetpass.c:305 +#: src/exec_monitor.c:574 src/exec_nopty.c:504 src/exec_nopty.c:514 +#: src/exec_nopty.c:524 src/exec_nopty.c:560 src/exec_pty.c:1195 +#: src/exec_pty.c:1222 src/exec_pty.c:1242 src/exec_pty.c:1262 +#: src/tgetpass.c:306 msgid "unable to create pipe" msgstr "impossible de créer le tube" -#: src/exec_monitor.c:605 +#: src/exec_monitor.c:584 msgid "unable to receive message from parent" msgstr "impossible de recevoir un message du parent" -#: src/exec_monitor.c:621 src/exec_nopty.c:595 src/exec_pty.c:1176 -#: src/sudo_edit.c:361 src/tgetpass.c:309 +#: src/exec_monitor.c:600 src/exec_nopty.c:603 src/exec_pty.c:1303 +#: src/sudo_edit.c:361 src/tgetpass.c:310 msgid "unable to fork" msgstr "erreur de fork" -#: src/exec_monitor.c:625 src/exec_monitor.c:723 src/exec_nopty.c:700 +#: src/exec_monitor.c:604 src/exec_monitor.c:700 src/exec_nopty.c:708 msgid "unable to restore tty label" msgstr "impossible de rétablir l'étiquette du tty" -#: src/exec_monitor.c:638 src/sesh.c:217 src/sudo.c:1199 +#: src/exec_monitor.c:615 src/sesh.c:217 src/sudo.c:1204 #, c-format msgid "unable to execute %s" msgstr "impossible d'exécuter %s" -#: src/exec_nopty.c:546 src/exec_pty.c:1035 +#: src/exec_nopty.c:554 src/exec_pty.c:1131 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:561 src/exec_pty.c:1004 src/exec_pty.c:1013 +#: src/exec_nopty.c:569 src/exec_pty.c:1100 src/exec_pty.c:1109 msgid "unable to create sockets" msgstr "impossible de créer des sockets" -#: src/exec_nopty.c:688 src/exec_pty.c:1274 +#: src/exec_nopty.c:696 src/exec_pty.c:1406 msgid "error in event loop" msgstr "erreur dans la boucle des événements" #: src/exec_preload.c:167 src/net_ifs.c:206 src/net_ifs.c:372 -#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:851 src/sudo.c:488 +#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:852 src/sudo.c:488 #: src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "erreur interne, débordement %s" -#: src/exec_ptrace.c:1079 src/exec_ptrace.c:1104 src/exec_ptrace.c:1900 +#: src/exec_ptrace.c:1080 src/exec_ptrace.c:1105 src/exec_ptrace.c:1925 #, c-format msgid "unable to set registers for process %d" msgstr "impossible de définir les registres pour le processus %d" -#: src/exec_ptrace.c:1099 src/exec_ptrace.c:1274 src/exec_ptrace.c:1616 +#: src/exec_ptrace.c:1100 src/exec_ptrace.c:1275 src/exec_ptrace.c:1628 #, c-format msgid "process %d exited unexpectedly" msgstr "le processus %d s'est terminé de manière inattendue" -#: src/exec_ptrace.c:1208 +#: src/exec_ptrace.c:1209 msgid "unable to set seccomp filter" msgstr "impossible de définir le filtre seccomp" -#: src/exec_ptrace.c:1405 +#: src/exec_ptrace.c:1406 #, c-format msgid "interpreter argument , expected \"%s\", got \"%s\"" msgstr "interpréteur d'argument, « %s » attendu, « %s » obtenu" -#: src/exec_ptrace.c:1504 +#: src/exec_ptrace.c:1505 #, c-format msgid "pathname mismatch, expected \"%s\", got \"%s\"" msgstr "désaccord dans le nom du chemin, « %s » attendu, « %s » obtenu" -#: src/exec_ptrace.c:1513 src/exec_ptrace.c:1520 src/exec_ptrace.c:1533 -#: src/exec_ptrace.c:1541 src/exec_ptrace.c:1547 src/exec_ptrace.c:1553 +#: src/exec_ptrace.c:1514 src/exec_ptrace.c:1521 src/exec_ptrace.c:1545 +#: src/exec_ptrace.c:1553 src/exec_ptrace.c:1559 src/exec_ptrace.c:1565 #, c-format msgid "%s[%d] mismatch, expected \"%s\", got \"%s\"" msgstr "désaccord dans %s[%d], « %s » attendu, « %s » obtenu" -#: src/exec_ptrace.c:1620 +#: src/exec_ptrace.c:1632 #, c-format msgid "process %d unexpected status 0x%x" msgstr "le processus %d a retourné le statut inattendu 0x%x" -#: src/exec_ptrace.c:1711 +#: src/exec_ptrace.c:1723 #, c-format msgid "unable to get event message for process %d" msgstr "impossible d'obtenir le message de l'événement pour le processus %d" -#: src/exec_ptrace.c:1718 +#: src/exec_ptrace.c:1730 #, c-format msgid "unable to get registers for process %d" msgstr "impossible d'obtenir les registres pour le processus %d" -#: src/exec_pty.c:103 +#: src/exec_pty.c:84 msgid "unable to allocate pty" msgstr "impossible d'allouer le pty" -#: src/exec_pty.c:268 src/signal.c:101 src/suspend_nopty.c:99 +#: src/exec_pty.c:131 src/exec_pty.c:284 src/tgetpass.c:251 +msgid "unable to restore terminal settings" +msgstr "impossible de rétablir les paramètres du terminal" + +#: src/exec_pty.c:243 +msgid "unable to set handler for SIGCONT" +msgstr "impossible de spécifier le gestionnaire pour SIGCONT" + +#: src/exec_pty.c:293 #, c-format -msgid "unable to restore handler for signal %d" -msgstr "impossible de rétablir le gestionnaire pour le signal %d" +msgid "unable to set handler for SIG%s" +msgstr "impossible de spécifier le gestionnaire pour SIG%s" + +#: src/exec_pty.c:317 +#, c-format +msgid "unable to restore handler for SIG%s" +msgstr "impossible de rétablir le gestionnaire pour SIG%s" -#: src/exec_pty.c:1222 +#: src/exec_pty.c:345 +msgid "unable to restore handler for SIGCONT" +msgstr "impossible de rétablir le gestionnaire pour SIGCONT" + +#: src/exec_pty.c:1353 msgid "unable to send message to monitor process" msgstr "impossible d'envoyer le message au processus de monitoring" -#: src/load_plugins.c:73 src/load_plugins.c:220 src/load_plugins.c:230 -#: src/load_plugins.c:240 src/load_plugins.c:287 +#: src/load_plugins.c:75 src/load_plugins.c:222 src/load_plugins.c:232 +#: src/load_plugins.c:242 src/load_plugins.c:289 #, 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:184 src/load_plugins.c:255 +#: src/load_plugins.c:186 src/load_plugins.c:257 #, 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:222 +#: src/load_plugins.c:224 #, c-format msgid "unable to load %s: %s" msgstr "impossible de charger %s : %s" -#: src/load_plugins.c:232 +#: src/load_plugins.c:234 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "impossible de trouver le symbole « %s » dans %s" -#: src/load_plugins.c:242 +#: src/load_plugins.c:244 #, 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:260 +#: src/load_plugins.c:262 #, 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:263 +#: src/load_plugins.c:265 msgid "only a single policy plugin may be specified" msgstr "un seul greffon de règles peut être spécifié" -#: src/load_plugins.c:289 +#: src/load_plugins.c:291 #, c-format msgid "unknown plugin type %d found in %s" msgstr "type de greffon %d inconnu dans %s" -#: src/load_plugins.c:472 +#: src/load_plugins.c:474 #, 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" @@ -543,47 +565,47 @@ msgid "invalid environment variable name: %s" msgstr "nom de variable d'environnement invalide: %s" -#: src/parse_args.c:317 +#: src/parse_args.c:319 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:554 +#: src/parse_args.c:556 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:559 +#: src/parse_args.c:561 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:569 +#: src/parse_args.c:571 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:572 +#: src/parse_args.c:574 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:582 +#: src/parse_args.c:584 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:586 +#: src/parse_args.c:588 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:684 +#: src/parse_args.c:686 msgid "sudoedit is not supported on this platform" msgstr "sudoedit n'est pas pris en charge sur cette plate-forme" -#: src/parse_args.c:767 +#: src/parse_args.c:744 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:780 +#: src/parse_args.c:757 msgid "Only one of the -K, -k or -N options may be specified" msgstr "Seule une des options -K, -k ou -N peut être spécifiée" -#: src/parse_args.c:796 +#: src/parse_args.c:778 #, c-format msgid "" "%s - edit files as another user\n" @@ -592,7 +614,7 @@ "%s – édite les fichiers en tant qu'un autre utilisateur\n" "\n" -#: src/parse_args.c:798 +#: src/parse_args.c:780 #, c-format msgid "" "%s - execute a command as another user\n" @@ -601,7 +623,7 @@ "%s – exécute une commande en tant qu'un autre utilisateur\n" "\n" -#: src/parse_args.c:804 +#: src/parse_args.c:785 msgid "" "\n" "Options:\n" @@ -609,131 +631,131 @@ "\n" "Options:\n" -#: src/parse_args.c:806 +#: src/parse_args.c:787 msgid "use a helper program for password prompting" msgstr "utiliser un programme adjoint pour demander le mot de passe" -#: src/parse_args.c:809 +#: src/parse_args.c:790 msgid "use specified BSD authentication type" msgstr "utiliser le type d'authentification BSD spécifié" -#: src/parse_args.c:813 +#: src/parse_args.c:794 msgid "run command in the background" msgstr "exécuter la commande en arrière-plan" -#: src/parse_args.c:816 +#: src/parse_args.c:797 msgid "ring bell when prompting" msgstr "émettre un signal sonore lors d'une demande" -#: src/parse_args.c:818 +#: src/parse_args.c:799 msgid "close all file descriptors >= num" msgstr "fermer tous les descripteurs de fichiers >= n°" -#: src/parse_args.c:821 +#: src/parse_args.c:802 msgid "run command with the specified BSD login class" msgstr "exécuter la commande avec la classe de login BSD" -#: src/parse_args.c:824 +#: src/parse_args.c:805 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:827 +#: src/parse_args.c:808 msgid "preserve user environment when running command" msgstr "préserver l'environnement de l'utilisateur en exécutant la commande" -#: src/parse_args.c:829 +#: src/parse_args.c:810 msgid "preserve specific environment variables" msgstr "préserver les variables d'environnement spécifiques" -#: src/parse_args.c:831 +#: src/parse_args.c:812 msgid "edit files instead of running a command" msgstr "éditer les fichiers au lieu d'exécuter une commande" -#: src/parse_args.c:834 +#: src/parse_args.c:815 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:837 +#: src/parse_args.c:818 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:840 +#: src/parse_args.c:821 msgid "display help message and exit" msgstr "afficher le message d'aide et terminer" -#: src/parse_args.c:842 +#: src/parse_args.c:823 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:845 +#: src/parse_args.c:826 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:847 +#: src/parse_args.c:828 msgid "remove timestamp file completely" msgstr "supprime complètement le fichier d'horodatage" -#: src/parse_args.c:850 +#: src/parse_args.c:831 msgid "invalidate timestamp file" msgstr "invalide le fichier d'horodatage" -#: src/parse_args.c:853 +#: src/parse_args.c:834 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:856 +#: src/parse_args.c:837 msgid "non-interactive mode, no prompts are used" msgstr "mode non interactif, aucune invite utilisée" -#: src/parse_args.c:859 +#: src/parse_args.c:840 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:862 +#: src/parse_args.c:843 msgid "use the specified password prompt" msgstr "utiliser l'invite de mot de passe spécifié" -#: src/parse_args.c:864 +#: src/parse_args.c:845 msgid "change the root directory before running command" msgstr "changer le répertoire racine avant d'exécuter la commande" -#: src/parse_args.c:867 +#: src/parse_args.c:848 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:870 +#: src/parse_args.c:851 msgid "read password from standard input" msgstr "lire le mot de passe depuis l'entrée standard" -#: src/parse_args.c:873 +#: src/parse_args.c:854 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:877 +#: src/parse_args.c:858 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:880 +#: src/parse_args.c:861 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:883 +#: src/parse_args.c:864 msgid "in list mode, display privileges for user" msgstr "en mode liste, afficher les privilèges de l'utilisateur" -#: src/parse_args.c:886 +#: src/parse_args.c:867 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:888 +#: src/parse_args.c:869 msgid "display version information and exit" msgstr "afficher les informations de version et terminer" -#: src/parse_args.c:891 +#: src/parse_args.c:872 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:894 +#: src/parse_args.c:875 msgid "stop processing command line arguments" msgstr "arrêter de traiter les arguments en ligne de commande" @@ -877,6 +899,11 @@ msgid "unable to save handler for signal %d" msgstr "impossible de sauvegarder le gestionnaire du signal %d" +#: src/signal.c:101 src/suspend_parent.c:149 +#, c-format +msgid "unable to restore handler for signal %d" +msgstr "impossible de rétablir le gestionnaire pour le signal %d" + #: src/solaris.c:72 msgid "resource control limit has been reached" msgstr "la limite de contrôle de la ressource a été atteinte" @@ -920,21 +947,21 @@ 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:216 +#: src/sudo.c:214 #, c-format msgid "Sudo version %s\n" msgstr "Sudo version %s\n" -#: src/sudo.c:218 +#: src/sudo.c:216 #, c-format msgid "Configure options: %s\n" msgstr "Options de configuration : %s\n" -#: src/sudo.c:226 +#: src/sudo.c:224 msgid "fatal error, unable to load plugins" msgstr "erreur fatale, impossible de charger les greffons" -#: src/sudo.c:272 +#: src/sudo.c:270 msgid "plugin did not return a command to execute" msgstr "le greffon n'a pas retourné une commande à exécuter" @@ -943,128 +970,128 @@ msgid "unexpected sudo mode 0x%x" msgstr "mode sudo 0x%x inattendu" -#: src/sudo.c:555 +#: src/sudo.c:559 #, 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:612 +#: src/sudo.c:616 msgid "unable to determine tty" msgstr "impossible de déterminer le tty" -#: src/sudo.c:928 +#: src/sudo.c:932 msgid "The \"no new privileges\" flag is set, which prevents sudo from running as root." msgstr "Le fanion « no new privileges » (« pas de nouveau privilèges ») est défini. Il empêche sudo de s'exécuter en tant que root." -#: src/sudo.c:930 +#: src/sudo.c:934 msgid "If sudo is running in a container, you may need to adjust the container configuration to disable the flag." msgstr "Si sudo est exécuté dans un conteneur, vous devrez ajuster la configuration du conteneur pour désactiver ce fanion." -#: src/sudo.c:964 +#: src/sudo.c:968 #, 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:967 +#: src/sudo.c:971 #, 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:973 +#: src/sudo.c:977 #, 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:989 src/tgetpass.c:331 +#: src/sudo.c:993 src/tgetpass.c:332 msgid "unable to set supplementary group IDs" msgstr "impossible d'attribuer les ID de groupe supplémentaires" -#: src/sudo.c:996 +#: src/sudo.c:1000 #, 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:1002 +#: src/sudo.c:1006 #, c-format msgid "unable to set gid to runas gid %u" msgstr "impossible de changer le gid à runas gid %u" -#: src/sudo.c:1032 +#: src/sudo.c:1037 msgid "argv not set by the security policy" msgstr "argv pas défini par la politique de sécurité" -#: src/sudo.c:1036 +#: src/sudo.c:1041 msgid "envp not set by the security policy" msgstr "envp pas défini par la politique de sécurité" -#: src/sudo.c:1058 +#: src/sudo.c:1063 #, c-format msgid "unexpected child termination condition: %d" msgstr "condition de fin de l'enfant inconnue: %d" -#: src/sudo.c:1171 +#: src/sudo.c:1176 msgid "unable to initialize policy plugin" msgstr "impossible d'initialiser le greffon de règles" -#: src/sudo.c:1233 +#: src/sudo.c:1238 #, 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:1279 +#: src/sudo.c:1284 #, 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:1323 +#: src/sudo.c:1328 #, 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:1361 +#: src/sudo.c:1366 #, 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:1490 +#: src/sudo.c:1495 #, c-format msgid "error initializing I/O plugin %s" msgstr "erreur à l'initialisation du greffon E/S %s" -#: src/sudo.c:1493 +#: src/sudo.c:1498 msgid "error initializing I/O plugin" msgstr "erreur à l'initialisation du greffon E/S" -#: src/sudo.c:1642 +#: src/sudo.c:1647 #, c-format msgid "error initializing audit plugin %s" msgstr "erreur à l'initialisation du greffon d'audit %s" -#: src/sudo.c:1721 +#: src/sudo.c:1726 #, 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:1757 +#: src/sudo.c:1762 #, 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:1762 src/sudo.c:1800 +#: src/sudo.c:1767 src/sudo.c:1805 msgid "audit plugin error" msgstr "erreur du greffon d'audit" -#: src/sudo.c:1795 +#: src/sudo.c:1800 #, 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:1855 +#: src/sudo.c:1860 #, c-format msgid "error initializing approval plugin %s" msgstr "erreur à l'initialisation du greffon d'approbation %s" -#: src/sudo.c:1925 +#: src/sudo.c:1930 msgid "command rejected by approver" msgstr "commande rejetée par l'approbateur" @@ -1072,55 +1099,55 @@ msgid "no writable temporary directory found" msgstr "aucun répertoire temporaire est disponible en écriture" -#: src/sudo_edit.c:291 +#: src/sudo_edit.c:292 #, c-format msgid "%s left unmodified" msgstr "%s laissé tel quel" -#: src/sudo_edit.c:304 src/sudo_edit.c:569 +#: src/sudo_edit.c:305 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s non modifié" -#: src/sudo_edit.c:481 +#: src/sudo_edit.c:482 msgid "sesh: internal error: odd number of paths" msgstr "sesh: erreur interne: nombre impaire de chemins" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:484 msgid "sesh: unable to create temporary files" msgstr "sesh: impossible de créer des fichiers temporaires" -#: src/sudo_edit.c:485 src/sudo_edit.c:604 +#: src/sudo_edit.c:486 src/sudo_edit.c:606 msgid "sesh: killed by a signal" msgstr "sesh: tué par un signal" -#: src/sudo_edit.c:487 src/sudo_edit.c:607 +#: src/sudo_edit.c:488 src/sudo_edit.c:609 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: erreur %d inconnue" -#: src/sudo_edit.c:597 +#: src/sudo_edit.c:599 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:601 +#: src/sudo_edit.c:603 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:646 +#: src/sudo_edit.c:650 #, c-format msgid "unable to change uid to root (%u)" msgstr "impossible de changer le uid en root (%u)" -#: src/sudo_edit.c:660 +#: src/sudo_edit.c:664 msgid "plugin error: invalid file list for sudoedit" msgstr "erreur de greffon : liste de fichiers invalide pour sudoedit" -#: src/sudo_edit.c:681 +#: src/sudo_edit.c:685 msgid "plugin error: missing file list for sudoedit" msgstr "erreur de greffon : liste de fichiers manquantes pour sudoedit" -#: src/sudo_edit.c:724 src/sudo_edit.c:739 +#: src/sudo_edit.c:728 src/sudo_edit.c:743 msgid "unable to read the clock" msgstr "impossible de lire l'horloge" @@ -1148,30 +1175,30 @@ msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "pas de programme askpass spécifié, essayez avec SUDO_ASKPASS" -#: src/tgetpass.c:326 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" msgstr "impossible de changer le gid en %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:337 #, c-format msgid "unable to set uid to %u" msgstr "impossible de changer le uid en %u" -#: src/tgetpass.c:341 +#: src/tgetpass.c:342 #, c-format msgid "unable to run %s" msgstr "impossible d'exécuter %s" -#: src/utmp.c:288 +#: src/utmp.c:283 msgid "unable to save stdin" msgstr "impossible de sauvegarder stdin" -#: src/utmp.c:290 +#: src/utmp.c:285 msgid "unable to dup2 stdin" msgstr "impossible d'exécuter dup2 sur stdin" -#: src/utmp.c:293 +#: src/utmp.c:288 msgid "unable to restore stdin" msgstr "impossible de rétablir stdin" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/po/hr.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/po/hr.mo differ diff -Nru sudo-1.9.13p3/po/hr.po sudo-1.9.14p2/po/hr.po --- sudo-1.9.13p3/po/hr.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/po/hr.po 2023-07-15 15:37:22.000000000 +0000 @@ -4,10 +4,10 @@ # Božidar Putanec , 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023. msgid "" msgstr "" -"Project-Id-Version: sudo-1.9.13b2\n" +"Project-Id-Version: sudo-1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-26 17:15-0800\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-08 12:20-0700\n" "Last-Translator: Božidar Putanec \n" "Language-Team: Croatian \n" "Language: hr\n" @@ -36,73 +36,76 @@ #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 #: lib/util/json.c:55 lib/util/json.c:197 lib/util/sudo_conf.c:215 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:80 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:205 src/exec_monitor.c:460 -#: src/exec_monitor.c:466 src/exec_monitor.c:474 src/exec_monitor.c:482 -#: src/exec_monitor.c:489 src/exec_monitor.c:496 src/exec_monitor.c:503 -#: src/exec_monitor.c:510 src/exec_monitor.c:517 src/exec_monitor.c:524 -#: src/exec_monitor.c:531 src/exec_nopty.c:231 src/exec_nopty.c:240 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:78 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:171 src/exec_monitor.c:418 +#: src/exec_monitor.c:424 src/exec_monitor.c:432 src/exec_monitor.c:440 +#: src/exec_monitor.c:447 src/exec_monitor.c:454 src/exec_monitor.c:461 +#: src/exec_monitor.c:468 src/exec_monitor.c:475 src/exec_monitor.c:482 +#: src/exec_monitor.c:489 src/exec_nopty.c:231 src/exec_nopty.c:240 #: 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:318 src/exec_nopty.c:326 -#: src/exec_nopty.c:736 src/exec_preload.c:343 src/exec_ptrace.c:475 -#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1095 -#: src/exec_ptrace.c:1270 src/exec_ptrace.c:1612 src/exec_ptrace.c:1639 -#: src/exec_pty.c:511 src/exec_pty.c:692 src/exec_pty.c:882 src/exec_pty.c:891 -#: src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 src/exec_pty.c:919 -#: src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 src/exec_pty.c:947 -#: src/exec_pty.c:954 src/exec_pty.c:962 src/load_plugins.c:98 -#: src/load_plugins.c:123 src/load_plugins.c:159 src/load_plugins.c:392 -#: src/load_plugins.c:398 src/parse_args.c:172 src/parse_args.c:193 -#: src/parse_args.c:267 src/parse_args.c:623 src/parse_args.c:645 -#: src/parse_args.c:670 src/preserve_fds.c:46 src/preserve_fds.c:131 -#: src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 src/selinux.c:489 -#: src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 src/sesh.c:246 -#: src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:641 src/sudo.c:706 -#: src/sudo.c:716 src/sudo.c:743 src/sudo.c:766 src/sudo.c:775 src/sudo.c:784 -#: src/sudo.c:801 src/sudo.c:842 src/sudo.c:851 src/sudo.c:861 src/sudo.c:894 -#: src/sudo.c:1122 src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 -#: src/sudo.c:1832 src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 -#: src/sudo_edit.c:429 src/sudo_edit.c:438 src/sudo_edit.c:538 -#: src/sudo_edit.c:545 src/sudo_edit.c:688 src/sudo_edit.c:708 -#: src/sudo_intercept_common.c:115 src/sudo_intercept_common.c:340 +#: src/exec_nopty.c:744 src/exec_preload.c:343 src/exec_ptrace.c:475 +#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1096 +#: src/exec_ptrace.c:1271 src/exec_ptrace.c:1624 src/exec_ptrace.c:1651 +#: src/exec_ptrace.c:1841 src/exec_pty.c:581 src/exec_pty.c:765 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:193 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 +#: src/sesh.c:246 src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:644 +#: src/sudo.c:709 src/sudo.c:719 src/sudo.c:746 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:787 src/sudo.c:805 src/sudo.c:846 src/sudo.c:855 src/sudo.c:865 +#: src/sudo.c:898 src/sudo.c:1127 src/sudo.c:1148 src/sudo.c:1441 +#: src/sudo.c:1610 src/sudo.c:1837 src/sudo.c:2171 src/sudo_edit.c:89 +#: src/sudo_edit.c:149 src/sudo_edit.c:430 src/sudo_edit.c:439 +#: src/sudo_edit.c:540 src/sudo_edit.c:547 src/sudo_edit.c:692 +#: src/sudo_edit.c:712 src/sudo_intercept_common.c:115 +#: src/sudo_intercept_common.c:340 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:56 #: lib/util/json.c:198 lib/util/regex.c:173 lib/util/sudo_conf.c:216 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:81 src/exec_intercept.c:111 src/exec_intercept.c:344 -#: src/exec_intercept.c:518 src/exec_intercept.c:582 src/exec_intercept.c:706 -#: src/exec_intercept.c:830 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:460 src/exec_monitor.c:466 -#: src/exec_monitor.c:474 src/exec_monitor.c:482 src/exec_monitor.c:489 -#: src/exec_monitor.c:496 src/exec_monitor.c:503 src/exec_monitor.c:510 -#: src/exec_monitor.c:517 src/exec_monitor.c:524 src/exec_monitor.c:531 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:79 src/exec_intercept.c:111 src/exec_intercept.c:350 +#: src/exec_intercept.c:525 src/exec_intercept.c:589 src/exec_intercept.c:713 +#: src/exec_intercept.c:837 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:418 src/exec_monitor.c:424 +#: src/exec_monitor.c:432 src/exec_monitor.c:440 src/exec_monitor.c:447 +#: src/exec_monitor.c:454 src/exec_monitor.c:461 src/exec_monitor.c:468 +#: src/exec_monitor.c:475 src/exec_monitor.c:482 src/exec_monitor.c:489 #: src/exec_nopty.c:231 src/exec_nopty.c:240 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:318 src/exec_nopty.c:326 src/exec_preload.c:343 #: src/exec_ptrace.c:475 src/exec_ptrace.c:768 src/exec_ptrace.c:983 -#: src/exec_ptrace.c:1639 src/exec_pty.c:511 src/exec_pty.c:882 -#: src/exec_pty.c:891 src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 -#: src/exec_pty.c:919 src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 -#: src/exec_pty.c:947 src/exec_pty.c:954 src/exec_pty.c:962 -#: src/load_plugins.c:98 src/load_plugins.c:123 src/load_plugins.c:159 -#: src/load_plugins.c:392 src/load_plugins.c:398 src/parse_args.c:172 -#: src/parse_args.c:194 src/parse_args.c:267 src/parse_args.c:623 -#: src/parse_args.c:645 src/parse_args.c:670 src/preserve_fds.c:46 +#: src/exec_ptrace.c:1651 src/exec_ptrace.c:1842 src/exec_pty.c:581 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:194 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 #: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 #: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:471 -#: src/sudo.c:230 src/sudo.c:641 src/sudo.c:894 src/sudo.c:1122 -#: src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 src/sudo.c:1832 -#: src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 -#: src/sudo_edit.c:438 src/sudo_edit.c:538 src/sudo_edit.c:545 -#: src/sudo_edit.c:688 src/sudo_edit.c:708 src/sudo_intercept_common.c:115 +#: src/sudo.c:228 src/sudo.c:644 src/sudo.c:898 src/sudo.c:1127 +#: src/sudo.c:1148 src/sudo.c:1441 src/sudo.c:1610 src/sudo.c:1837 +#: src/sudo.c:2171 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:430 +#: src/sudo_edit.c:439 src/sudo_edit.c:540 src/sudo_edit.c:547 +#: src/sudo_edit.c:692 src/sudo_edit.c:712 src/sudo_intercept_common.c:115 #: src/sudo_intercept_common.c:340 msgid "unable to allocate memory" msgstr "nije moguće dodijeliti memoriju" @@ -117,9 +120,9 @@ msgid "%.*s exists but is not a directory (0%o)" msgstr "%.*s postoji ali nije direktorij (0%o)" -#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:666 -#: lib/util/sudo_conf.c:696 lib/util/sudo_conf.c:703 src/selinux.c:235 -#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:494 src/sudo_edit.c:557 +#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:664 +#: lib/util/sudo_conf.c:683 lib/util/sudo_conf.c:710 src/selinux.c:235 +#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:495 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "nije moguće otvoriti %s" @@ -175,22 +178,22 @@ msgid "invalid max groups \"%s\" in %s, line %u" msgstr "nevaljani maksimalni broj grupa „%s“ u %s, redak %u" -#: lib/util/sudo_conf.c:669 +#: lib/util/sudo_conf.c:686 #, c-format msgid "%s is not a regular file" msgstr "%s nije obična datoteka" -#: lib/util/sudo_conf.c:672 src/copy_file.c:164 +#: lib/util/sudo_conf.c:689 src/copy_file.c:164 #, 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:676 +#: lib/util/sudo_conf.c:693 #, c-format msgid "%s is world writable" msgstr "%s može svatko mijenjati/pisati" -#: lib/util/sudo_conf.c:679 +#: lib/util/sudo_conf.c:696 #, c-format msgid "%s is group writable" msgstr "%s može svaki član grupe mijenjati/pisati" @@ -239,7 +242,7 @@ msgid "%s: bad file mode: 0%o" msgstr "%s: loš datotečni način: 0%o" -#: src/edit_open.c:331 +#: src/edit_open.c:333 msgid "unable to restore current working directory" msgstr "nije moguće obnoviti trenutni radni direktorij" @@ -285,18 +288,18 @@ msgstr "počevši od %s" # Handler, an asynchronous callback (computer programming) subroutine in computing -#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:569 src/exec_monitor.c:571 -#: src/exec_pty.c:225 src/exec_pty.c:1026 src/exec_pty.c:1028 src/signal.c:144 -#: src/signal.c:151 src/signal.c:165 src/suspend_nopty.c:93 +#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:552 src/exec_monitor.c:554 +#: src/exec_pty.c:1122 src/exec_pty.c:1124 src/signal.c:144 src/signal.c:151 +#: src/signal.c:165 src/suspend_parent.c:143 #, c-format msgid "unable to set handler for signal %d" msgstr "nije moguće postaviti rukovatelja za signal %d" -#: src/exec.c:422 +#: src/exec.c:424 msgid "intercept mode is not supported with SELinux RBAC on this system" msgstr "presretanje nije podržano s SELinux RBAC na ovom sustavu" -#: src/exec.c:427 +#: src/exec.c:429 msgid "unable to log sub-commands with SELinux RBAC on this system" msgstr "nije moguće bilježiti podkomande s SELinux RBAC na ovom sustavu" @@ -304,240 +307,261 @@ msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "nije moguće ukloniti PRIV_PROC_EXEC iz PRIV_LIMIT" -#: src/exec_intercept.c:70 src/exec_iolog.c:165 src/exec_iolog.c:175 -#: src/exec_iolog.c:220 src/exec_iolog.c:227 src/exec_iolog.c:254 -#: src/exec_monitor.c:468 src/exec_monitor.c:476 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_monitor.c:533 src/exec_nopty.c:233 src/exec_nopty.c:242 +#: src/exec_intercept.c:70 src/exec_iolog.c:163 src/exec_iolog.c:173 +#: src/exec_iolog.c:218 src/exec_iolog.c:225 src/exec_iolog.c:252 +#: src/exec_monitor.c:426 src/exec_monitor.c:434 src/exec_monitor.c:442 +#: src/exec_monitor.c:449 src/exec_monitor.c:456 src/exec_monitor.c:463 +#: src/exec_monitor.c:470 src/exec_monitor.c:477 src/exec_monitor.c:484 +#: src/exec_monitor.c:491 src/exec_nopty.c:233 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:305 #: src/exec_nopty.c:312 src/exec_nopty.c:320 src/exec_nopty.c:328 -#: src/exec_nopty.c:387 src/exec_nopty.c:453 src/exec_pty.c:360 -#: src/exec_pty.c:462 src/exec_pty.c:517 src/exec_pty.c:884 src/exec_pty.c:893 -#: src/exec_pty.c:900 src/exec_pty.c:907 src/exec_pty.c:914 src/exec_pty.c:921 -#: src/exec_pty.c:928 src/exec_pty.c:935 src/exec_pty.c:942 src/exec_pty.c:949 -#: src/exec_pty.c:956 +#: src/exec_nopty.c:387 src/exec_nopty.c:457 src/exec_pty.c:432 +#: src/exec_pty.c:537 src/exec_pty.c:587 src/exec_pty.c:965 src/exec_pty.c:974 +#: src/exec_pty.c:981 src/exec_pty.c:988 src/exec_pty.c:995 +#: src/exec_pty.c:1002 src/exec_pty.c:1009 src/exec_pty.c:1016 +#: src/exec_pty.c:1023 src/exec_pty.c:1030 src/exec_pty.c:1037 +#: src/exec_pty.c:1044 msgid "unable to add event to queue" msgstr "nije moguće dodati događaj u red čekanja" -#: src/exec_intercept.c:317 src/sudo.c:1028 +#: src/exec_intercept.c:323 src/sudo.c:1033 msgid "command not set by the security policy" msgstr "naredba nije postavljena po sigurnosnim pravilima" -#: src/exec_intercept.c:395 src/exec_intercept.c:435 src/sudo.c:1248 -#: src/sudo.c:1293 src/sudo.c:1337 +#: src/exec_intercept.c:401 src/exec_intercept.c:441 src/sudo.c:1253 +#: src/sudo.c:1298 src/sudo.c:1342 msgid "command rejected by policy" msgstr "pravilnik (policy) je odbio izvršiti naredbu" -#: src/exec_intercept.c:505 src/sudo.c:1935 +#: src/exec_intercept.c:512 src/sudo.c:1940 msgid "approval plugin error" msgstr "greška plugina za odobravanje" -#: src/exec_intercept.c:530 src/sudo.c:1253 src/sudo.c:1298 src/sudo.c:1342 -#: src/sudo.c:1416 +#: src/exec_intercept.c:537 src/sudo.c:1258 src/sudo.c:1303 src/sudo.c:1347 +#: src/sudo.c:1421 msgid "policy plugin error" msgstr "greška plugina s pravilima (policy plugin)" -#: src/exec_intercept.c:559 +#: src/exec_intercept.c:566 msgid "invalid PolicyCheckRequest" msgstr "nevaljani PolicyCheckRequest" -#: src/exec_intercept.c:702 +#: src/exec_intercept.c:709 #, c-format msgid "client request too large: %zu" msgstr "zahtjev klijenta je prevelik: %zu" -#: src/exec_intercept.c:744 +#: src/exec_intercept.c:751 #, c-format msgid "unable to unpack %s size %zu" msgstr "nije moguće raspakirati %s veličinu %zu" -#: src/exec_intercept.c:792 +#: src/exec_intercept.c:799 #, 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:818 +#: src/exec_intercept.c:825 #, c-format msgid "server message too large: %zu" msgstr "poruka servera je prevelika: %zu" -#: src/exec_iolog.c:323 src/exec_iolog.c:363 src/exec_iolog.c:403 -#: src/exec_iolog.c:454 src/exec_iolog.c:505 +#: src/exec_iolog.c:321 src/exec_iolog.c:361 src/exec_iolog.c:401 +#: src/exec_iolog.c:452 src/exec_iolog.c:503 msgid "I/O plugin error" msgstr "greška U/I plugina (I/O plugin)" -#: src/exec_iolog.c:327 src/exec_iolog.c:367 src/exec_iolog.c:407 -#: src/exec_iolog.c:458 src/exec_iolog.c:509 +#: src/exec_iolog.c:325 src/exec_iolog.c:365 src/exec_iolog.c:405 +#: src/exec_iolog.c:456 src/exec_iolog.c:507 msgid "command rejected by I/O plugin" msgstr "U/I plugin je odbio izvršiti naredbu" -#: src/exec_iolog.c:556 +#: src/exec_iolog.c:555 msgid "error logging suspend" msgstr "obustava evidentiranja greški" -#: src/exec_iolog.c:591 +#: src/exec_iolog.c:590 msgid "error changing window size" msgstr "pogreška pri mijenjanju veličine prozora" -#: src/exec_monitor.c:362 +#: src/exec_monitor.c:328 msgid "error reading from socketpair" msgstr "greška pri čitanju iz para utičnica" -#: src/exec_monitor.c:379 +#: src/exec_monitor.c:340 #, c-format msgid "unexpected reply type on backchannel: %d" msgstr "neočekivani tip odgovora na povratnom kanalu: %d" -#: src/exec_monitor.c:587 +#: src/exec_monitor.c:566 msgid "unable to set controlling tty" msgstr "nije moguće uspostaviti upravljački TTY" -#: src/exec_monitor.c:595 src/exec_nopty.c:498 src/exec_nopty.c:508 -#: src/exec_nopty.c:518 src/exec_nopty.c:552 src/exec_pty.c:1097 -#: src/exec_pty.c:1118 src/exec_pty.c:1138 src/tgetpass.c:305 +#: src/exec_monitor.c:574 src/exec_nopty.c:504 src/exec_nopty.c:514 +#: src/exec_nopty.c:524 src/exec_nopty.c:560 src/exec_pty.c:1195 +#: src/exec_pty.c:1222 src/exec_pty.c:1242 src/exec_pty.c:1262 +#: src/tgetpass.c:306 msgid "unable to create pipe" msgstr "nije moguće napraviti cijev" -#: src/exec_monitor.c:605 +#: src/exec_monitor.c:584 msgid "unable to receive message from parent" msgstr "nije moguće primiti poruku od pretka (roditelja)" -#: src/exec_monitor.c:621 src/exec_nopty.c:595 src/exec_pty.c:1176 -#: src/sudo_edit.c:361 src/tgetpass.c:309 +#: src/exec_monitor.c:600 src/exec_nopty.c:603 src/exec_pty.c:1303 +#: src/sudo_edit.c:361 src/tgetpass.c:310 msgid "unable to fork" msgstr "nije moguće stvoriti novi proces (greška u fork())" -#: src/exec_monitor.c:625 src/exec_monitor.c:723 src/exec_nopty.c:700 +#: src/exec_monitor.c:604 src/exec_monitor.c:700 src/exec_nopty.c:708 msgid "unable to restore tty label" msgstr "nije moguće obnoviti TTY etiketu" -#: src/exec_monitor.c:638 src/sesh.c:217 src/sudo.c:1199 +#: src/exec_monitor.c:615 src/sesh.c:217 src/sudo.c:1204 #, 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:546 src/exec_pty.c:1035 +#: src/exec_nopty.c:554 src/exec_pty.c:1131 msgid "policy plugin failed session initialization" msgstr "plugin s pravilima nije uspio pokrenuti inicijalizaciju sesije" -#: src/exec_nopty.c:561 src/exec_pty.c:1004 src/exec_pty.c:1013 +#: src/exec_nopty.c:569 src/exec_pty.c:1100 src/exec_pty.c:1109 msgid "unable to create sockets" msgstr "nije moguće napraviti utičnice" -#: src/exec_nopty.c:688 src/exec_pty.c:1274 +#: src/exec_nopty.c:696 src/exec_pty.c:1406 msgid "error in event loop" msgstr "greška u petlji događaja" #: src/exec_preload.c:167 src/net_ifs.c:206 src/net_ifs.c:372 -#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:851 src/sudo.c:488 +#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:852 src/sudo.c:488 #: src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" -msgstr "**interna greška**, %s prelijevanje" +msgstr "**interna greška**, %s prekoračenje" -#: src/exec_ptrace.c:1079 src/exec_ptrace.c:1104 src/exec_ptrace.c:1900 +#: src/exec_ptrace.c:1080 src/exec_ptrace.c:1105 src/exec_ptrace.c:1925 #, c-format msgid "unable to set registers for process %d" msgstr "nije moguće postaviti registre za proces %d" -#: src/exec_ptrace.c:1099 src/exec_ptrace.c:1274 src/exec_ptrace.c:1616 +#: src/exec_ptrace.c:1100 src/exec_ptrace.c:1275 src/exec_ptrace.c:1628 #, c-format msgid "process %d exited unexpectedly" msgstr "%d proces završio je neočekivano" -#: src/exec_ptrace.c:1208 +#: src/exec_ptrace.c:1209 msgid "unable to set seccomp filter" msgstr "nije moguće postaviti seccomp filtar" -#: src/exec_ptrace.c:1405 +#: src/exec_ptrace.c:1406 #, c-format msgid "interpreter argument , expected \"%s\", got \"%s\"" msgstr "argument interpretera, očekivano „%s“, a dobiveno je „%s“" -#: src/exec_ptrace.c:1504 +#: src/exec_ptrace.c:1505 #, c-format msgid "pathname mismatch, expected \"%s\", got \"%s\"" msgstr "nepodudaranje imena staza, očekivano „%s“, a dobiveno je „%s“" -#: src/exec_ptrace.c:1513 src/exec_ptrace.c:1520 src/exec_ptrace.c:1533 -#: src/exec_ptrace.c:1541 src/exec_ptrace.c:1547 src/exec_ptrace.c:1553 +#: src/exec_ptrace.c:1514 src/exec_ptrace.c:1521 src/exec_ptrace.c:1545 +#: src/exec_ptrace.c:1553 src/exec_ptrace.c:1559 src/exec_ptrace.c:1565 #, c-format msgid "%s[%d] mismatch, expected \"%s\", got \"%s\"" msgstr "nepodudaranje %s[%d], očekivano „%s“, a dobiveno je „%s“" -#: src/exec_ptrace.c:1620 +#: src/exec_ptrace.c:1632 #, c-format msgid "process %d unexpected status 0x%x" msgstr "proces %d neočekivani status 0x%x" -#: src/exec_ptrace.c:1711 +#: src/exec_ptrace.c:1723 #, c-format msgid "unable to get event message for process %d" msgstr "nije moguće dobiti poruku od događaja za proces %d" -#: src/exec_ptrace.c:1718 +#: src/exec_ptrace.c:1730 #, c-format msgid "unable to get registers for process %d" msgstr "nije moguće dobiti registre za proces %d" -#: src/exec_pty.c:103 +#: src/exec_pty.c:84 msgid "unable to allocate pty" msgstr "nije moguće dodijeliti PTY" -#: src/exec_pty.c:268 src/signal.c:101 src/suspend_nopty.c:99 +#: src/exec_pty.c:131 src/exec_pty.c:284 src/tgetpass.c:251 +msgid "unable to restore terminal settings" +msgstr "nije moguće vratiti postavke terminala" + +# Handler, an asynchronous callback (computer programming) subroutine in computing +#: src/exec_pty.c:243 +msgid "unable to set handler for SIGCONT" +msgstr "nije moguće postaviti rukovatelja SIGCONT" + +# Handler, an asynchronous callback (computer programming) subroutine in computing +#: src/exec_pty.c:293 #, c-format -msgid "unable to restore handler for signal %d" -msgstr "nije moguće obnoviti rukovatelja za signal %d" +msgid "unable to set handler for SIG%s" +msgstr "nije moguće postaviti rukovatelja za SIG%s" + +#: src/exec_pty.c:317 +#, c-format +msgid "unable to restore handler for SIG%s" +msgstr "nije moguće vratiti rukovatelja za SIG%s" -#: src/exec_pty.c:1222 +#: src/exec_pty.c:345 +msgid "unable to restore handler for SIGCONT" +msgstr "nije moguće obnoviti rukovatelja za SIGCONT" + +#: src/exec_pty.c:1353 msgid "unable to send message to monitor process" msgstr "nije moguće poslati poruku za praćenje procesa" -#: src/load_plugins.c:73 src/load_plugins.c:220 src/load_plugins.c:230 -#: src/load_plugins.c:240 src/load_plugins.c:287 +#: src/load_plugins.c:75 src/load_plugins.c:222 src/load_plugins.c:232 +#: src/load_plugins.c:242 src/load_plugins.c:289 #, 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:184 src/load_plugins.c:255 +#: src/load_plugins.c:186 src/load_plugins.c:257 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "zanemareni duplikat plugina „%s“ u %s, redak %d" -#: src/load_plugins.c:222 +#: src/load_plugins.c:224 #, c-format msgid "unable to load %s: %s" msgstr "nije moguće učitati %s: %s" -#: src/load_plugins.c:232 +#: src/load_plugins.c:234 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "nije moguće pronaći simbol „%s“ u %s" -#: src/load_plugins.c:242 +#: src/load_plugins.c:244 #, 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:260 +#: src/load_plugins.c:262 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "zanemareni plugin s pravilima „%s“ u %s, redak %d" -#: src/load_plugins.c:263 +#: src/load_plugins.c:265 msgid "only a single policy plugin may be specified" msgstr "smije se navesti samo jedan plugin s pravilima" -#: src/load_plugins.c:289 +#: src/load_plugins.c:291 #, c-format msgid "unknown plugin type %d found in %s" msgstr "nepoznati tip %d plugina pronađena u %s" -#: src/load_plugins.c:472 +#: src/load_plugins.c:474 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "plugin s pravilima %s ne sadrži metodu check_policy" @@ -547,47 +571,47 @@ msgid "invalid environment variable name: %s" msgstr "nevaljano ime varijable okoline: %s" -#: src/parse_args.c:317 +#: src/parse_args.c:319 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:554 +#: src/parse_args.c:556 msgid "you may not specify both the -i and -s options" msgstr "ne smijete navesti istovremeno opcije -i i -s" -#: src/parse_args.c:559 +#: src/parse_args.c:561 msgid "you may not specify both the -i and -E options" msgstr "ne smijete navesti istovremeno opcije -i i -E" -#: src/parse_args.c:569 +#: src/parse_args.c:571 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:572 +#: src/parse_args.c:574 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:582 +#: src/parse_args.c:584 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:586 +#: src/parse_args.c:588 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:684 +#: src/parse_args.c:686 msgid "sudoedit is not supported on this platform" msgstr "sudoedit nije podržan na ovoj platformi" -#: src/parse_args.c:767 +#: src/parse_args.c:744 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:780 +#: src/parse_args.c:757 msgid "Only one of the -K, -k or -N options may be specified" msgstr "Smije se navesti samo jedna od opcija -K, -k ili -N" -#: src/parse_args.c:796 +#: src/parse_args.c:778 #, c-format msgid "" "%s - edit files as another user\n" @@ -596,7 +620,7 @@ "%s - redigira datoteku kao neki drugi korisnik\n" "\n" -#: src/parse_args.c:798 +#: src/parse_args.c:780 #, c-format msgid "" "%s - execute a command as another user\n" @@ -605,7 +629,7 @@ "%s - izvrši naredbu kao neki drugi korisnik\n" "\n" -#: src/parse_args.c:804 +#: src/parse_args.c:785 msgid "" "\n" "Options:\n" @@ -613,131 +637,131 @@ "\n" "Opcije:\n" -#: src/parse_args.c:806 +#: src/parse_args.c:787 msgid "use a helper program for password prompting" msgstr "zahtjev za lozinku koristi pomoćni program" -#: src/parse_args.c:809 +#: src/parse_args.c:790 msgid "use specified BSD authentication type" msgstr "rabi navedeni tip BSD autentifikacija" -#: src/parse_args.c:813 +#: src/parse_args.c:794 msgid "run command in the background" msgstr "pokrene naredbu u pozadini" -#: src/parse_args.c:816 +#: src/parse_args.c:797 msgid "ring bell when prompting" msgstr "pozvoni kad treba ulaz ili kad nešto pita" -#: src/parse_args.c:818 +#: src/parse_args.c:799 msgid "close all file descriptors >= num" msgstr "zatvara sve deskriptore datoteka >= num" -#: src/parse_args.c:821 +#: src/parse_args.c:802 msgid "run command with the specified BSD login class" msgstr "pokrene naredbu s navedenom BSD klasom prijave" -#: src/parse_args.c:824 +#: src/parse_args.c:805 msgid "change the working directory before running command" msgstr "promijenite radni direktorij prije pokretanja naredbe" -#: src/parse_args.c:827 +#: src/parse_args.c:808 msgid "preserve user environment when running command" msgstr "sačuva okolinu korisnika pri izvršenju naredbe" -#: src/parse_args.c:829 +#: src/parse_args.c:810 msgid "preserve specific environment variables" msgstr "sačuva specifične varijable okoline" -#: src/parse_args.c:831 +#: src/parse_args.c:812 msgid "edit files instead of running a command" msgstr "redigira datoteke umjesto pokretanja naredbe" -#: src/parse_args.c:834 +#: src/parse_args.c:815 msgid "run command as the specified group name or ID" msgstr "izvrši naredbu kao navedeno group ime ili ID" -#: src/parse_args.c:837 +#: src/parse_args.c:818 msgid "set HOME variable to target user's home dir" msgstr "var HOME postavi na osobni direktorij korisnika" -#: src/parse_args.c:840 +#: src/parse_args.c:821 msgid "display help message and exit" msgstr "pokaže ovu pomoć i iziđe" -#: src/parse_args.c:842 +#: src/parse_args.c:823 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:845 +#: src/parse_args.c:826 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:847 +#: src/parse_args.c:828 msgid "remove timestamp file completely" msgstr "sasvim ukloni datoteku s vremenskim oznakama" -#: src/parse_args.c:850 +#: src/parse_args.c:831 msgid "invalidate timestamp file" msgstr "poništi datoteku s vremenskim oznakama" -#: src/parse_args.c:853 +#: src/parse_args.c:834 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:856 +#: src/parse_args.c:837 msgid "non-interactive mode, no prompts are used" msgstr "ne-interaktivni mȏd; bez prompta" -#: src/parse_args.c:859 +#: src/parse_args.c:840 msgid "preserve group vector instead of setting to target's" msgstr "sačuva grupni vektor umjesto postavljanja na ciljanu grupu" -#: src/parse_args.c:862 +#: src/parse_args.c:843 msgid "use the specified password prompt" msgstr "koristi navedeni prompt za unos lozinke" -#: src/parse_args.c:864 +#: src/parse_args.c:845 msgid "change the root directory before running command" msgstr "promijenite root direktorij prije pokretanja naredbe" -#: src/parse_args.c:867 +#: src/parse_args.c:848 msgid "create SELinux security context with specified role" msgstr "stvori SELinux sigurnosni kontekst s navedenom role ulogom" -#: src/parse_args.c:870 +#: src/parse_args.c:851 msgid "read password from standard input" msgstr "čita lozinku iz standardnog ulaza" -#: src/parse_args.c:873 +#: src/parse_args.c:854 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:877 +#: src/parse_args.c:858 msgid "create SELinux security context with specified type" msgstr "stvori SELinux sigurnosni kontekst specificiranog tipa" -#: src/parse_args.c:880 +#: src/parse_args.c:861 msgid "terminate command after the specified time limit" msgstr "naredba završi nakon navedenog vremenskog ograničenja" -#: src/parse_args.c:883 +#: src/parse_args.c:864 msgid "in list mode, display privileges for user" msgstr "izlista popis privilegija user korisnika" -#: src/parse_args.c:886 +#: src/parse_args.c:867 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:888 +#: src/parse_args.c:869 msgid "display version information and exit" msgstr "informira o inačici ovog programa i iziđe" -#: src/parse_args.c:891 +#: src/parse_args.c:872 msgid "update user's timestamp without running a command" msgstr "obnovi vremensku oznaku korisnika bez pokretanja naredbe" -#: src/parse_args.c:894 +#: src/parse_args.c:875 msgid "stop processing command line arguments" msgstr "prestane s obradom argumenata na naredbenom retku" @@ -859,7 +883,7 @@ #: src/sesh.c:294 src/sesh.c:394 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" -msgstr "%s: simboličke veze nije dopušteno redigirati" +msgstr "%s: simboličke poveznice 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 @@ -883,6 +907,11 @@ msgid "unable to save handler for signal %d" msgstr "nije moguće sačuvati rukovatelja za signal %d" +#: src/signal.c:101 src/suspend_parent.c:149 +#, c-format +msgid "unable to restore handler for signal %d" +msgstr "nije moguće obnoviti rukovatelja za signal %d" + #: src/solaris.c:72 msgid "resource control limit has been reached" msgstr "dosegnuta je granica upravljanja resursima" @@ -926,21 +955,21 @@ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "upozorenje: nije uspjelo dodijeliti upravljanje resursima projekta „%s“" -#: src/sudo.c:216 +#: src/sudo.c:214 #, c-format msgid "Sudo version %s\n" msgstr "Sudo inačica %s\n" -#: src/sudo.c:218 +#: src/sudo.c:216 #, c-format msgid "Configure options: %s\n" msgstr "Konfiguracijske opcije: %s\n" -#: src/sudo.c:226 +#: src/sudo.c:224 msgid "fatal error, unable to load plugins" msgstr "kobna greška, nije moguće učitati plugine" -#: src/sudo.c:272 +#: src/sudo.c:270 msgid "plugin did not return a command to execute" msgstr "plugin nije uzvratio naredbu za izvršiti" @@ -949,128 +978,128 @@ msgid "unexpected sudo mode 0x%x" msgstr "neočekivani sudo mȏd 0x%x" -#: src/sudo.c:555 +#: src/sudo.c:559 #, c-format msgid "you do not exist in the %s database" msgstr "vas nema u %s bazi podataka" -#: src/sudo.c:612 +#: src/sudo.c:616 msgid "unable to determine tty" msgstr "nije moguće odrediti TTY" -#: src/sudo.c:928 +#: src/sudo.c:932 msgid "The \"no new privileges\" flag is set, which prevents sudo from running as root." msgstr "Flag „no new privileges“ je podignut, i to sprječava da sudo da postane root." -#: src/sudo.c:930 +#: src/sudo.c:934 msgid "If sudo is running in a container, you may need to adjust the container configuration to disable the flag." msgstr "Ako se sudo pokrene u kanistru (container), možda ćete morati podesiti konfiguraciju kanistra kako biste onemogućili flag." -#: src/sudo.c:964 +#: src/sudo.c:968 #, 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:967 +#: src/sudo.c:971 #, 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:973 +#: src/sudo.c:977 #, 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:989 src/tgetpass.c:331 +#: src/sudo.c:993 src/tgetpass.c:332 msgid "unable to set supplementary group IDs" msgstr "nije moguće postaviti ID dodatnih grupa" -#: src/sudo.c:996 +#: src/sudo.c:1000 #, 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:1002 +#: src/sudo.c:1006 #, c-format msgid "unable to set gid to runas gid %u" msgstr "nije moguće postaviti GID na runas GID %u" -#: src/sudo.c:1032 +#: src/sudo.c:1037 msgid "argv not set by the security policy" msgstr "argv nije postavljen po sigurnosnim pravilima" -#: src/sudo.c:1036 +#: src/sudo.c:1041 msgid "envp not set by the security policy" msgstr "envp nije postavljen po sigurnosnim pravilima" -#: src/sudo.c:1058 +#: src/sudo.c:1063 #, c-format msgid "unexpected child termination condition: %d" msgstr "neočekivano stanje završetka potomka (dijete-procesa) : %d" -#: src/sudo.c:1171 +#: src/sudo.c:1176 msgid "unable to initialize policy plugin" msgstr "nije moguće inicijalizirati plugin s pravilima" -#: src/sudo.c:1233 +#: src/sudo.c:1238 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "pluginu s pravilima %s nedostaje metoda „check_policy“" -#: src/sudo.c:1279 +#: src/sudo.c:1284 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "plugin s pravilima %s ne podržava ispis ovlasti" -#: src/sudo.c:1323 +#: src/sudo.c:1328 #, 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:1361 +#: src/sudo.c:1366 #, 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:1490 +#: src/sudo.c:1495 #, c-format msgid "error initializing I/O plugin %s" msgstr "greška pri inicijalizaciji U/I plugina %s" -#: src/sudo.c:1493 +#: src/sudo.c:1498 msgid "error initializing I/O plugin" msgstr "greška pri inicijalizaciji U/I plugina" -#: src/sudo.c:1642 +#: src/sudo.c:1647 #, c-format msgid "error initializing audit plugin %s" msgstr "greška pri inicijalizaciji plugina za reviziju %s" -#: src/sudo.c:1721 +#: src/sudo.c:1726 #, 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:1757 +#: src/sudo.c:1762 #, 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:1762 src/sudo.c:1800 +#: src/sudo.c:1767 src/sudo.c:1805 msgid "audit plugin error" msgstr "pogreška u pluginu za reviziju" -#: src/sudo.c:1795 +#: src/sudo.c:1800 #, 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:1855 +#: src/sudo.c:1860 #, c-format msgid "error initializing approval plugin %s" msgstr "greška pri inicijalizaciji plugina za odobrenje %s" -#: src/sudo.c:1925 +#: src/sudo.c:1930 msgid "command rejected by approver" msgstr "odobravatelj je odbio izvršiti naredbu" @@ -1078,55 +1107,55 @@ msgid "no writable temporary directory found" msgstr "nije pronađen privremeni direktorij u koji je moguće pisati" -#: src/sudo_edit.c:291 +#: src/sudo_edit.c:292 #, c-format msgid "%s left unmodified" msgstr "%s nije izmijenjeno" -#: src/sudo_edit.c:304 src/sudo_edit.c:569 +#: src/sudo_edit.c:305 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s nije promijenjeno" -#: src/sudo_edit.c:481 +#: src/sudo_edit.c:482 msgid "sesh: internal error: odd number of paths" msgstr "sesh: interna greška: neparni broj staza" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:484 msgid "sesh: unable to create temporary files" msgstr "sesh: nije moguće čitati privremenu datoteku" -#: src/sudo_edit.c:485 src/sudo_edit.c:604 +#: src/sudo_edit.c:486 src/sudo_edit.c:606 msgid "sesh: killed by a signal" msgstr "sesh: ubijen signalom" -#: src/sudo_edit.c:487 src/sudo_edit.c:607 +#: src/sudo_edit.c:488 src/sudo_edit.c:609 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: nepoznata greška: %d" -#: src/sudo_edit.c:597 +#: src/sudo_edit.c:599 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:601 +#: src/sudo_edit.c:603 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:646 +#: src/sudo_edit.c:650 #, c-format msgid "unable to change uid to root (%u)" msgstr "nije moguće promijeniti UID na root (%u)" -#: src/sudo_edit.c:660 +#: src/sudo_edit.c:664 msgid "plugin error: invalid file list for sudoedit" msgstr "greška plugina: nevaljani popis datoteka za sudoedit" -#: src/sudo_edit.c:681 +#: src/sudo_edit.c:685 msgid "plugin error: missing file list for sudoedit" msgstr "greška plugina: nedostaje popis datoteka za sudoedit" -#: src/sudo_edit.c:724 src/sudo_edit.c:739 +#: src/sudo_edit.c:728 src/sudo_edit.c:743 msgid "unable to read the clock" msgstr "nije moguće pročitati vrijeme (clock)" @@ -1154,30 +1183,30 @@ msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "nije specificiran askpass program, pokušajte postaviti SUDO_ASKPASS" -#: src/tgetpass.c:326 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" msgstr "nije moguće postaviti GID na %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:337 #, c-format msgid "unable to set uid to %u" msgstr "nije moguće postaviti UID na %u" -#: src/tgetpass.c:341 +#: src/tgetpass.c:342 #, c-format msgid "unable to run %s" msgstr "nije moguće pokrenuti %s" -#: src/utmp.c:288 +#: src/utmp.c:283 msgid "unable to save stdin" msgstr "nije moguće sačuvati stdin" -#: src/utmp.c:290 +#: src/utmp.c:285 msgid "unable to dup2 stdin" msgstr "dup2 nije moguće primijeniti na stdin" -#: src/utmp.c:293 +#: src/utmp.c:288 msgid "unable to restore stdin" msgstr "nije moguće obnoviti stdin" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/po/ko.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/po/ko.mo differ diff -Nru sudo-1.9.13p3/po/ko.po sudo-1.9.14p2/po/ko.po --- sudo-1.9.13p3/po/ko.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/po/ko.po 2023-07-15 15:37:22.000000000 +0000 @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.13b2\n" +"Project-Id-Version: sudo 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-27 00:35+0900\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-09 11:34+0900\n" "Last-Translator: Seong-ho Cho \n" "Language-Team: Korean \n" "Language: ko\n" @@ -17,7 +17,7 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 2.3.1\n" +"X-Generator: Poedit 3.0.1\n" #: lib/util/aix.c:89 lib/util/aix.c:169 msgid "unable to open userdb" @@ -34,73 +34,76 @@ #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 #: lib/util/json.c:55 lib/util/json.c:197 lib/util/sudo_conf.c:215 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:80 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:205 src/exec_monitor.c:460 -#: src/exec_monitor.c:466 src/exec_monitor.c:474 src/exec_monitor.c:482 -#: src/exec_monitor.c:489 src/exec_monitor.c:496 src/exec_monitor.c:503 -#: src/exec_monitor.c:510 src/exec_monitor.c:517 src/exec_monitor.c:524 -#: src/exec_monitor.c:531 src/exec_nopty.c:231 src/exec_nopty.c:240 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:78 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:171 src/exec_monitor.c:418 +#: src/exec_monitor.c:424 src/exec_monitor.c:432 src/exec_monitor.c:440 +#: src/exec_monitor.c:447 src/exec_monitor.c:454 src/exec_monitor.c:461 +#: src/exec_monitor.c:468 src/exec_monitor.c:475 src/exec_monitor.c:482 +#: src/exec_monitor.c:489 src/exec_nopty.c:231 src/exec_nopty.c:240 #: 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:318 src/exec_nopty.c:326 -#: src/exec_nopty.c:736 src/exec_preload.c:343 src/exec_ptrace.c:475 -#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1095 -#: src/exec_ptrace.c:1270 src/exec_ptrace.c:1612 src/exec_ptrace.c:1639 -#: src/exec_pty.c:511 src/exec_pty.c:692 src/exec_pty.c:882 src/exec_pty.c:891 -#: src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 src/exec_pty.c:919 -#: src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 src/exec_pty.c:947 -#: src/exec_pty.c:954 src/exec_pty.c:962 src/load_plugins.c:98 -#: src/load_plugins.c:123 src/load_plugins.c:159 src/load_plugins.c:392 -#: src/load_plugins.c:398 src/parse_args.c:172 src/parse_args.c:193 -#: src/parse_args.c:267 src/parse_args.c:623 src/parse_args.c:645 -#: src/parse_args.c:670 src/preserve_fds.c:46 src/preserve_fds.c:131 -#: src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 src/selinux.c:489 -#: src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 src/sesh.c:246 -#: src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:641 src/sudo.c:706 -#: src/sudo.c:716 src/sudo.c:743 src/sudo.c:766 src/sudo.c:775 src/sudo.c:784 -#: src/sudo.c:801 src/sudo.c:842 src/sudo.c:851 src/sudo.c:861 src/sudo.c:894 -#: src/sudo.c:1122 src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 -#: src/sudo.c:1832 src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 -#: src/sudo_edit.c:429 src/sudo_edit.c:438 src/sudo_edit.c:538 -#: src/sudo_edit.c:545 src/sudo_edit.c:688 src/sudo_edit.c:708 -#: src/sudo_intercept_common.c:115 src/sudo_intercept_common.c:340 +#: src/exec_nopty.c:744 src/exec_preload.c:343 src/exec_ptrace.c:475 +#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1096 +#: src/exec_ptrace.c:1271 src/exec_ptrace.c:1624 src/exec_ptrace.c:1651 +#: src/exec_ptrace.c:1841 src/exec_pty.c:581 src/exec_pty.c:765 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:193 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 +#: src/sesh.c:246 src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:644 +#: src/sudo.c:709 src/sudo.c:719 src/sudo.c:746 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:787 src/sudo.c:805 src/sudo.c:846 src/sudo.c:855 src/sudo.c:865 +#: src/sudo.c:898 src/sudo.c:1127 src/sudo.c:1148 src/sudo.c:1441 +#: src/sudo.c:1610 src/sudo.c:1837 src/sudo.c:2171 src/sudo_edit.c:89 +#: src/sudo_edit.c:149 src/sudo_edit.c:430 src/sudo_edit.c:439 +#: src/sudo_edit.c:540 src/sudo_edit.c:547 src/sudo_edit.c:692 +#: src/sudo_edit.c:712 src/sudo_intercept_common.c:115 +#: src/sudo_intercept_common.c:340 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:56 #: lib/util/json.c:198 lib/util/regex.c:173 lib/util/sudo_conf.c:216 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:81 src/exec_intercept.c:111 src/exec_intercept.c:344 -#: src/exec_intercept.c:518 src/exec_intercept.c:582 src/exec_intercept.c:706 -#: src/exec_intercept.c:830 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:460 src/exec_monitor.c:466 -#: src/exec_monitor.c:474 src/exec_monitor.c:482 src/exec_monitor.c:489 -#: src/exec_monitor.c:496 src/exec_monitor.c:503 src/exec_monitor.c:510 -#: src/exec_monitor.c:517 src/exec_monitor.c:524 src/exec_monitor.c:531 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:79 src/exec_intercept.c:111 src/exec_intercept.c:350 +#: src/exec_intercept.c:525 src/exec_intercept.c:589 src/exec_intercept.c:713 +#: src/exec_intercept.c:837 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:418 src/exec_monitor.c:424 +#: src/exec_monitor.c:432 src/exec_monitor.c:440 src/exec_monitor.c:447 +#: src/exec_monitor.c:454 src/exec_monitor.c:461 src/exec_monitor.c:468 +#: src/exec_monitor.c:475 src/exec_monitor.c:482 src/exec_monitor.c:489 #: src/exec_nopty.c:231 src/exec_nopty.c:240 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:318 src/exec_nopty.c:326 src/exec_preload.c:343 #: src/exec_ptrace.c:475 src/exec_ptrace.c:768 src/exec_ptrace.c:983 -#: src/exec_ptrace.c:1639 src/exec_pty.c:511 src/exec_pty.c:882 -#: src/exec_pty.c:891 src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 -#: src/exec_pty.c:919 src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 -#: src/exec_pty.c:947 src/exec_pty.c:954 src/exec_pty.c:962 -#: src/load_plugins.c:98 src/load_plugins.c:123 src/load_plugins.c:159 -#: src/load_plugins.c:392 src/load_plugins.c:398 src/parse_args.c:172 -#: src/parse_args.c:194 src/parse_args.c:267 src/parse_args.c:623 -#: src/parse_args.c:645 src/parse_args.c:670 src/preserve_fds.c:46 +#: src/exec_ptrace.c:1651 src/exec_ptrace.c:1842 src/exec_pty.c:581 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:194 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 #: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 #: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:471 -#: src/sudo.c:230 src/sudo.c:641 src/sudo.c:894 src/sudo.c:1122 -#: src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 src/sudo.c:1832 -#: src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 -#: src/sudo_edit.c:438 src/sudo_edit.c:538 src/sudo_edit.c:545 -#: src/sudo_edit.c:688 src/sudo_edit.c:708 src/sudo_intercept_common.c:115 +#: src/sudo.c:228 src/sudo.c:644 src/sudo.c:898 src/sudo.c:1127 +#: src/sudo.c:1148 src/sudo.c:1441 src/sudo.c:1610 src/sudo.c:1837 +#: src/sudo.c:2171 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:430 +#: src/sudo_edit.c:439 src/sudo_edit.c:540 src/sudo_edit.c:547 +#: src/sudo_edit.c:692 src/sudo_edit.c:712 src/sudo_intercept_common.c:115 #: src/sudo_intercept_common.c:340 msgid "unable to allocate memory" msgstr "메모리를 할당할 수 없습니다" @@ -115,9 +118,9 @@ msgid "%.*s exists but is not a directory (0%o)" msgstr "%.*s(이)가 있지만 디렉터리는 아닙니다 (0%o)" -#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:666 -#: lib/util/sudo_conf.c:696 lib/util/sudo_conf.c:703 src/selinux.c:235 -#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:494 src/sudo_edit.c:557 +#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:664 +#: lib/util/sudo_conf.c:683 lib/util/sudo_conf.c:710 src/selinux.c:235 +#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:495 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "%s을(를) 열 수 없습니다" @@ -173,22 +176,22 @@ msgid "invalid max groups \"%s\" in %s, line %u" msgstr "%2$s의 %3$u번째 줄에 부적절한 최대 그룹 값 \"%1$s\"" -#: lib/util/sudo_conf.c:669 +#: lib/util/sudo_conf.c:686 #, c-format msgid "%s is not a regular file" msgstr "%s은(는) 일반 파일이 아닙니다" -#: lib/util/sudo_conf.c:672 src/copy_file.c:164 +#: lib/util/sudo_conf.c:689 src/copy_file.c:164 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s은(는) %u uid에서 소유하고 있지만 %u uid가 소유해야 합니다" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:693 #, c-format msgid "%s is world writable" msgstr "%s에 모두가 기록할 수 있습니다" -#: lib/util/sudo_conf.c:679 +#: lib/util/sudo_conf.c:696 #, c-format msgid "%s is group writable" msgstr "%s에 그룹 구성원이 기록할 수 있습니다" @@ -237,7 +240,7 @@ msgid "%s: bad file mode: 0%o" msgstr "%s: 잘못된 파일 모드: 0%o" -#: src/edit_open.c:331 +#: src/edit_open.c:333 msgid "unable to restore current working directory" msgstr "현재 작업 디렉터리를 복원할 수 없습니다" @@ -282,18 +285,18 @@ msgid "starting from %s" msgstr "%s에서 시작 중" -#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:569 src/exec_monitor.c:571 -#: src/exec_pty.c:225 src/exec_pty.c:1026 src/exec_pty.c:1028 src/signal.c:144 -#: src/signal.c:151 src/signal.c:165 src/suspend_nopty.c:93 +#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:552 src/exec_monitor.c:554 +#: src/exec_pty.c:1122 src/exec_pty.c:1124 src/signal.c:144 src/signal.c:151 +#: src/signal.c:165 src/suspend_parent.c:143 #, c-format msgid "unable to set handler for signal %d" msgstr "%d 시그널의 핸들러를 설정할 수 없습니다" -#: src/exec.c:422 +#: src/exec.c:424 msgid "intercept mode is not supported with SELinux RBAC on this system" msgstr "이 시스템의 SELinux RBAC에서는 가로채기 모드를 지원하지 않습니다" -#: src/exec.c:427 +#: src/exec.c:429 msgid "unable to log sub-commands with SELinux RBAC on this system" msgstr "이 시스템의 SELinux RBAC에서는 하위 명령을 기록할 수 없습니다" @@ -301,240 +304,259 @@ msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "PRIV_LIMIT에서 PRIV_PROC_EXEC를 제거할 수 없습니다" -#: src/exec_intercept.c:70 src/exec_iolog.c:165 src/exec_iolog.c:175 -#: src/exec_iolog.c:220 src/exec_iolog.c:227 src/exec_iolog.c:254 -#: src/exec_monitor.c:468 src/exec_monitor.c:476 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_monitor.c:533 src/exec_nopty.c:233 src/exec_nopty.c:242 +#: src/exec_intercept.c:70 src/exec_iolog.c:163 src/exec_iolog.c:173 +#: src/exec_iolog.c:218 src/exec_iolog.c:225 src/exec_iolog.c:252 +#: src/exec_monitor.c:426 src/exec_monitor.c:434 src/exec_monitor.c:442 +#: src/exec_monitor.c:449 src/exec_monitor.c:456 src/exec_monitor.c:463 +#: src/exec_monitor.c:470 src/exec_monitor.c:477 src/exec_monitor.c:484 +#: src/exec_monitor.c:491 src/exec_nopty.c:233 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:305 #: src/exec_nopty.c:312 src/exec_nopty.c:320 src/exec_nopty.c:328 -#: src/exec_nopty.c:387 src/exec_nopty.c:453 src/exec_pty.c:360 -#: src/exec_pty.c:462 src/exec_pty.c:517 src/exec_pty.c:884 src/exec_pty.c:893 -#: src/exec_pty.c:900 src/exec_pty.c:907 src/exec_pty.c:914 src/exec_pty.c:921 -#: src/exec_pty.c:928 src/exec_pty.c:935 src/exec_pty.c:942 src/exec_pty.c:949 -#: src/exec_pty.c:956 +#: src/exec_nopty.c:387 src/exec_nopty.c:457 src/exec_pty.c:432 +#: src/exec_pty.c:537 src/exec_pty.c:587 src/exec_pty.c:965 src/exec_pty.c:974 +#: src/exec_pty.c:981 src/exec_pty.c:988 src/exec_pty.c:995 +#: src/exec_pty.c:1002 src/exec_pty.c:1009 src/exec_pty.c:1016 +#: src/exec_pty.c:1023 src/exec_pty.c:1030 src/exec_pty.c:1037 +#: src/exec_pty.c:1044 msgid "unable to add event to queue" msgstr "큐에 이벤트를 추가할 수 없습니다" -#: src/exec_intercept.c:317 src/sudo.c:1028 +#: src/exec_intercept.c:323 src/sudo.c:1033 msgid "command not set by the security policy" msgstr "보안 정책에 따라 명령을 설정하지 않았습니다" -#: src/exec_intercept.c:395 src/exec_intercept.c:435 src/sudo.c:1248 -#: src/sudo.c:1293 src/sudo.c:1337 +#: src/exec_intercept.c:401 src/exec_intercept.c:441 src/sudo.c:1253 +#: src/sudo.c:1298 src/sudo.c:1342 msgid "command rejected by policy" msgstr "정책을 통해 명령을 거부 했습니다" -#: src/exec_intercept.c:505 src/sudo.c:1935 +#: src/exec_intercept.c:512 src/sudo.c:1940 msgid "approval plugin error" msgstr "승인 플러그인 오류" -#: src/exec_intercept.c:530 src/sudo.c:1253 src/sudo.c:1298 src/sudo.c:1342 -#: src/sudo.c:1416 +#: src/exec_intercept.c:537 src/sudo.c:1258 src/sudo.c:1303 src/sudo.c:1347 +#: src/sudo.c:1421 msgid "policy plugin error" msgstr "정책 플러그인 오류" -#: src/exec_intercept.c:559 +#: src/exec_intercept.c:566 msgid "invalid PolicyCheckRequest" msgstr "부적절한 PolicyCheckRequest" -#: src/exec_intercept.c:702 +#: src/exec_intercept.c:709 #, c-format msgid "client request too large: %zu" msgstr "클라이언트 요청이 너무 깁니다: %zu" -#: src/exec_intercept.c:744 +#: src/exec_intercept.c:751 #, c-format msgid "unable to unpack %s size %zu" msgstr "%2$zu 크기의 %1$s을(를) 언팩할 수 없습니다" -#: src/exec_intercept.c:792 +#: src/exec_intercept.c:799 #, 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:818 +#: src/exec_intercept.c:825 #, c-format msgid "server message too large: %zu" msgstr "서버 메시지 길이가 너무 깁니다: %zu" -#: src/exec_iolog.c:323 src/exec_iolog.c:363 src/exec_iolog.c:403 -#: src/exec_iolog.c:454 src/exec_iolog.c:505 +#: src/exec_iolog.c:321 src/exec_iolog.c:361 src/exec_iolog.c:401 +#: src/exec_iolog.c:452 src/exec_iolog.c:503 msgid "I/O plugin error" msgstr "입출력 플러그인 오류" -#: src/exec_iolog.c:327 src/exec_iolog.c:367 src/exec_iolog.c:407 -#: src/exec_iolog.c:458 src/exec_iolog.c:509 +#: src/exec_iolog.c:325 src/exec_iolog.c:365 src/exec_iolog.c:405 +#: src/exec_iolog.c:456 src/exec_iolog.c:507 msgid "command rejected by I/O plugin" msgstr "입출력 플러그인에서 명령을 거부했습니다" -#: src/exec_iolog.c:556 +#: src/exec_iolog.c:555 msgid "error logging suspend" msgstr "오류 로깅 대기" -#: src/exec_iolog.c:591 +#: src/exec_iolog.c:590 msgid "error changing window size" msgstr "윈도우 크기 변경 오류" -#: src/exec_monitor.c:362 +#: src/exec_monitor.c:328 msgid "error reading from socketpair" msgstr "소켓쌍 읽기 오류" -#: src/exec_monitor.c:379 +#: src/exec_monitor.c:340 #, c-format msgid "unexpected reply type on backchannel: %d" msgstr "백 채널에 잘못된 응답 형식: %d" -#: src/exec_monitor.c:587 +#: src/exec_monitor.c:566 msgid "unable to set controlling tty" msgstr "처리 tty를 설정할 수 없습니다" -#: src/exec_monitor.c:595 src/exec_nopty.c:498 src/exec_nopty.c:508 -#: src/exec_nopty.c:518 src/exec_nopty.c:552 src/exec_pty.c:1097 -#: src/exec_pty.c:1118 src/exec_pty.c:1138 src/tgetpass.c:305 +#: src/exec_monitor.c:574 src/exec_nopty.c:504 src/exec_nopty.c:514 +#: src/exec_nopty.c:524 src/exec_nopty.c:560 src/exec_pty.c:1195 +#: src/exec_pty.c:1222 src/exec_pty.c:1242 src/exec_pty.c:1262 +#: src/tgetpass.c:306 msgid "unable to create pipe" msgstr "파이프를 만들 수 없습니다" # parent가 정확히 무슨 의미인지 알 수 없음 -#: src/exec_monitor.c:605 +#: src/exec_monitor.c:584 msgid "unable to receive message from parent" msgstr "상위로부터 메시지를 받을 수 없습니다" -#: src/exec_monitor.c:621 src/exec_nopty.c:595 src/exec_pty.c:1176 -#: src/sudo_edit.c:361 src/tgetpass.c:309 +#: src/exec_monitor.c:600 src/exec_nopty.c:603 src/exec_pty.c:1303 +#: src/sudo_edit.c:361 src/tgetpass.c:310 msgid "unable to fork" msgstr "포킹할 수 없습니다" -#: src/exec_monitor.c:625 src/exec_monitor.c:723 src/exec_nopty.c:700 +#: src/exec_monitor.c:604 src/exec_monitor.c:700 src/exec_nopty.c:708 msgid "unable to restore tty label" msgstr "tty 레이블을 복원할 수 없습니다" -#: src/exec_monitor.c:638 src/sesh.c:217 src/sudo.c:1199 +#: src/exec_monitor.c:615 src/sesh.c:217 src/sudo.c:1204 #, c-format msgid "unable to execute %s" msgstr "%s을(를) 실행할 수 없습니다" -#: src/exec_nopty.c:546 src/exec_pty.c:1035 +#: src/exec_nopty.c:554 src/exec_pty.c:1131 msgid "policy plugin failed session initialization" msgstr "정책 플러그인에서 세션 초기화에 실패했습니다" -#: src/exec_nopty.c:561 src/exec_pty.c:1004 src/exec_pty.c:1013 +#: src/exec_nopty.c:569 src/exec_pty.c:1100 src/exec_pty.c:1109 msgid "unable to create sockets" msgstr "소켓을 만들 수 없습니다" -#: src/exec_nopty.c:688 src/exec_pty.c:1274 +#: src/exec_nopty.c:696 src/exec_pty.c:1406 msgid "error in event loop" msgstr "이벤트 루프에 오류" #: src/exec_preload.c:167 src/net_ifs.c:206 src/net_ifs.c:372 -#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:851 src/sudo.c:488 +#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:852 src/sudo.c:488 #: src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "내부 오류, %s 오버플로우" -#: src/exec_ptrace.c:1079 src/exec_ptrace.c:1104 src/exec_ptrace.c:1900 +#: src/exec_ptrace.c:1080 src/exec_ptrace.c:1105 src/exec_ptrace.c:1925 #, c-format msgid "unable to set registers for process %d" msgstr "프로세스 %d번의 레지스터를 설정할 수 없습니다" -#: src/exec_ptrace.c:1099 src/exec_ptrace.c:1274 src/exec_ptrace.c:1616 +#: src/exec_ptrace.c:1100 src/exec_ptrace.c:1275 src/exec_ptrace.c:1628 #, c-format msgid "process %d exited unexpectedly" msgstr "프로세스 %d번이 갑자기 끝났습니다" -#: src/exec_ptrace.c:1208 +#: src/exec_ptrace.c:1209 msgid "unable to set seccomp filter" msgstr "seccomp 필터를 설정할 수 없습니다" -#: src/exec_ptrace.c:1405 +#: src/exec_ptrace.c:1406 #, c-format msgid "interpreter argument , expected \"%s\", got \"%s\"" msgstr "해석기 인자에서 \"%s\"이(가) 필요하지만 \"%s\"을(를) 지정했습니다" -#: src/exec_ptrace.c:1504 +#: src/exec_ptrace.c:1505 #, c-format msgid "pathname mismatch, expected \"%s\", got \"%s\"" msgstr "경로 이름이 일치하지 않습니다. \"%s\"을(를) 예상했지만, \"%s\"이(가) 나왔습니다" -#: src/exec_ptrace.c:1513 src/exec_ptrace.c:1520 src/exec_ptrace.c:1533 -#: src/exec_ptrace.c:1541 src/exec_ptrace.c:1547 src/exec_ptrace.c:1553 +#: src/exec_ptrace.c:1514 src/exec_ptrace.c:1521 src/exec_ptrace.c:1545 +#: src/exec_ptrace.c:1553 src/exec_ptrace.c:1559 src/exec_ptrace.c:1565 #, c-format msgid "%s[%d] mismatch, expected \"%s\", got \"%s\"" msgstr "%s[%d]이(가) 일치하지 않습니다. \"%s\"을(를) 예상했지만, \"%s\"이(가) 나왔습니다" -#: src/exec_ptrace.c:1620 +#: src/exec_ptrace.c:1632 #, c-format msgid "process %d unexpected status 0x%x" msgstr "프로세스 %d번이 갑자기 0x%x 상태를 나타냈습니다" -#: src/exec_ptrace.c:1711 +#: src/exec_ptrace.c:1723 #, c-format msgid "unable to get event message for process %d" msgstr "프로세스 %d번의 이벤트 메시지를 가져올 수 없습니다" -#: src/exec_ptrace.c:1718 +#: src/exec_ptrace.c:1730 #, c-format msgid "unable to get registers for process %d" msgstr "프로세스 %d번의 레지스터를 가져올 수 없습니다" -#: src/exec_pty.c:103 +#: src/exec_pty.c:84 msgid "unable to allocate pty" msgstr "pty를 할당할 수 없습니다" -#: src/exec_pty.c:268 src/signal.c:101 src/suspend_nopty.c:99 +#: src/exec_pty.c:131 src/exec_pty.c:284 src/tgetpass.c:251 +msgid "unable to restore terminal settings" +msgstr "터미널 설정을 복원할 수 없습니다" + +#: src/exec_pty.c:243 +msgid "unable to set handler for SIGCONT" +msgstr "SIGCONT 시그널의 핸들러를 설정할 수 없습니다" + +#: src/exec_pty.c:293 #, c-format -msgid "unable to restore handler for signal %d" -msgstr "%d 시그널의 핸들러를 복원할 수 없습니다" +msgid "unable to set handler for SIG%s" +msgstr "SIG%s 시그널의 핸들러를 설정할 수 없습니다" + +#: src/exec_pty.c:317 +#, c-format +msgid "unable to restore handler for SIG%s" +msgstr "SIG%s 시그널의 핸들러를 복원할 수 없습니다" -#: src/exec_pty.c:1222 +#: src/exec_pty.c:345 +msgid "unable to restore handler for SIGCONT" +msgstr "SIGCONT 시그널의 핸들러를 복원할 수 없습니다" + +#: src/exec_pty.c:1353 msgid "unable to send message to monitor process" msgstr "감사 프로세스에 메시지를 보낼 수 없습니다" -#: src/load_plugins.c:73 src/load_plugins.c:220 src/load_plugins.c:230 -#: src/load_plugins.c:240 src/load_plugins.c:287 +#: src/load_plugins.c:75 src/load_plugins.c:222 src/load_plugins.c:232 +#: src/load_plugins.c:242 src/load_plugins.c:289 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "%s의 %d번째 줄에서 \"%s\" 플러그인을 불러오는 중 오류" -#: src/load_plugins.c:184 src/load_plugins.c:255 +#: src/load_plugins.c:186 src/load_plugins.c:257 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "%2$s의 %3$d번째 줄에서 \"%1$s\" 중복 플러그인 무시" -#: src/load_plugins.c:222 +#: src/load_plugins.c:224 #, c-format msgid "unable to load %s: %s" msgstr "%s을(를) 불러올 수 없습니다: %s" -#: src/load_plugins.c:232 +#: src/load_plugins.c:234 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "%2$s에서 \"%1$s\" 심볼을 찾을 수 없습니다" -#: src/load_plugins.c:242 +#: src/load_plugins.c:244 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "%3$s에 주 버전이(%2$d을(를) 기대했지만) %1$d인 비호환 플러그인이 있습니다" -#: src/load_plugins.c:260 +#: src/load_plugins.c:262 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "%2$s의 %3$d번째 줄에서 \"%1$s\" 정책 플러그인 무시" -#: src/load_plugins.c:263 +#: src/load_plugins.c:265 msgid "only a single policy plugin may be specified" msgstr "단일 정책 플러그인을 지정하십시오" -#: src/load_plugins.c:289 +#: src/load_plugins.c:291 #, c-format msgid "unknown plugin type %d found in %s" msgstr "%2$s에 알 수 없는 정책 유형 %1$d이(가) 있습니다" -#: src/load_plugins.c:472 +#: src/load_plugins.c:474 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "%s 정책 플러그인에 check_policy 메서드가 없습니다" @@ -544,47 +566,47 @@ msgid "invalid environment variable name: %s" msgstr "부적절한 환경 변수 이름: %s" -#: src/parse_args.c:317 +#: src/parse_args.c:319 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "-C의 인자 값은 3보다 크거나 같아야 합니다" -#: src/parse_args.c:554 +#: src/parse_args.c:556 msgid "you may not specify both the -i and -s options" msgstr "-i 옵션과 -s 옵션을 함께 지정할 수 없습니다" -#: src/parse_args.c:559 +#: src/parse_args.c:561 msgid "you may not specify both the -i and -E options" msgstr "-i 옵션과 -E 옵션을 함께 지정할 수 없습니다" -#: src/parse_args.c:569 +#: src/parse_args.c:571 msgid "the -E option is not valid in edit mode" msgstr "-E 옵션은 편집 모드에서 유효하지 않습니다" -#: src/parse_args.c:572 +#: src/parse_args.c:574 msgid "you may not specify environment variables in edit mode" msgstr "편집 모드에서 환경 변수를 지정할 수 없습니다" -#: src/parse_args.c:582 +#: src/parse_args.c:584 msgid "the -U option may only be used with the -l option" msgstr "-U 옵션에는 -l 옵션만 함께 쓸 수 있습니다" -#: src/parse_args.c:586 +#: src/parse_args.c:588 msgid "the -A and -S options may not be used together" msgstr "-A 옵션과 -S 옵션을 함께 쓸 수 없습니다" -#: src/parse_args.c:684 +#: src/parse_args.c:686 msgid "sudoedit is not supported on this platform" msgstr "이 플랫폼에서 sudoedit를 지원하지 않습니다" -#: src/parse_args.c:767 +#: src/parse_args.c:744 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:780 +#: src/parse_args.c:757 msgid "Only one of the -K, -k or -N options may be specified" msgstr "-K, -k, -N 옵션 중 하나만 지정해야합니다" -#: src/parse_args.c:796 +#: src/parse_args.c:778 #, c-format msgid "" "%s - edit files as another user\n" @@ -593,7 +615,7 @@ "%s - 다른 사용자 권한으로 파일을 편집합니다\n" "\n" -#: src/parse_args.c:798 +#: src/parse_args.c:780 #, c-format msgid "" "%s - execute a command as another user\n" @@ -602,7 +624,7 @@ "%s - 다른 사용자 권한으로 명령을 실행합니다\n" "\n" -#: src/parse_args.c:804 +#: src/parse_args.c:785 msgid "" "\n" "Options:\n" @@ -610,131 +632,131 @@ "\n" "옵션:\n" -#: src/parse_args.c:806 +#: src/parse_args.c:787 msgid "use a helper program for password prompting" msgstr "암호 질문에 보조 프로그램 활용" -#: src/parse_args.c:809 +#: src/parse_args.c:790 msgid "use specified BSD authentication type" msgstr "지정 BSD 인증 형식 활용" -#: src/parse_args.c:813 +#: src/parse_args.c:794 msgid "run command in the background" msgstr "백그라운드에서 명령 실행" -#: src/parse_args.c:816 +#: src/parse_args.c:797 msgid "ring bell when prompting" msgstr "프롬프트를 띄울 때 알림 소리를 냅니다" -#: src/parse_args.c:818 +#: src/parse_args.c:799 msgid "close all file descriptors >= num" msgstr "num 보다 크거나 같은 모든 파일 서술자를 닫습니다" -#: src/parse_args.c:821 +#: src/parse_args.c:802 msgid "run command with the specified BSD login class" msgstr "지정 BSD 로그인 클래스로 명령을 실행합니다" -#: src/parse_args.c:824 +#: src/parse_args.c:805 msgid "change the working directory before running command" msgstr "명령 실행 전 작업 디렉터리를 바꿉니다" -#: src/parse_args.c:827 +#: src/parse_args.c:808 msgid "preserve user environment when running command" msgstr "명령을 실행할 때 사용자 환경을 유지합니다" -#: src/parse_args.c:829 +#: src/parse_args.c:810 msgid "preserve specific environment variables" msgstr "지정 환경 변수 값을 유지합니다" -#: src/parse_args.c:831 +#: src/parse_args.c:812 msgid "edit files instead of running a command" msgstr "명령을 실행하는 대신 파일을 편집합니다" -#: src/parse_args.c:834 +#: src/parse_args.c:815 msgid "run command as the specified group name or ID" msgstr "지정 그룹 이름 또는 ID로 명령을 실행합니다" -#: src/parse_args.c:837 +#: src/parse_args.c:818 msgid "set HOME variable to target user's home dir" msgstr "대상 사용자의 내 폴더에 HOME 변수를 지정합니다" -#: src/parse_args.c:840 +#: src/parse_args.c:821 msgid "display help message and exit" msgstr "도움말을 보여주고 빠져나갑니다" -#: src/parse_args.c:842 +#: src/parse_args.c:823 msgid "run command on host (if supported by plugin)" msgstr "(플러그인에서 지원한다면)호스트에서 명령을 실행합니다" -#: src/parse_args.c:845 +#: src/parse_args.c:826 msgid "run login shell as the target user; a command may also be specified" msgstr "대상 사용자 자격으로 셸에 로그인하며 명령을 지정할 수 있습니다" -#: src/parse_args.c:847 +#: src/parse_args.c:828 msgid "remove timestamp file completely" msgstr "타임스탬프 파일을 완전히 제거합니다" -#: src/parse_args.c:850 +#: src/parse_args.c:831 msgid "invalidate timestamp file" msgstr "타임스탬프 파일을 초기화합니다" -#: src/parse_args.c:853 +#: src/parse_args.c:834 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "사용자 권한을 보여주거나 지정 명령을 확인합니다. 긴 형식으로 보려면 옵션을 두 번 사용하십시오" -#: src/parse_args.c:856 +#: src/parse_args.c:837 msgid "non-interactive mode, no prompts are used" msgstr "비대화형 모드. 프롬프트를 사용하지 않습니다" -#: src/parse_args.c:859 +#: src/parse_args.c:840 msgid "preserve group vector instead of setting to target's" msgstr "대상을 설정하는 대신 그룹 벡터를 유지합니다" -#: src/parse_args.c:862 +#: src/parse_args.c:843 msgid "use the specified password prompt" msgstr "지정 암호 프롬프트를 활용합니다" -#: src/parse_args.c:864 +#: src/parse_args.c:845 msgid "change the root directory before running command" msgstr "명령 실행 전 루트 디렉터리를 바꿉니다" -#: src/parse_args.c:867 +#: src/parse_args.c:848 msgid "create SELinux security context with specified role" msgstr "지정 역할을 지닌 SELinux 보안 컨텍스트를 만듭니다" -#: src/parse_args.c:870 +#: src/parse_args.c:851 msgid "read password from standard input" msgstr "표준 입력으로 암호를 입력 받습니다" -#: src/parse_args.c:873 +#: src/parse_args.c:854 msgid "run shell as the target user; a command may also be specified" msgstr "셸을 대상 사용자 명의로 실행하며 명령을 지정할 수 있습니다" -#: src/parse_args.c:877 +#: src/parse_args.c:858 msgid "create SELinux security context with specified type" msgstr "지정 유형의 SELinux 보안 컨텍스트를 만듭니다" -#: src/parse_args.c:880 +#: src/parse_args.c:861 msgid "terminate command after the specified time limit" msgstr "지정 제한 시간 이후로 명령 실행을 멈춥니다" -#: src/parse_args.c:883 +#: src/parse_args.c:864 msgid "in list mode, display privileges for user" msgstr "목록 모드에서 사용자 권한을 보여줍니다" -#: src/parse_args.c:886 +#: src/parse_args.c:867 msgid "run command (or edit file) as specified user name or ID" msgstr "지정한 사용자 이름 또는 ID로 명령을 실행(또는 파일 편집)" -#: src/parse_args.c:888 +#: src/parse_args.c:869 msgid "display version information and exit" msgstr "버전 정보를 보여주고 나갑니다" -#: src/parse_args.c:891 +#: src/parse_args.c:872 msgid "update user's timestamp without running a command" msgstr "명령을 실행하지 않고 사용자 타임스탬프를 업데이트합니다" -#: src/parse_args.c:894 +#: src/parse_args.c:875 msgid "stop processing command line arguments" msgstr "명령행 인자 처리를 멈춥니다" @@ -878,6 +900,11 @@ msgid "unable to save handler for signal %d" msgstr "%d 시그널의 핸들러를 저장할 수 없습니다" +#: src/signal.c:101 src/suspend_parent.c:149 +#, c-format +msgid "unable to restore handler for signal %d" +msgstr "%d 시그널의 핸들러를 복원할 수 없습니다" + #: src/solaris.c:72 msgid "resource control limit has been reached" msgstr "자원 처리 한계에 도달했습니다" @@ -921,21 +948,21 @@ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "경고! \"%s\" 프로젝트에 자원 처리 할당에 실패했습니다" -#: src/sudo.c:216 +#: src/sudo.c:214 #, c-format msgid "Sudo version %s\n" msgstr "sudo 버전 %s\n" -#: src/sudo.c:218 +#: src/sudo.c:216 #, c-format msgid "Configure options: %s\n" msgstr "설정 옵션: %s\n" -#: src/sudo.c:226 +#: src/sudo.c:224 msgid "fatal error, unable to load plugins" msgstr "치명적인 오류. 플러그인을 불러올 수 없습니다" -#: src/sudo.c:272 +#: src/sudo.c:270 msgid "plugin did not return a command to execute" msgstr "플러그인에서 실행할 명령을 반환하지 않았습니다" @@ -944,128 +971,128 @@ msgid "unexpected sudo mode 0x%x" msgstr "예상치 못한 sudo 모드 0x%x" -#: src/sudo.c:555 +#: src/sudo.c:559 #, c-format msgid "you do not exist in the %s database" msgstr "%s 데이터베이스에 없는 사용자입니다" -#: src/sudo.c:612 +#: src/sudo.c:616 msgid "unable to determine tty" msgstr "tty를 지정할 수 없습니다" -#: src/sudo.c:928 +#: src/sudo.c:932 msgid "The \"no new privileges\" flag is set, which prevents sudo from running as root." msgstr "sudo를 루트 권한으로 실행하지 못하게 하는 \"no new privileges\" 플래그를 설정했습니다." -#: src/sudo.c:930 +#: src/sudo.c:934 msgid "If sudo is running in a container, you may need to adjust the container configuration to disable the flag." msgstr "컨테이너에서 sudo를 실행할 때, 플래그를 끄는 컨테이너 설정이 필요할 수 있습니다." -#: src/sudo.c:964 +#: src/sudo.c:968 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s은(는) %d uid를 소유해야 하며 setuid 비트를 설정해야 합니다" -#: src/sudo.c:967 +#: src/sudo.c:971 #, 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:973 +#: src/sudo.c:977 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "%d은(는) 유효한 uid가 아닙니다. sudo에 setuid root를 설치했습니까?" -#: src/sudo.c:989 src/tgetpass.c:331 +#: src/sudo.c:993 src/tgetpass.c:332 msgid "unable to set supplementary group IDs" msgstr "추가 그룹 ID를 설정할 수 없습니다" -#: src/sudo.c:996 +#: src/sudo.c:1000 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "유효한 gid를 %u 실행 gid로 설정할 수 없습니다" -#: src/sudo.c:1002 +#: src/sudo.c:1006 #, c-format msgid "unable to set gid to runas gid %u" msgstr "gid를 실행 gid %u(으)로 설정할 수 없습니다" -#: src/sudo.c:1032 +#: src/sudo.c:1037 msgid "argv not set by the security policy" msgstr "보안 정책에 따라 argv를 설정하지 않았습니다" -#: src/sudo.c:1036 +#: src/sudo.c:1041 msgid "envp not set by the security policy" msgstr "보안 정책에 따라 envp를 설정하지 않았습니다" -#: src/sudo.c:1058 +#: src/sudo.c:1063 #, c-format msgid "unexpected child termination condition: %d" msgstr "예상치 못한 하위 프로세스 중단 상태: %d" -#: src/sudo.c:1171 +#: src/sudo.c:1176 msgid "unable to initialize policy plugin" msgstr "정책 플러그인을 초기화할 수 없습니다" -#: src/sudo.c:1233 +#: src/sudo.c:1238 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "%s 정책 플러그인에 \"check_policy\" 메서드가 빠졌습니다" -#: src/sudo.c:1279 +#: src/sudo.c:1284 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "%s 정책 플러그인에서 권한 조회를 지원하지 않습니다" -#: src/sudo.c:1323 +#: src/sudo.c:1328 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "%s 정책 플러그인에서 -v 옵션을 지원하지 않습니다" -#: src/sudo.c:1361 +#: src/sudo.c:1366 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "%s 정책 플러그인에서 -k/-K 옵션을 지원하지 않습니다" -#: src/sudo.c:1490 +#: src/sudo.c:1495 #, c-format msgid "error initializing I/O plugin %s" msgstr "%s 입출력 플러그인 초기화 오류" -#: src/sudo.c:1493 +#: src/sudo.c:1498 msgid "error initializing I/O plugin" msgstr "입출력 플러그인 초기화 오류" -#: src/sudo.c:1642 +#: src/sudo.c:1647 #, c-format msgid "error initializing audit plugin %s" msgstr "%s 감사 플러그인 초기화 오류" -#: src/sudo.c:1721 +#: src/sudo.c:1726 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s: %s%s 오류 이벤트를 기록할 수 없습니다" -#: src/sudo.c:1757 +#: src/sudo.c:1762 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: %s%s 허용 이벤트를 기록할 수 없습니다" -#: src/sudo.c:1762 src/sudo.c:1800 +#: src/sudo.c:1767 src/sudo.c:1805 msgid "audit plugin error" msgstr "감사 플러그인 오류" -#: src/sudo.c:1795 +#: src/sudo.c:1800 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: %s%s 거부 이벤트를 기록할 수 없습니다" -#: src/sudo.c:1855 +#: src/sudo.c:1860 #, c-format msgid "error initializing approval plugin %s" msgstr "%s 승인 플러그인 초기화 오류" -#: src/sudo.c:1925 +#: src/sudo.c:1930 msgid "command rejected by approver" msgstr "승인자가 명령을 거부했습니다" @@ -1073,55 +1100,55 @@ msgid "no writable temporary directory found" msgstr "기록 가능한 임시 디렉터리를 찾을 수 없습니다" -#: src/sudo_edit.c:291 +#: src/sudo_edit.c:292 #, c-format msgid "%s left unmodified" msgstr "%s 수정하지 않은 상태로 남음" -#: src/sudo_edit.c:304 src/sudo_edit.c:569 +#: src/sudo_edit.c:305 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s 바꾸지 않음" -#: src/sudo_edit.c:481 +#: src/sudo_edit.c:482 msgid "sesh: internal error: odd number of paths" msgstr "sesh: 내부 오류: 경로에 잘못된 파일" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:484 msgid "sesh: unable to create temporary files" msgstr "sesh: 임시 파일을 만들 수 없습니다" -#: src/sudo_edit.c:485 src/sudo_edit.c:604 +#: src/sudo_edit.c:486 src/sudo_edit.c:606 msgid "sesh: killed by a signal" msgstr "sesh: 시그널을 받아 죽음" -#: src/sudo_edit.c:487 src/sudo_edit.c:607 +#: src/sudo_edit.c:488 src/sudo_edit.c:609 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: 잘못된 오류 %d" -#: src/sudo_edit.c:597 +#: src/sudo_edit.c:599 msgid "unable to copy temporary files back to their original location" msgstr "원위치에 임시 파일을 복사할 수 없습니다" -#: src/sudo_edit.c:601 +#: src/sudo_edit.c:603 msgid "unable to copy some of the temporary files back to their original location" msgstr "원 위치에 임시 파일 일부를 복사할 수 없습니다" -#: src/sudo_edit.c:646 +#: src/sudo_edit.c:650 #, c-format msgid "unable to change uid to root (%u)" msgstr "uid를 루트로 바꿀 수 없습니다(%u)" -#: src/sudo_edit.c:660 +#: src/sudo_edit.c:664 msgid "plugin error: invalid file list for sudoedit" msgstr "플러그인 오류: sudoedit의 파일 목록이 잘못됨" -#: src/sudo_edit.c:681 +#: src/sudo_edit.c:685 msgid "plugin error: missing file list for sudoedit" msgstr "플러그인 오류: sudoedit의 파일 목록이 빠짐" -#: src/sudo_edit.c:724 src/sudo_edit.c:739 +#: src/sudo_edit.c:728 src/sudo_edit.c:743 msgid "unable to read the clock" msgstr "클록을 읽을 수 없습니다" @@ -1149,30 +1176,30 @@ msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "askpass 프로그램을 지정하지 않았습니다. SUDO_ASKPASS를 설정해보십시오" -#: src/tgetpass.c:326 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" msgstr "gid를 %u(으)로 설정할 수 없습니다" -#: src/tgetpass.c:336 +#: src/tgetpass.c:337 #, c-format msgid "unable to set uid to %u" msgstr "uid를 %u(으)로 설정할 수 없습니다" -#: src/tgetpass.c:341 +#: src/tgetpass.c:342 #, c-format msgid "unable to run %s" msgstr "%s을(를) 실행할 수 없습니다" -#: src/utmp.c:288 +#: src/utmp.c:283 msgid "unable to save stdin" msgstr "표준 입력을 저장할 수 없습니다" -#: src/utmp.c:290 +#: src/utmp.c:285 msgid "unable to dup2 stdin" msgstr "표준 입력을 dup2 처리할 수 없습니다" -#: src/utmp.c:293 +#: src/utmp.c:288 msgid "unable to restore stdin" msgstr "표준 입력을 복원할 수 없습니다" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/po/pl.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/po/pl.mo differ diff -Nru sudo-1.9.13p3/po/pl.po sudo-1.9.14p2/po/pl.po --- sudo-1.9.13p3/po/pl.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/po/pl.po 2023-07-15 15:37:22.000000000 +0000 @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.13b2\n" +"Project-Id-Version: sudo 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-26 19:15+0100\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-13 16:45+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" @@ -31,73 +31,76 @@ #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 #: lib/util/json.c:55 lib/util/json.c:197 lib/util/sudo_conf.c:215 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:80 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:205 src/exec_monitor.c:460 -#: src/exec_monitor.c:466 src/exec_monitor.c:474 src/exec_monitor.c:482 -#: src/exec_monitor.c:489 src/exec_monitor.c:496 src/exec_monitor.c:503 -#: src/exec_monitor.c:510 src/exec_monitor.c:517 src/exec_monitor.c:524 -#: src/exec_monitor.c:531 src/exec_nopty.c:231 src/exec_nopty.c:240 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:78 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:171 src/exec_monitor.c:418 +#: src/exec_monitor.c:424 src/exec_monitor.c:432 src/exec_monitor.c:440 +#: src/exec_monitor.c:447 src/exec_monitor.c:454 src/exec_monitor.c:461 +#: src/exec_monitor.c:468 src/exec_monitor.c:475 src/exec_monitor.c:482 +#: src/exec_monitor.c:489 src/exec_nopty.c:231 src/exec_nopty.c:240 #: 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:318 src/exec_nopty.c:326 -#: src/exec_nopty.c:736 src/exec_preload.c:343 src/exec_ptrace.c:475 -#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1095 -#: src/exec_ptrace.c:1270 src/exec_ptrace.c:1612 src/exec_ptrace.c:1639 -#: src/exec_pty.c:511 src/exec_pty.c:692 src/exec_pty.c:882 src/exec_pty.c:891 -#: src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 src/exec_pty.c:919 -#: src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 src/exec_pty.c:947 -#: src/exec_pty.c:954 src/exec_pty.c:962 src/load_plugins.c:98 -#: src/load_plugins.c:123 src/load_plugins.c:159 src/load_plugins.c:392 -#: src/load_plugins.c:398 src/parse_args.c:172 src/parse_args.c:193 -#: src/parse_args.c:267 src/parse_args.c:623 src/parse_args.c:645 -#: src/parse_args.c:670 src/preserve_fds.c:46 src/preserve_fds.c:131 -#: src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 src/selinux.c:489 -#: src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 src/sesh.c:246 -#: src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:641 src/sudo.c:706 -#: src/sudo.c:716 src/sudo.c:743 src/sudo.c:766 src/sudo.c:775 src/sudo.c:784 -#: src/sudo.c:801 src/sudo.c:842 src/sudo.c:851 src/sudo.c:861 src/sudo.c:894 -#: src/sudo.c:1122 src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 -#: src/sudo.c:1832 src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 -#: src/sudo_edit.c:429 src/sudo_edit.c:438 src/sudo_edit.c:538 -#: src/sudo_edit.c:545 src/sudo_edit.c:688 src/sudo_edit.c:708 -#: src/sudo_intercept_common.c:115 src/sudo_intercept_common.c:340 +#: src/exec_nopty.c:744 src/exec_preload.c:343 src/exec_ptrace.c:475 +#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1096 +#: src/exec_ptrace.c:1271 src/exec_ptrace.c:1624 src/exec_ptrace.c:1651 +#: src/exec_ptrace.c:1841 src/exec_pty.c:581 src/exec_pty.c:765 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:193 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 +#: src/sesh.c:246 src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:644 +#: src/sudo.c:709 src/sudo.c:719 src/sudo.c:746 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:787 src/sudo.c:805 src/sudo.c:846 src/sudo.c:855 src/sudo.c:865 +#: src/sudo.c:898 src/sudo.c:1127 src/sudo.c:1148 src/sudo.c:1441 +#: src/sudo.c:1610 src/sudo.c:1837 src/sudo.c:2171 src/sudo_edit.c:89 +#: src/sudo_edit.c:149 src/sudo_edit.c:430 src/sudo_edit.c:439 +#: src/sudo_edit.c:540 src/sudo_edit.c:547 src/sudo_edit.c:692 +#: src/sudo_edit.c:712 src/sudo_intercept_common.c:115 +#: src/sudo_intercept_common.c:340 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:56 #: lib/util/json.c:198 lib/util/regex.c:173 lib/util/sudo_conf.c:216 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:81 src/exec_intercept.c:111 src/exec_intercept.c:344 -#: src/exec_intercept.c:518 src/exec_intercept.c:582 src/exec_intercept.c:706 -#: src/exec_intercept.c:830 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:460 src/exec_monitor.c:466 -#: src/exec_monitor.c:474 src/exec_monitor.c:482 src/exec_monitor.c:489 -#: src/exec_monitor.c:496 src/exec_monitor.c:503 src/exec_monitor.c:510 -#: src/exec_monitor.c:517 src/exec_monitor.c:524 src/exec_monitor.c:531 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:79 src/exec_intercept.c:111 src/exec_intercept.c:350 +#: src/exec_intercept.c:525 src/exec_intercept.c:589 src/exec_intercept.c:713 +#: src/exec_intercept.c:837 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:418 src/exec_monitor.c:424 +#: src/exec_monitor.c:432 src/exec_monitor.c:440 src/exec_monitor.c:447 +#: src/exec_monitor.c:454 src/exec_monitor.c:461 src/exec_monitor.c:468 +#: src/exec_monitor.c:475 src/exec_monitor.c:482 src/exec_monitor.c:489 #: src/exec_nopty.c:231 src/exec_nopty.c:240 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:318 src/exec_nopty.c:326 src/exec_preload.c:343 #: src/exec_ptrace.c:475 src/exec_ptrace.c:768 src/exec_ptrace.c:983 -#: src/exec_ptrace.c:1639 src/exec_pty.c:511 src/exec_pty.c:882 -#: src/exec_pty.c:891 src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 -#: src/exec_pty.c:919 src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 -#: src/exec_pty.c:947 src/exec_pty.c:954 src/exec_pty.c:962 -#: src/load_plugins.c:98 src/load_plugins.c:123 src/load_plugins.c:159 -#: src/load_plugins.c:392 src/load_plugins.c:398 src/parse_args.c:172 -#: src/parse_args.c:194 src/parse_args.c:267 src/parse_args.c:623 -#: src/parse_args.c:645 src/parse_args.c:670 src/preserve_fds.c:46 +#: src/exec_ptrace.c:1651 src/exec_ptrace.c:1842 src/exec_pty.c:581 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:194 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 #: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 #: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:471 -#: src/sudo.c:230 src/sudo.c:641 src/sudo.c:894 src/sudo.c:1122 -#: src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 src/sudo.c:1832 -#: src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 -#: src/sudo_edit.c:438 src/sudo_edit.c:538 src/sudo_edit.c:545 -#: src/sudo_edit.c:688 src/sudo_edit.c:708 src/sudo_intercept_common.c:115 +#: src/sudo.c:228 src/sudo.c:644 src/sudo.c:898 src/sudo.c:1127 +#: src/sudo.c:1148 src/sudo.c:1441 src/sudo.c:1610 src/sudo.c:1837 +#: src/sudo.c:2171 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:430 +#: src/sudo_edit.c:439 src/sudo_edit.c:540 src/sudo_edit.c:547 +#: src/sudo_edit.c:692 src/sudo_edit.c:712 src/sudo_intercept_common.c:115 #: src/sudo_intercept_common.c:340 msgid "unable to allocate memory" msgstr "nie udało się przydzielić pamięci" @@ -112,9 +115,9 @@ msgid "%.*s exists but is not a directory (0%o)" msgstr "%.*s istnieje, ale nie jest katalogiem (0%o)" -#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:666 -#: lib/util/sudo_conf.c:696 lib/util/sudo_conf.c:703 src/selinux.c:235 -#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:494 src/sudo_edit.c:557 +#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:664 +#: lib/util/sudo_conf.c:683 lib/util/sudo_conf.c:710 src/selinux.c:235 +#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:495 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "nie udało się otworzyć %s" @@ -170,22 +173,22 @@ 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:669 +#: lib/util/sudo_conf.c:686 #, c-format msgid "%s is not a regular file" msgstr "%s nie jest zwykłym plikiem" -#: lib/util/sudo_conf.c:672 src/copy_file.c:164 +#: lib/util/sudo_conf.c:689 src/copy_file.c:164 #, 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:676 +#: lib/util/sudo_conf.c:693 #, c-format msgid "%s is world writable" msgstr "%s jest zapisywalny dla świata" -#: lib/util/sudo_conf.c:679 +#: lib/util/sudo_conf.c:696 #, c-format msgid "%s is group writable" msgstr "%s jest zapisywalny dla grupy" @@ -234,7 +237,7 @@ msgid "%s: bad file mode: 0%o" msgstr "%s: błędny tryb pliku: 0%o" -#: src/edit_open.c:331 +#: src/edit_open.c:333 msgid "unable to restore current working directory" msgstr "nie udało się odtworzyć bieżącego kartalogu roboczego" @@ -279,18 +282,18 @@ msgid "starting from %s" msgstr "zaczynając od %s" -#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:569 src/exec_monitor.c:571 -#: src/exec_pty.c:225 src/exec_pty.c:1026 src/exec_pty.c:1028 src/signal.c:144 -#: src/signal.c:151 src/signal.c:165 src/suspend_nopty.c:93 +#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:552 src/exec_monitor.c:554 +#: src/exec_pty.c:1122 src/exec_pty.c:1124 src/signal.c:144 src/signal.c:151 +#: src/signal.c:165 src/suspend_parent.c:143 #, 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.c:422 +#: src/exec.c:424 msgid "intercept mode is not supported with SELinux RBAC on this system" msgstr "tryb przechwytywania nie jest obsługiwany z RBAC SELinux na tym systemie" -#: src/exec.c:427 +#: src/exec.c:429 msgid "unable to log sub-commands with SELinux RBAC on this system" msgstr "nie można logować podpoleceń z RBAC SELinux na tym systemie" @@ -298,239 +301,258 @@ msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "nie udało się usunąć PRIV_PROC_EXEC z PRIV_LIMIT" -#: src/exec_intercept.c:70 src/exec_iolog.c:165 src/exec_iolog.c:175 -#: src/exec_iolog.c:220 src/exec_iolog.c:227 src/exec_iolog.c:254 -#: src/exec_monitor.c:468 src/exec_monitor.c:476 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_monitor.c:533 src/exec_nopty.c:233 src/exec_nopty.c:242 +#: src/exec_intercept.c:70 src/exec_iolog.c:163 src/exec_iolog.c:173 +#: src/exec_iolog.c:218 src/exec_iolog.c:225 src/exec_iolog.c:252 +#: src/exec_monitor.c:426 src/exec_monitor.c:434 src/exec_monitor.c:442 +#: src/exec_monitor.c:449 src/exec_monitor.c:456 src/exec_monitor.c:463 +#: src/exec_monitor.c:470 src/exec_monitor.c:477 src/exec_monitor.c:484 +#: src/exec_monitor.c:491 src/exec_nopty.c:233 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:305 #: src/exec_nopty.c:312 src/exec_nopty.c:320 src/exec_nopty.c:328 -#: src/exec_nopty.c:387 src/exec_nopty.c:453 src/exec_pty.c:360 -#: src/exec_pty.c:462 src/exec_pty.c:517 src/exec_pty.c:884 src/exec_pty.c:893 -#: src/exec_pty.c:900 src/exec_pty.c:907 src/exec_pty.c:914 src/exec_pty.c:921 -#: src/exec_pty.c:928 src/exec_pty.c:935 src/exec_pty.c:942 src/exec_pty.c:949 -#: src/exec_pty.c:956 +#: src/exec_nopty.c:387 src/exec_nopty.c:457 src/exec_pty.c:432 +#: src/exec_pty.c:537 src/exec_pty.c:587 src/exec_pty.c:965 src/exec_pty.c:974 +#: src/exec_pty.c:981 src/exec_pty.c:988 src/exec_pty.c:995 +#: src/exec_pty.c:1002 src/exec_pty.c:1009 src/exec_pty.c:1016 +#: src/exec_pty.c:1023 src/exec_pty.c:1030 src/exec_pty.c:1037 +#: src/exec_pty.c:1044 msgid "unable to add event to queue" msgstr "nie udało się dodać zdarzenia do kolejki" -#: src/exec_intercept.c:317 src/sudo.c:1028 +#: src/exec_intercept.c:323 src/sudo.c:1033 msgid "command not set by the security policy" msgstr "polecenie nie ustawione przez politykę bezpieczeństwa" -#: src/exec_intercept.c:395 src/exec_intercept.c:435 src/sudo.c:1248 -#: src/sudo.c:1293 src/sudo.c:1337 +#: src/exec_intercept.c:401 src/exec_intercept.c:441 src/sudo.c:1253 +#: src/sudo.c:1298 src/sudo.c:1342 msgid "command rejected by policy" msgstr "polecenie odrzucone przez politykę" -#: src/exec_intercept.c:505 src/sudo.c:1935 +#: src/exec_intercept.c:512 src/sudo.c:1940 msgid "approval plugin error" msgstr "błąd wtyczki zgody" -#: src/exec_intercept.c:530 src/sudo.c:1253 src/sudo.c:1298 src/sudo.c:1342 -#: src/sudo.c:1416 +#: src/exec_intercept.c:537 src/sudo.c:1258 src/sudo.c:1303 src/sudo.c:1347 +#: src/sudo.c:1421 msgid "policy plugin error" msgstr "błąd wtyczki polityki" -#: src/exec_intercept.c:559 +#: src/exec_intercept.c:566 msgid "invalid PolicyCheckRequest" msgstr "błędne żądanie PolicyCheckRequest" -#: src/exec_intercept.c:702 +#: src/exec_intercept.c:709 #, c-format msgid "client request too large: %zu" msgstr "żądanie klienta zbyt duże: %zu" -#: src/exec_intercept.c:744 +#: src/exec_intercept.c:751 #, c-format msgid "unable to unpack %s size %zu" msgstr "nie udało się rozpakować %s, rozmiar %zu" -#: src/exec_intercept.c:792 +#: src/exec_intercept.c:799 #, 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:818 +#: src/exec_intercept.c:825 #, c-format msgid "server message too large: %zu" msgstr "komunikat serwera zbyt duży: %zu" -#: src/exec_iolog.c:323 src/exec_iolog.c:363 src/exec_iolog.c:403 -#: src/exec_iolog.c:454 src/exec_iolog.c:505 +#: src/exec_iolog.c:321 src/exec_iolog.c:361 src/exec_iolog.c:401 +#: src/exec_iolog.c:452 src/exec_iolog.c:503 msgid "I/O plugin error" msgstr "błąd wtyczki we/wy" -#: src/exec_iolog.c:327 src/exec_iolog.c:367 src/exec_iolog.c:407 -#: src/exec_iolog.c:458 src/exec_iolog.c:509 +#: src/exec_iolog.c:325 src/exec_iolog.c:365 src/exec_iolog.c:405 +#: src/exec_iolog.c:456 src/exec_iolog.c:507 msgid "command rejected by I/O plugin" msgstr "polecenie odrzucone przez wtyczkę we/wy" -#: src/exec_iolog.c:556 +#: src/exec_iolog.c:555 msgid "error logging suspend" msgstr "błąd logowania odroczenia" -#: src/exec_iolog.c:591 +#: src/exec_iolog.c:590 msgid "error changing window size" msgstr "błąd zmiany rozmiaru okna" -#: src/exec_monitor.c:362 +#: src/exec_monitor.c:328 msgid "error reading from socketpair" msgstr "błąd odczytu z pary gniazd" -#: src/exec_monitor.c:379 +#: src/exec_monitor.c:340 #, c-format msgid "unexpected reply type on backchannel: %d" msgstr "nieoczekiwany typ odpowiedzi z kanału zwrotnego: %d" -#: src/exec_monitor.c:587 +#: src/exec_monitor.c:566 msgid "unable to set controlling tty" msgstr "nie udało się ustawić sterującego tty" -#: src/exec_monitor.c:595 src/exec_nopty.c:498 src/exec_nopty.c:508 -#: src/exec_nopty.c:518 src/exec_nopty.c:552 src/exec_pty.c:1097 -#: src/exec_pty.c:1118 src/exec_pty.c:1138 src/tgetpass.c:305 +#: src/exec_monitor.c:574 src/exec_nopty.c:504 src/exec_nopty.c:514 +#: src/exec_nopty.c:524 src/exec_nopty.c:560 src/exec_pty.c:1195 +#: src/exec_pty.c:1222 src/exec_pty.c:1242 src/exec_pty.c:1262 +#: src/tgetpass.c:306 msgid "unable to create pipe" msgstr "nie udało się utworzyć potoku" -#: src/exec_monitor.c:605 +#: src/exec_monitor.c:584 msgid "unable to receive message from parent" msgstr "nie udało się odebrać komunikatu od rodzica" -#: src/exec_monitor.c:621 src/exec_nopty.c:595 src/exec_pty.c:1176 -#: src/sudo_edit.c:361 src/tgetpass.c:309 +#: src/exec_monitor.c:600 src/exec_nopty.c:603 src/exec_pty.c:1303 +#: src/sudo_edit.c:361 src/tgetpass.c:310 msgid "unable to fork" msgstr "nie udało się wykonać fork" -#: src/exec_monitor.c:625 src/exec_monitor.c:723 src/exec_nopty.c:700 +#: src/exec_monitor.c:604 src/exec_monitor.c:700 src/exec_nopty.c:708 msgid "unable to restore tty label" msgstr "nie udało się przywrócić etykiety tty" -#: src/exec_monitor.c:638 src/sesh.c:217 src/sudo.c:1199 +#: src/exec_monitor.c:615 src/sesh.c:217 src/sudo.c:1204 #, c-format msgid "unable to execute %s" msgstr "nie udało się wykonać %s" -#: src/exec_nopty.c:546 src/exec_pty.c:1035 +#: src/exec_nopty.c:554 src/exec_pty.c:1131 msgid "policy plugin failed session initialization" msgstr "nie udało się zainicjować sesji przez wtyczkę polityki" -#: src/exec_nopty.c:561 src/exec_pty.c:1004 src/exec_pty.c:1013 +#: src/exec_nopty.c:569 src/exec_pty.c:1100 src/exec_pty.c:1109 msgid "unable to create sockets" msgstr "nie udało się utworzyć gniazd" -#: src/exec_nopty.c:688 src/exec_pty.c:1274 +#: src/exec_nopty.c:696 src/exec_pty.c:1406 msgid "error in event loop" msgstr "błąd w pętli zdarzeń" #: src/exec_preload.c:167 src/net_ifs.c:206 src/net_ifs.c:372 -#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:851 src/sudo.c:488 +#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:852 src/sudo.c:488 #: 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/exec_ptrace.c:1079 src/exec_ptrace.c:1104 src/exec_ptrace.c:1900 +#: src/exec_ptrace.c:1080 src/exec_ptrace.c:1105 src/exec_ptrace.c:1925 #, c-format msgid "unable to set registers for process %d" msgstr "nie udało się ustawić rejestrów dla procesu %d" -#: src/exec_ptrace.c:1099 src/exec_ptrace.c:1274 src/exec_ptrace.c:1616 +#: src/exec_ptrace.c:1100 src/exec_ptrace.c:1275 src/exec_ptrace.c:1628 #, c-format msgid "process %d exited unexpectedly" msgstr "proces %d nieoczekiwanie zakończył się" -#: src/exec_ptrace.c:1208 +#: src/exec_ptrace.c:1209 msgid "unable to set seccomp filter" msgstr "nie udało się ustawić filtra seccomp" -#: src/exec_ptrace.c:1405 +#: src/exec_ptrace.c:1406 #, c-format msgid "interpreter argument , expected \"%s\", got \"%s\"" msgstr "argument interpretera - oczekiwano \"%s\", napotkano \"%s\"" -#: src/exec_ptrace.c:1504 +#: src/exec_ptrace.c:1505 #, c-format msgid "pathname mismatch, expected \"%s\", got \"%s\"" msgstr "niezgodność ścieżki, oczekiwano \"%s\", napotkano \"%s\"" -#: src/exec_ptrace.c:1513 src/exec_ptrace.c:1520 src/exec_ptrace.c:1533 -#: src/exec_ptrace.c:1541 src/exec_ptrace.c:1547 src/exec_ptrace.c:1553 +#: src/exec_ptrace.c:1514 src/exec_ptrace.c:1521 src/exec_ptrace.c:1545 +#: src/exec_ptrace.c:1553 src/exec_ptrace.c:1559 src/exec_ptrace.c:1565 #, c-format msgid "%s[%d] mismatch, expected \"%s\", got \"%s\"" msgstr "niezgodność %s[%d], oczekiwano \"%s\", napotkano \"%s\"" -#: src/exec_ptrace.c:1620 +#: src/exec_ptrace.c:1632 #, c-format msgid "process %d unexpected status 0x%x" msgstr "proces %d nieoczekiwany status 0x%x" -#: src/exec_ptrace.c:1711 +#: src/exec_ptrace.c:1723 #, c-format msgid "unable to get event message for process %d" msgstr "nie udało się pobrać komunikatu zdarzenia dla procesu %d" -#: src/exec_ptrace.c:1718 +#: src/exec_ptrace.c:1730 #, c-format msgid "unable to get registers for process %d" msgstr "nie udało się pobrać rejestrów dla procesu %d" -#: src/exec_pty.c:103 +#: src/exec_pty.c:84 msgid "unable to allocate pty" msgstr "nie udało się przydzielić pty" -#: src/exec_pty.c:268 src/signal.c:101 src/suspend_nopty.c:99 +#: src/exec_pty.c:131 src/exec_pty.c:284 src/tgetpass.c:251 +msgid "unable to restore terminal settings" +msgstr "nie udało się przywrócić ustawień terminala" + +#: src/exec_pty.c:243 +msgid "unable to set handler for SIGCONT" +msgstr "nie udało się ustawić procedury obsługi dla SIGCONT" + +#: src/exec_pty.c:293 #, c-format -msgid "unable to restore handler for signal %d" -msgstr "nie udało się przywrócić procedury obsługi dla sygnału %d" +msgid "unable to set handler for SIG%s" +msgstr "nie udało się ustawić procedury obsługi dla SIG%s" + +#: src/exec_pty.c:317 +#, c-format +msgid "unable to restore handler for SIG%s" +msgstr "nie udało się przywrócić procedury obsługi dla SIG%s" -#: src/exec_pty.c:1222 +#: src/exec_pty.c:345 +msgid "unable to restore handler for SIGCONT" +msgstr "nie udało się przywrócić procedury obsługi dla SIGCONT" + +#: src/exec_pty.c:1353 msgid "unable to send message to monitor process" msgstr "nie udało się wysłać komunikatu do procesu monitorującego" -#: src/load_plugins.c:73 src/load_plugins.c:220 src/load_plugins.c:230 -#: src/load_plugins.c:240 src/load_plugins.c:287 +#: src/load_plugins.c:75 src/load_plugins.c:222 src/load_plugins.c:232 +#: src/load_plugins.c:242 src/load_plugins.c:289 #, 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:184 src/load_plugins.c:255 +#: src/load_plugins.c:186 src/load_plugins.c:257 #, 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:222 +#: src/load_plugins.c:224 #, c-format msgid "unable to load %s: %s" msgstr "nie udało się załadować %s: %s" -#: src/load_plugins.c:232 +#: src/load_plugins.c:234 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "nie udało się odnaleźć symbolu \"%s\" w %s" -#: src/load_plugins.c:242 +#: src/load_plugins.c:244 #, 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:260 +#: src/load_plugins.c:262 #, 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:263 +#: src/load_plugins.c:265 msgid "only a single policy plugin may be specified" msgstr "może być podana tylko jedna wtyczka polityki" -#: src/load_plugins.c:289 +#: src/load_plugins.c:291 #, c-format msgid "unknown plugin type %d found in %s" msgstr "nieznany typ wtyczki %d napotkany w %s" -#: src/load_plugins.c:472 +#: src/load_plugins.c:474 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "wtyczka polityki %s nie zawiera metody check_policy" @@ -540,47 +562,47 @@ msgid "invalid environment variable name: %s" msgstr "błędna nazwa zmiennej środowiskowej: %s" -#: src/parse_args.c:317 +#: src/parse_args.c:319 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:554 +#: src/parse_args.c:556 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:559 +#: src/parse_args.c:561 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:569 +#: src/parse_args.c:571 msgid "the -E option is not valid in edit mode" msgstr "opcja -E nie jest poprawna w trybie edycji" -#: src/parse_args.c:572 +#: src/parse_args.c:574 msgid "you may not specify environment variables in edit mode" msgstr "w trybie edycji nie można przekazywać zmiennych środowiskowych" -#: src/parse_args.c:582 +#: src/parse_args.c:584 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:586 +#: src/parse_args.c:588 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:684 +#: src/parse_args.c:686 msgid "sudoedit is not supported on this platform" msgstr "sudoedit nie jest obsługiwane na tej platformie" -#: src/parse_args.c:767 +#: src/parse_args.c:744 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:780 +#: src/parse_args.c:757 msgid "Only one of the -K, -k or -N options may be specified" msgstr "Można podać tylko jedną z opcji -K, -k lub -N" -#: src/parse_args.c:796 +#: src/parse_args.c:778 #, c-format msgid "" "%s - edit files as another user\n" @@ -589,7 +611,7 @@ "%s - modyfikowanie plików jako inny użytkownik\n" "\n" -#: src/parse_args.c:798 +#: src/parse_args.c:780 #, c-format msgid "" "%s - execute a command as another user\n" @@ -598,7 +620,7 @@ "%s - wykonywanie poleceń jako inny użytkownik\n" "\n" -#: src/parse_args.c:804 +#: src/parse_args.c:785 msgid "" "\n" "Options:\n" @@ -606,131 +628,131 @@ "\n" "Opcje:\n" -#: src/parse_args.c:806 +#: src/parse_args.c:787 msgid "use a helper program for password prompting" msgstr "użycie programu pomocniczego do pytań o hasło" -#: src/parse_args.c:809 +#: src/parse_args.c:790 msgid "use specified BSD authentication type" msgstr "użycie podanego rodzaju uwierzytelnienia BSD" -#: src/parse_args.c:813 +#: src/parse_args.c:794 msgid "run command in the background" msgstr "uruchomienie polecenia w tle" -#: src/parse_args.c:816 +#: src/parse_args.c:797 msgid "ring bell when prompting" msgstr "dzwonek przy zapytaniu" -#: src/parse_args.c:818 +#: src/parse_args.c:799 msgid "close all file descriptors >= num" msgstr "zamknięcie wszystkich deskryptorów >= fd" -#: src/parse_args.c:821 +#: src/parse_args.c:802 msgid "run command with the specified BSD login class" msgstr "uruchomienie polecenia z podaną klasą logowania BSD" -#: src/parse_args.c:824 +#: src/parse_args.c:805 msgid "change the working directory before running command" msgstr "zmiana katalogu roboczego przed uruchomieniem polecenia" -#: src/parse_args.c:827 +#: src/parse_args.c:808 msgid "preserve user environment when running command" msgstr "zachowanie środowiska użytkownika przy uruchamianiu polecenia" -#: src/parse_args.c:829 +#: src/parse_args.c:810 msgid "preserve specific environment variables" msgstr "zachowanie określonych zmiennych środowiskowych" -#: src/parse_args.c:831 +#: src/parse_args.c:812 msgid "edit files instead of running a command" msgstr "modyfikowanie plików zamiast uruchomienia polecenia" -#: src/parse_args.c:834 +#: src/parse_args.c:815 msgid "run command as the specified group name or ID" msgstr "wywołanie polecenia jako określona grupa lub ID" -#: src/parse_args.c:837 +#: src/parse_args.c:818 msgid "set HOME variable to target user's home dir" msgstr "ustawienie zmiennej HOME na katalog domowy użytkownika docelowego" -#: src/parse_args.c:840 +#: src/parse_args.c:821 msgid "display help message and exit" msgstr "wyświetlenie opisu i zakończenie" -#: src/parse_args.c:842 +#: src/parse_args.c:823 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:845 +#: src/parse_args.c:826 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:847 +#: src/parse_args.c:828 msgid "remove timestamp file completely" msgstr "całkowite usunięcie pliku znacznika czasu" -#: src/parse_args.c:850 +#: src/parse_args.c:831 msgid "invalidate timestamp file" msgstr "unieważnienie pliku znacznika czasu" -#: src/parse_args.c:853 +#: src/parse_args.c:834 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:856 +#: src/parse_args.c:837 msgid "non-interactive mode, no prompts are used" msgstr "tryb nieinteraktywny, bez pytań" -#: src/parse_args.c:859 +#: src/parse_args.c:840 msgid "preserve group vector instead of setting to target's" msgstr "zachowanie wektora grup zamiast ustawiania docelowych" -#: src/parse_args.c:862 +#: src/parse_args.c:843 msgid "use the specified password prompt" msgstr "użycie podanego pytania o hasło" -#: src/parse_args.c:864 +#: src/parse_args.c:845 msgid "change the root directory before running command" msgstr "zmiana katalogu głównego przed uruchomieniem polecenia" -#: src/parse_args.c:867 +#: src/parse_args.c:848 msgid "create SELinux security context with specified role" msgstr "utworzenie kontekstu bezpieczeństwa SELinuksa z podaną rolą" -#: src/parse_args.c:870 +#: src/parse_args.c:851 msgid "read password from standard input" msgstr "odczyt hasła ze standardowego wejścia" -#: src/parse_args.c:873 +#: src/parse_args.c:854 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:877 +#: src/parse_args.c:858 msgid "create SELinux security context with specified type" msgstr "utworzenie kontekstu bezpieczeństwa SELinuksa z podanym typem" -#: src/parse_args.c:880 +#: src/parse_args.c:861 msgid "terminate command after the specified time limit" msgstr "zakończenie polecenia po zadanym limicie czasu" -#: src/parse_args.c:883 +#: src/parse_args.c:864 msgid "in list mode, display privileges for user" msgstr "w trybie listy - wyświetlenie uprawnień użytkownika" -#: src/parse_args.c:886 +#: src/parse_args.c:867 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:888 +#: src/parse_args.c:869 msgid "display version information and exit" msgstr "wyświetlenie informacji o wersji i zakończenie" -#: src/parse_args.c:891 +#: src/parse_args.c:872 msgid "update user's timestamp without running a command" msgstr "uaktualnienie znacznika czasu użytkownika bez uruchamiania polecenia" -#: src/parse_args.c:894 +#: src/parse_args.c:875 msgid "stop processing command line arguments" msgstr "zakończenie przetwarzania argumentów linii poleceń" @@ -874,6 +896,11 @@ msgid "unable to save handler for signal %d" msgstr "nie udało się zapisać procedury obsługi dla sygnału %d" +#: src/signal.c:101 src/suspend_parent.c:149 +#, 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/solaris.c:72 msgid "resource control limit has been reached" msgstr "osiągnięto limit kontroli zasobów" @@ -917,21 +944,21 @@ 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:216 +#: src/sudo.c:214 #, c-format msgid "Sudo version %s\n" msgstr "Sudo wersja %s\n" -#: src/sudo.c:218 +#: src/sudo.c:216 #, c-format msgid "Configure options: %s\n" msgstr "Opcje konfiguracji: %s\n" -#: src/sudo.c:226 +#: src/sudo.c:224 msgid "fatal error, unable to load plugins" msgstr "błąd krytyczny, nie udało się załadować wtyczek" -#: src/sudo.c:272 +#: src/sudo.c:270 msgid "plugin did not return a command to execute" msgstr "wtyczka nie zwróciła polecenia do wykonania" @@ -940,128 +967,128 @@ msgid "unexpected sudo mode 0x%x" msgstr "nieoczekiwany tryb sudo 0x%x" -#: src/sudo.c:555 +#: src/sudo.c:559 #, c-format msgid "you do not exist in the %s database" msgstr "nie istniejesz w bazie danych %s" -#: src/sudo.c:612 +#: src/sudo.c:616 msgid "unable to determine tty" msgstr "nie udało się określić tty" -#: src/sudo.c:928 +#: src/sudo.c:932 msgid "The \"no new privileges\" flag is set, which prevents sudo from running as root." msgstr "Ustawiona jest flaga \"bez nowych uprawnień\", która nie pozwala na uruchamianie sudo jako root." -#: src/sudo.c:930 +#: src/sudo.c:934 msgid "If sudo is running in a container, you may need to adjust the container configuration to disable the flag." msgstr "Jeśli sudo jest uruchomione w kontenerze, może być potrzebne dostosowanie konfiguracji kontenera w celu wyłączenia flagi." -#: src/sudo.c:964 +#: src/sudo.c:968 #, 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:967 +#: src/sudo.c:971 #, 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:973 +#: src/sudo.c:977 #, 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:989 src/tgetpass.c:331 +#: src/sudo.c:993 src/tgetpass.c:332 msgid "unable to set supplementary group IDs" msgstr "nie udało się ustawić ID dodatkowych grup" -#: src/sudo.c:996 +#: src/sudo.c:1000 #, 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:1002 +#: src/sudo.c:1006 #, 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:1032 +#: src/sudo.c:1037 msgid "argv not set by the security policy" msgstr "argv nie ustawione przez politykę bezpieczeństwa" -#: src/sudo.c:1036 +#: src/sudo.c:1041 msgid "envp not set by the security policy" msgstr "envp nie ustawione przez politykę bezpieczeństwa" -#: src/sudo.c:1058 +#: src/sudo.c:1063 #, c-format msgid "unexpected child termination condition: %d" msgstr "nieoczekiwane zakończenie procesu potomnego: %d" -#: src/sudo.c:1171 +#: src/sudo.c:1176 msgid "unable to initialize policy plugin" msgstr "nie udało się zainicjować wtyczki polityki" -#: src/sudo.c:1233 +#: src/sudo.c:1238 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "wtyczka polityki %s nie zawiera metody \"check_policy\"" -#: src/sudo.c:1279 +#: src/sudo.c:1284 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "wtyczka polityki %s nie obsługuje wypisywania uprawnień" -#: src/sudo.c:1323 +#: src/sudo.c:1328 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "wtyczka polityki %s nie obsługuje opcji -v" -#: src/sudo.c:1361 +#: src/sudo.c:1366 #, 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:1490 +#: src/sudo.c:1495 #, c-format msgid "error initializing I/O plugin %s" msgstr "błąd inicjalizacji wtyczki we/wy %s" -#: src/sudo.c:1493 +#: src/sudo.c:1498 msgid "error initializing I/O plugin" msgstr "błąd inicjowania wtyczki we/wy" -#: src/sudo.c:1642 +#: src/sudo.c:1647 #, c-format msgid "error initializing audit plugin %s" msgstr "błąd inicjowania wtyczki audytu %s" -#: src/sudo.c:1721 +#: src/sudo.c:1726 #, 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:1757 +#: src/sudo.c:1762 #, 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:1762 src/sudo.c:1800 +#: src/sudo.c:1767 src/sudo.c:1805 msgid "audit plugin error" msgstr "błąd wtyczki audytu" -#: src/sudo.c:1795 +#: src/sudo.c:1800 #, 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:1855 +#: src/sudo.c:1860 #, c-format msgid "error initializing approval plugin %s" msgstr "błąd inicjowania wtyczki zgody %s" -#: src/sudo.c:1925 +#: src/sudo.c:1930 msgid "command rejected by approver" msgstr "polecenie odrzucone przez wtyczkę zgody" @@ -1069,55 +1096,55 @@ msgid "no writable temporary directory found" msgstr "nie znaleziono katalogu tymczasowego z prawem zapisu" -#: src/sudo_edit.c:291 +#: src/sudo_edit.c:292 #, c-format msgid "%s left unmodified" msgstr "pozostawiono bez zmian: %s" -#: src/sudo_edit.c:304 src/sudo_edit.c:569 +#: src/sudo_edit.c:305 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "nie zmieniono: %s" -#: src/sudo_edit.c:481 +#: src/sudo_edit.c:482 msgid "sesh: internal error: odd number of paths" msgstr "sesh: błąd wewnętrzny: nieparzysta liczba ścieżek" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:484 msgid "sesh: unable to create temporary files" msgstr "sesh: nie udało się utworzyć plików tymczasowych" -#: src/sudo_edit.c:485 src/sudo_edit.c:604 +#: src/sudo_edit.c:486 src/sudo_edit.c:606 msgid "sesh: killed by a signal" msgstr "sesh: zabito sygnałem" -#: src/sudo_edit.c:487 src/sudo_edit.c:607 +#: src/sudo_edit.c:488 src/sudo_edit.c:609 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: nieznany błąd %d" -#: src/sudo_edit.c:597 +#: src/sudo_edit.c:599 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:601 +#: src/sudo_edit.c:603 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:646 +#: src/sudo_edit.c:650 #, 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:660 +#: src/sudo_edit.c:664 msgid "plugin error: invalid file list for sudoedit" msgstr "błąd wtyczki: błędna lista plików dla sudoedit" -#: src/sudo_edit.c:681 +#: src/sudo_edit.c:685 msgid "plugin error: missing file list for sudoedit" msgstr "błąd wtyczki: brak listy plików dla sudoedit" -#: src/sudo_edit.c:724 src/sudo_edit.c:739 +#: src/sudo_edit.c:728 src/sudo_edit.c:743 msgid "unable to read the clock" msgstr "nie udało się odczytać zegara" @@ -1145,29 +1172,29 @@ 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:326 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" msgstr "nie udało się ustawić gid-a na %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:337 #, c-format msgid "unable to set uid to %u" msgstr "nie udało się ustawić uid-a na %u" -#: src/tgetpass.c:341 +#: src/tgetpass.c:342 #, c-format msgid "unable to run %s" msgstr "nie udało się uruchomić %s" -#: src/utmp.c:288 +#: src/utmp.c:283 msgid "unable to save stdin" msgstr "nie udało się zapisać standardowego wejścia" -#: src/utmp.c:290 +#: src/utmp.c:285 msgid "unable to dup2 stdin" msgstr "nie udało się wykonać dup2 na standardowym wejściu" -#: src/utmp.c:293 +#: src/utmp.c:288 msgid "unable to restore stdin" msgstr "nie udało się przywrócić standardowego wejścia" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/po/ro.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/po/ro.mo differ diff -Nru sudo-1.9.13p3/po/ro.po sudo-1.9.14p2/po/ro.po --- sudo-1.9.13p3/po/ro.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/po/ro.po 2023-07-15 15:37:22.000000000 +0000 @@ -4,23 +4,25 @@ # This file is distributed under the same license as the sudo package. # # Florentina Mușat , 2020. -# Remus-Gabriel Chelu , 2021, 2022, 2023. +# Remus-Gabriel Chelu , 2022, 2023. # # Cronologia traducerii fișierului „sudo”: # Traducera inițială, făcută de FM, pentru versiunea sudoers 1.9.2rc1. # Actualizare a algoritmului formelor de plural (de la „trei-vechi” la „trei-nou”). -# Actualizare a traducerii pentru versiunea 1.9.10b1, făcută de R-GC. -# Actualizare a traducerii pentru versiunea 1.9.11b1, făcută de R-GC. -# Actualizare a traducerii pentru versiunea 1.9.12b2, făcută de R-GC. -# Actualizare a traducerii pentru versiunea 1.9.13b2, făcută de R-GC. -# Actualizare a traducerii pentru versiunea Y, făcută de X, Z(anul). +# Actualizare a traducerii pentru versiunea 1.9.9b1, făcută de R-GC, ian-2022. +# Actualizare a traducerii pentru versiunea 1.9.10b1, făcută de R-GC, feb-2022. +# Actualizare a traducerii pentru versiunea 1.9.11b1, făcută de R-GC, mai-2022. +# Actualizare a traducerii pentru versiunea 1.9.12b2, făcută de R-GC, oct-2022. +# Actualizare a traducerii pentru versiunea 1.9.13b2, făcută de R-GC, ian-2023. +# Actualizare a traducerii pentru versiunea 1.9.14b1, făcută de R-GC, iun-2023. +# Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul). # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.13b2\n" +"Project-Id-Version: sudo 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-26 13:47+0100\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-09 13:10+0200\n" "Last-Translator: Remus-Gabriel Chelu \n" "Language-Team: Romanian \n" "Language: ro\n" @@ -46,73 +48,76 @@ #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 #: lib/util/json.c:55 lib/util/json.c:197 lib/util/sudo_conf.c:215 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:80 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:205 src/exec_monitor.c:460 -#: src/exec_monitor.c:466 src/exec_monitor.c:474 src/exec_monitor.c:482 -#: src/exec_monitor.c:489 src/exec_monitor.c:496 src/exec_monitor.c:503 -#: src/exec_monitor.c:510 src/exec_monitor.c:517 src/exec_monitor.c:524 -#: src/exec_monitor.c:531 src/exec_nopty.c:231 src/exec_nopty.c:240 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:78 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:171 src/exec_monitor.c:418 +#: src/exec_monitor.c:424 src/exec_monitor.c:432 src/exec_monitor.c:440 +#: src/exec_monitor.c:447 src/exec_monitor.c:454 src/exec_monitor.c:461 +#: src/exec_monitor.c:468 src/exec_monitor.c:475 src/exec_monitor.c:482 +#: src/exec_monitor.c:489 src/exec_nopty.c:231 src/exec_nopty.c:240 #: 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:318 src/exec_nopty.c:326 -#: src/exec_nopty.c:736 src/exec_preload.c:343 src/exec_ptrace.c:475 -#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1095 -#: src/exec_ptrace.c:1270 src/exec_ptrace.c:1612 src/exec_ptrace.c:1639 -#: src/exec_pty.c:511 src/exec_pty.c:692 src/exec_pty.c:882 src/exec_pty.c:891 -#: src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 src/exec_pty.c:919 -#: src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 src/exec_pty.c:947 -#: src/exec_pty.c:954 src/exec_pty.c:962 src/load_plugins.c:98 -#: src/load_plugins.c:123 src/load_plugins.c:159 src/load_plugins.c:392 -#: src/load_plugins.c:398 src/parse_args.c:172 src/parse_args.c:193 -#: src/parse_args.c:267 src/parse_args.c:623 src/parse_args.c:645 -#: src/parse_args.c:670 src/preserve_fds.c:46 src/preserve_fds.c:131 -#: src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 src/selinux.c:489 -#: src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 src/sesh.c:246 -#: src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:641 src/sudo.c:706 -#: src/sudo.c:716 src/sudo.c:743 src/sudo.c:766 src/sudo.c:775 src/sudo.c:784 -#: src/sudo.c:801 src/sudo.c:842 src/sudo.c:851 src/sudo.c:861 src/sudo.c:894 -#: src/sudo.c:1122 src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 -#: src/sudo.c:1832 src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 -#: src/sudo_edit.c:429 src/sudo_edit.c:438 src/sudo_edit.c:538 -#: src/sudo_edit.c:545 src/sudo_edit.c:688 src/sudo_edit.c:708 -#: src/sudo_intercept_common.c:115 src/sudo_intercept_common.c:340 +#: src/exec_nopty.c:744 src/exec_preload.c:343 src/exec_ptrace.c:475 +#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1096 +#: src/exec_ptrace.c:1271 src/exec_ptrace.c:1624 src/exec_ptrace.c:1651 +#: src/exec_ptrace.c:1841 src/exec_pty.c:581 src/exec_pty.c:765 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:193 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 +#: src/sesh.c:246 src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:644 +#: src/sudo.c:709 src/sudo.c:719 src/sudo.c:746 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:787 src/sudo.c:805 src/sudo.c:846 src/sudo.c:855 src/sudo.c:865 +#: src/sudo.c:898 src/sudo.c:1127 src/sudo.c:1148 src/sudo.c:1441 +#: src/sudo.c:1610 src/sudo.c:1837 src/sudo.c:2171 src/sudo_edit.c:89 +#: src/sudo_edit.c:149 src/sudo_edit.c:430 src/sudo_edit.c:439 +#: src/sudo_edit.c:540 src/sudo_edit.c:547 src/sudo_edit.c:692 +#: src/sudo_edit.c:712 src/sudo_intercept_common.c:115 +#: src/sudo_intercept_common.c:340 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:56 #: lib/util/json.c:198 lib/util/regex.c:173 lib/util/sudo_conf.c:216 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:81 src/exec_intercept.c:111 src/exec_intercept.c:344 -#: src/exec_intercept.c:518 src/exec_intercept.c:582 src/exec_intercept.c:706 -#: src/exec_intercept.c:830 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:460 src/exec_monitor.c:466 -#: src/exec_monitor.c:474 src/exec_monitor.c:482 src/exec_monitor.c:489 -#: src/exec_monitor.c:496 src/exec_monitor.c:503 src/exec_monitor.c:510 -#: src/exec_monitor.c:517 src/exec_monitor.c:524 src/exec_monitor.c:531 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:79 src/exec_intercept.c:111 src/exec_intercept.c:350 +#: src/exec_intercept.c:525 src/exec_intercept.c:589 src/exec_intercept.c:713 +#: src/exec_intercept.c:837 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:418 src/exec_monitor.c:424 +#: src/exec_monitor.c:432 src/exec_monitor.c:440 src/exec_monitor.c:447 +#: src/exec_monitor.c:454 src/exec_monitor.c:461 src/exec_monitor.c:468 +#: src/exec_monitor.c:475 src/exec_monitor.c:482 src/exec_monitor.c:489 #: src/exec_nopty.c:231 src/exec_nopty.c:240 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:318 src/exec_nopty.c:326 src/exec_preload.c:343 #: src/exec_ptrace.c:475 src/exec_ptrace.c:768 src/exec_ptrace.c:983 -#: src/exec_ptrace.c:1639 src/exec_pty.c:511 src/exec_pty.c:882 -#: src/exec_pty.c:891 src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 -#: src/exec_pty.c:919 src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 -#: src/exec_pty.c:947 src/exec_pty.c:954 src/exec_pty.c:962 -#: src/load_plugins.c:98 src/load_plugins.c:123 src/load_plugins.c:159 -#: src/load_plugins.c:392 src/load_plugins.c:398 src/parse_args.c:172 -#: src/parse_args.c:194 src/parse_args.c:267 src/parse_args.c:623 -#: src/parse_args.c:645 src/parse_args.c:670 src/preserve_fds.c:46 +#: src/exec_ptrace.c:1651 src/exec_ptrace.c:1842 src/exec_pty.c:581 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:194 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 #: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 #: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:471 -#: src/sudo.c:230 src/sudo.c:641 src/sudo.c:894 src/sudo.c:1122 -#: src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 src/sudo.c:1832 -#: src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 -#: src/sudo_edit.c:438 src/sudo_edit.c:538 src/sudo_edit.c:545 -#: src/sudo_edit.c:688 src/sudo_edit.c:708 src/sudo_intercept_common.c:115 +#: src/sudo.c:228 src/sudo.c:644 src/sudo.c:898 src/sudo.c:1127 +#: src/sudo.c:1148 src/sudo.c:1441 src/sudo.c:1610 src/sudo.c:1837 +#: src/sudo.c:2171 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:430 +#: src/sudo_edit.c:439 src/sudo_edit.c:540 src/sudo_edit.c:547 +#: src/sudo_edit.c:692 src/sudo_edit.c:712 src/sudo_intercept_common.c:115 #: src/sudo_intercept_common.c:340 msgid "unable to allocate memory" msgstr "nu se poate aloca memoria" @@ -127,9 +132,9 @@ msgid "%.*s exists but is not a directory (0%o)" msgstr "%.*s există, dar nu este un director (0%o)" -#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:666 -#: lib/util/sudo_conf.c:696 lib/util/sudo_conf.c:703 src/selinux.c:235 -#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:494 src/sudo_edit.c:557 +#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:664 +#: lib/util/sudo_conf.c:683 lib/util/sudo_conf.c:710 src/selinux.c:235 +#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:495 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "nu se poate deschide %s" @@ -168,7 +173,7 @@ #: lib/util/sudo_conf.c:234 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" -msgstr "valoare de cale(path) nevalidă „%s” în %s, linia %u" +msgstr "valoare de rută(path) nevalidă „%s” în %s, linia %u" #: lib/util/sudo_conf.c:400 lib/util/sudo_conf.c:453 #, c-format @@ -185,12 +190,12 @@ msgid "invalid max groups \"%s\" in %s, line %u" msgstr "grupuri maxime nevalide „%s” în %s, linia %u" -#: lib/util/sudo_conf.c:669 +#: lib/util/sudo_conf.c:686 #, c-format msgid "%s is not a regular file" msgstr "%s nu este un fișier regulat" -#: lib/util/sudo_conf.c:672 src/copy_file.c:164 +#: lib/util/sudo_conf.c:689 src/copy_file.c:164 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s este deținut de uid-ul %u, ar trebui să fie %u" @@ -200,7 +205,7 @@ # la „inscriptibil” # - 1. pentru a fi =n consonanță cu celelalte mesaje # - 2. referința este pentru fișier, și nu pentru conținutul său -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:693 #, c-format msgid "%s is world writable" msgstr "%s este inscriptibil global" @@ -208,7 +213,7 @@ # Modificare: # de la: „este inscriptibil pe grup” # la:„este inscriptibil de către grup” -#: lib/util/sudo_conf.c:679 +#: lib/util/sudo_conf.c:696 #, c-format msgid "%s is group writable" msgstr "%s este inscriptibil de către grup" @@ -269,7 +274,7 @@ msgid "%s: bad file mode: 0%o" msgstr "%s: mod de fișier defectuos: 0%o" -#: src/edit_open.c:331 +#: src/edit_open.c:333 msgid "unable to restore current working directory" msgstr "nu se poate restaura directorul de lucru curent" @@ -322,18 +327,18 @@ # Modificare: # de la: „nu se poate stabili mânerul pentru semnalul” # la: „nu se poate stabili manipulantul pentru semnalul” -#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:569 src/exec_monitor.c:571 -#: src/exec_pty.c:225 src/exec_pty.c:1026 src/exec_pty.c:1028 src/signal.c:144 -#: src/signal.c:151 src/signal.c:165 src/suspend_nopty.c:93 +#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:552 src/exec_monitor.c:554 +#: src/exec_pty.c:1122 src/exec_pty.c:1124 src/signal.c:144 src/signal.c:151 +#: src/signal.c:165 src/suspend_parent.c:143 #, c-format msgid "unable to set handler for signal %d" msgstr "nu se poate stabili manipulantul pentru semnalul %d" -#: src/exec.c:422 +#: src/exec.c:424 msgid "intercept mode is not supported with SELinux RBAC on this system" msgstr "modul de interceptare nu este acceptat cu SELinux RBAC pe acest sistem" -#: src/exec.c:427 +#: src/exec.c:429 msgid "unable to log sub-commands with SELinux RBAC on this system" msgstr "nu se pot înregistra sub-comenzi cu SELinux RBAC pe acest sistem" @@ -341,43 +346,44 @@ msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "nu se poate elimina PRIV_PROC_EXEC de la PRIV_LIMIT" -#: src/exec_intercept.c:70 src/exec_iolog.c:165 src/exec_iolog.c:175 -#: src/exec_iolog.c:220 src/exec_iolog.c:227 src/exec_iolog.c:254 -#: src/exec_monitor.c:468 src/exec_monitor.c:476 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_monitor.c:533 src/exec_nopty.c:233 src/exec_nopty.c:242 +#: src/exec_intercept.c:70 src/exec_iolog.c:163 src/exec_iolog.c:173 +#: src/exec_iolog.c:218 src/exec_iolog.c:225 src/exec_iolog.c:252 +#: src/exec_monitor.c:426 src/exec_monitor.c:434 src/exec_monitor.c:442 +#: src/exec_monitor.c:449 src/exec_monitor.c:456 src/exec_monitor.c:463 +#: src/exec_monitor.c:470 src/exec_monitor.c:477 src/exec_monitor.c:484 +#: src/exec_monitor.c:491 src/exec_nopty.c:233 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:305 #: src/exec_nopty.c:312 src/exec_nopty.c:320 src/exec_nopty.c:328 -#: src/exec_nopty.c:387 src/exec_nopty.c:453 src/exec_pty.c:360 -#: src/exec_pty.c:462 src/exec_pty.c:517 src/exec_pty.c:884 src/exec_pty.c:893 -#: src/exec_pty.c:900 src/exec_pty.c:907 src/exec_pty.c:914 src/exec_pty.c:921 -#: src/exec_pty.c:928 src/exec_pty.c:935 src/exec_pty.c:942 src/exec_pty.c:949 -#: src/exec_pty.c:956 +#: src/exec_nopty.c:387 src/exec_nopty.c:457 src/exec_pty.c:432 +#: src/exec_pty.c:537 src/exec_pty.c:587 src/exec_pty.c:965 src/exec_pty.c:974 +#: src/exec_pty.c:981 src/exec_pty.c:988 src/exec_pty.c:995 +#: src/exec_pty.c:1002 src/exec_pty.c:1009 src/exec_pty.c:1016 +#: src/exec_pty.c:1023 src/exec_pty.c:1030 src/exec_pty.c:1037 +#: src/exec_pty.c:1044 msgid "unable to add event to queue" msgstr "nu se poate adăuga evenimentul la coadă" -#: src/exec_intercept.c:317 src/sudo.c:1028 +#: src/exec_intercept.c:323 src/sudo.c:1033 msgid "command not set by the security policy" msgstr "comanda nu este stabilită de politica de securitate" -#: src/exec_intercept.c:395 src/exec_intercept.c:435 src/sudo.c:1248 -#: src/sudo.c:1293 src/sudo.c:1337 +#: src/exec_intercept.c:401 src/exec_intercept.c:441 src/sudo.c:1253 +#: src/sudo.c:1298 src/sudo.c:1342 msgid "command rejected by policy" msgstr "comandă respinsă de politică" -#: src/exec_intercept.c:505 src/sudo.c:1935 +#: src/exec_intercept.c:512 src/sudo.c:1940 msgid "approval plugin error" msgstr "eroare la modulul de aprobare" -#: src/exec_intercept.c:530 src/sudo.c:1253 src/sudo.c:1298 src/sudo.c:1342 -#: src/sudo.c:1416 +#: src/exec_intercept.c:537 src/sudo.c:1258 src/sudo.c:1303 src/sudo.c:1347 +#: src/sudo.c:1421 msgid "policy plugin error" msgstr "eroare de modul de politică" -#: src/exec_intercept.c:559 +#: src/exec_intercept.c:566 msgid "invalid PolicyCheckRequest" msgstr "PolicyCheckRequest nevalid" @@ -390,12 +396,12 @@ # Eu, unul n-am posibilitatea de-a verifica în practică, toate mesajele... # Acesta pare să fie un mesaj pentru LDAP..., iar # eu nu utilizez LDAP -#: src/exec_intercept.c:702 +#: src/exec_intercept.c:709 #, c-format msgid "client request too large: %zu" msgstr "cererea clientului este prea mare: %zu" -#: src/exec_intercept.c:744 +#: src/exec_intercept.c:751 #, c-format msgid "unable to unpack %s size %zu" msgstr "nu se poate despacheta %s cu dimensiunea %zu" @@ -404,12 +410,12 @@ # „type_case cu o valoare neașteptată %d în %s de la %s” # poate suna/era mai bine: # „valoare (a) type_case neașteptată %d, în %s de la %s” -#: src/exec_intercept.c:792 +#: src/exec_intercept.c:799 #, c-format msgid "unexpected type_case value %d in %s from %s" msgstr "type_case cu o valoare neașteptată %d în %s de la %s" -#: src/exec_intercept.c:818 +#: src/exec_intercept.c:825 #, c-format msgid "server message too large: %zu" msgstr "mesaj de la server prea mare: %zu" @@ -418,25 +424,25 @@ # „Eroare de plugin I/O” # la: „Eroare a modulului In/Ieș(I/O)” # Pentru coerență cu restul traducerii, și nu numai... -#: src/exec_iolog.c:323 src/exec_iolog.c:363 src/exec_iolog.c:403 -#: src/exec_iolog.c:454 src/exec_iolog.c:505 +#: src/exec_iolog.c:321 src/exec_iolog.c:361 src/exec_iolog.c:401 +#: src/exec_iolog.c:452 src/exec_iolog.c:503 msgid "I/O plugin error" msgstr "Eroare a modulului In/Ieș(I/O)" -#: src/exec_iolog.c:327 src/exec_iolog.c:367 src/exec_iolog.c:407 -#: src/exec_iolog.c:458 src/exec_iolog.c:509 +#: src/exec_iolog.c:325 src/exec_iolog.c:365 src/exec_iolog.c:405 +#: src/exec_iolog.c:456 src/exec_iolog.c:507 msgid "command rejected by I/O plugin" msgstr "comandă respinsă de modulul In/Ieș/(I/O)" -#: src/exec_iolog.c:556 +#: src/exec_iolog.c:555 msgid "error logging suspend" msgstr "eroare la suspendarea jurnalizării" -#: src/exec_iolog.c:591 +#: src/exec_iolog.c:590 msgid "error changing window size" msgstr "eroare la schimbarea dimensiunii ferestrei" -#: src/exec_monitor.c:362 +#: src/exec_monitor.c:328 msgid "error reading from socketpair" msgstr "eroare la citirea de la socketpair" @@ -447,143 +453,170 @@ # canal secundar # canal posterior # canal din spate -#: src/exec_monitor.c:379 +#: src/exec_monitor.c:340 #, c-format msgid "unexpected reply type on backchannel: %d" msgstr "tip de răspuns neașteptat pe backchannel: %d" -#: src/exec_monitor.c:587 +#: src/exec_monitor.c:566 msgid "unable to set controlling tty" msgstr "nu se poate stabili tty de control" # Schimbat de la: „linia de asamblare” # la: „tubul conector” -#: src/exec_monitor.c:595 src/exec_nopty.c:498 src/exec_nopty.c:508 -#: src/exec_nopty.c:518 src/exec_nopty.c:552 src/exec_pty.c:1097 -#: src/exec_pty.c:1118 src/exec_pty.c:1138 src/tgetpass.c:305 +#: src/exec_monitor.c:574 src/exec_nopty.c:504 src/exec_nopty.c:514 +#: src/exec_nopty.c:524 src/exec_nopty.c:560 src/exec_pty.c:1195 +#: src/exec_pty.c:1222 src/exec_pty.c:1242 src/exec_pty.c:1262 +#: src/tgetpass.c:306 msgid "unable to create pipe" msgstr "nu se poate crea „tubul conector”(pipe)" # Modificat de la: „de la superior” # la: „de la procesul părinte” -#: src/exec_monitor.c:605 +#: src/exec_monitor.c:584 msgid "unable to receive message from parent" msgstr "nu se poate primi mesajul de la procesul părinte" # Modificat de la: # „nu se poate da fork” # la: „nu se poate bifurca” -#: src/exec_monitor.c:621 src/exec_nopty.c:595 src/exec_pty.c:1176 -#: src/sudo_edit.c:361 src/tgetpass.c:309 +#: src/exec_monitor.c:600 src/exec_nopty.c:603 src/exec_pty.c:1303 +#: src/sudo_edit.c:361 src/tgetpass.c:310 msgid "unable to fork" msgstr "nu se poate bifurca" -#: src/exec_monitor.c:625 src/exec_monitor.c:723 src/exec_nopty.c:700 +#: src/exec_monitor.c:604 src/exec_monitor.c:700 src/exec_nopty.c:708 msgid "unable to restore tty label" msgstr "nu se poate restaura eticheta tty" -#: src/exec_monitor.c:638 src/sesh.c:217 src/sudo.c:1199 +#: src/exec_monitor.c:615 src/sesh.c:217 src/sudo.c:1204 #, c-format msgid "unable to execute %s" msgstr "nu se poate executa %s" -#: src/exec_nopty.c:546 src/exec_pty.c:1035 +#: src/exec_nopty.c:554 src/exec_pty.c:1131 msgid "policy plugin failed session initialization" msgstr "modulul de politică a eșuat la inițializarea sesiunii" -#: src/exec_nopty.c:561 src/exec_pty.c:1004 src/exec_pty.c:1013 +#: src/exec_nopty.c:569 src/exec_pty.c:1100 src/exec_pty.c:1109 msgid "unable to create sockets" msgstr "nu se pot crea socluri" -#: src/exec_nopty.c:688 src/exec_pty.c:1274 +#: src/exec_nopty.c:696 src/exec_pty.c:1406 msgid "error in event loop" msgstr "eroare în bucla de eveniment" #: src/exec_preload.c:167 src/net_ifs.c:206 src/net_ifs.c:372 -#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:851 src/sudo.c:488 +#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:852 src/sudo.c:488 #: src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "eroare internă, supraplin %s" -#: src/exec_ptrace.c:1079 src/exec_ptrace.c:1104 src/exec_ptrace.c:1900 +#: src/exec_ptrace.c:1080 src/exec_ptrace.c:1105 src/exec_ptrace.c:1925 #, c-format msgid "unable to set registers for process %d" msgstr "nu se pot configura registrele pentru procesul %d" -#: src/exec_ptrace.c:1099 src/exec_ptrace.c:1274 src/exec_ptrace.c:1616 +#: src/exec_ptrace.c:1100 src/exec_ptrace.c:1275 src/exec_ptrace.c:1628 #, c-format msgid "process %d exited unexpectedly" msgstr "procesul %d a ieșit în mod neașteptat" -#: src/exec_ptrace.c:1208 +#: src/exec_ptrace.c:1209 msgid "unable to set seccomp filter" msgstr "nu se poate configura filtrul seccomp" -#: src/exec_ptrace.c:1405 +#: src/exec_ptrace.c:1406 #, c-format msgid "interpreter argument , expected \"%s\", got \"%s\"" msgstr "argument interpret, era așteptat „%s”, s-a primit „%s”" -#: src/exec_ptrace.c:1504 +#: src/exec_ptrace.c:1505 #, c-format msgid "pathname mismatch, expected \"%s\", got \"%s\"" -msgstr "nepotrivire în numele de cale, era așteptat „%s”, s-a primit „%s”" +msgstr "nepotrivire în numele de rută, era așteptat „%s”, s-a primit „%s”" -#: src/exec_ptrace.c:1513 src/exec_ptrace.c:1520 src/exec_ptrace.c:1533 -#: src/exec_ptrace.c:1541 src/exec_ptrace.c:1547 src/exec_ptrace.c:1553 +#: src/exec_ptrace.c:1514 src/exec_ptrace.c:1521 src/exec_ptrace.c:1545 +#: src/exec_ptrace.c:1553 src/exec_ptrace.c:1559 src/exec_ptrace.c:1565 #, c-format msgid "%s[%d] mismatch, expected \"%s\", got \"%s\"" msgstr "nepotrivire în %s[%d], era așteptat „%s”, s-a primit „%s”" -#: src/exec_ptrace.c:1620 +#: src/exec_ptrace.c:1632 #, c-format msgid "process %d unexpected status 0x%x" msgstr "stare neașteptată a procesului %d: 0x%x" -#: src/exec_ptrace.c:1711 +#: src/exec_ptrace.c:1723 #, c-format msgid "unable to get event message for process %d" msgstr "nu s-a putut obține mesajul de eveniment pentru procesul %d" -#: src/exec_ptrace.c:1718 +#: src/exec_ptrace.c:1730 #, c-format msgid "unable to get registers for process %d" msgstr "nu se pot obține registrele pentru procesul %d" -#: src/exec_pty.c:103 +#: src/exec_pty.c:84 msgid "unable to allocate pty" msgstr "nu se poate aloca pty" +#: src/exec_pty.c:131 src/exec_pty.c:284 src/tgetpass.c:251 +msgid "unable to restore terminal settings" +msgstr "nu se pot restaura configurările terminalului" + +# Modificare: +# de la: „nu se poate stabili mânerul pentru semnalul” +# la: „nu se poate stabili manipulantul pentru semnalul” +#: src/exec_pty.c:243 +msgid "unable to set handler for SIGCONT" +msgstr "nu se poate stabili gestionarul pentru semnalul SIGCONT" + # Modificare: # de la: „nu se poate stabili mânerul pentru semnalul” # la: „nu se poate stabili manipulantul pentru semnalul” -#: src/exec_pty.c:268 src/signal.c:101 src/suspend_nopty.c:99 +#: src/exec_pty.c:293 #, c-format -msgid "unable to restore handler for signal %d" -msgstr "nu se poate restaura manipulantul pentru semnalul %d" +msgid "unable to set handler for SIG%s" +msgstr "nu se poate stabili gestionarul pentru semnalul SIG%s" -#: src/exec_pty.c:1222 +# Modificare: +# de la: „nu se poate stabili mânerul pentru semnalul” +# la: „nu se poate stabili manipulantul pentru semnalul” +#: src/exec_pty.c:317 +#, c-format +msgid "unable to restore handler for SIG%s" +msgstr "nu se poate restaura gestionarul pentru semnalul SIG%s" + +# Modificare: +# de la: „nu se poate stabili mânerul pentru semnalul” +# la: „nu se poate stabili manipulantul pentru semnalul” +#: src/exec_pty.c:345 +msgid "unable to restore handler for SIGCONT" +msgstr "nu se poate restaura gestionarul pentru semnalul SIGCONT" + +#: src/exec_pty.c:1353 msgid "unable to send message to monitor process" msgstr "nu se poate trimite mesajul la procesul de monitorizare" -#: src/load_plugins.c:73 src/load_plugins.c:220 src/load_plugins.c:230 -#: src/load_plugins.c:240 src/load_plugins.c:287 +#: src/load_plugins.c:75 src/load_plugins.c:222 src/load_plugins.c:232 +#: src/load_plugins.c:242 src/load_plugins.c:289 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "eroare în %s, linia %d în timpul încărcării modulului „%s”" -#: src/load_plugins.c:184 src/load_plugins.c:255 +#: src/load_plugins.c:186 src/load_plugins.c:257 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "se ignoră modulul duplicat „%s” în %s, linia %d" -#: src/load_plugins.c:222 +#: src/load_plugins.c:224 #, c-format msgid "unable to load %s: %s" msgstr "nu se poate încărca %s: %s" -#: src/load_plugins.c:232 +#: src/load_plugins.c:234 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "nu se poate găsi simbolul „%s” în %s" @@ -595,26 +628,26 @@ # e posibil ca poziția corectă a primei variabile, „%d”; # să fie: # „versiune majoră a modulului %d incompatibilă” -#: src/load_plugins.c:242 +#: src/load_plugins.c:244 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "versiune majoră a modulului incompatibilă %d (se aștepta %d) găsită în %s" -#: src/load_plugins.c:260 +#: src/load_plugins.c:262 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "se ignoră modulul de politică „%s” în %s, linia %d" -#: src/load_plugins.c:263 +#: src/load_plugins.c:265 msgid "only a single policy plugin may be specified" msgstr "doar un singur modul de politică poate fi specificat" -#: src/load_plugins.c:289 +#: src/load_plugins.c:291 #, c-format msgid "unknown plugin type %d found in %s" msgstr "tip de modul necunoscut %d găsit în %s" -#: src/load_plugins.c:472 +#: src/load_plugins.c:474 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "modulul de politică %s nu include o metodă check_policy" @@ -626,50 +659,50 @@ # Modificat de la: „mai mare decît sau egal cu 3” # la: „mai mare sau egal cu 3” -#: src/parse_args.c:317 +#: src/parse_args.c:319 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "argumentul la -C trebuie să fie un număr mai mare sau egal cu 3" # Modificat de la: „trebuie să specificați amândouă opțiunile -i și -s” # la: „nu puteți specifica ambele opțiuni, -i și -s” # ATENȚIE, și la traducerea următoare, mesajul de tradus este aproape identic acestuia, traducerea nu chiar... -#: src/parse_args.c:554 +#: src/parse_args.c:556 msgid "you may not specify both the -i and -s options" msgstr "nu puteți specifica ambele opțiuni, -i și -s" -#: src/parse_args.c:559 +#: src/parse_args.c:561 msgid "you may not specify both the -i and -E options" msgstr "nu puteți specifica amândouă opțiunile -i și -E" -#: src/parse_args.c:569 +#: src/parse_args.c:571 msgid "the -E option is not valid in edit mode" msgstr "opțiunea -E nu este validă în modul editare" -#: src/parse_args.c:572 +#: src/parse_args.c:574 msgid "you may not specify environment variables in edit mode" msgstr "nu puteți specifica variabile de mediu în modul editare" -#: src/parse_args.c:582 +#: src/parse_args.c:584 msgid "the -U option may only be used with the -l option" msgstr "opțiunea -U poate fi utilizată doar cu opțiunea -l" -#: src/parse_args.c:586 +#: src/parse_args.c:588 msgid "the -A and -S options may not be used together" msgstr "opțiunile -A și -S nu pot fi utilizate împreună" -#: src/parse_args.c:684 +#: src/parse_args.c:686 msgid "sudoedit is not supported on this platform" msgstr "sudoedit nu este suportat pe această platformă" -#: src/parse_args.c:767 +#: src/parse_args.c:744 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "Doar una dintre opțiunile -e, -h, -i, -K, -l, -s, -v sau -V poate fi specificată" -#: src/parse_args.c:780 +#: src/parse_args.c:757 msgid "Only one of the -K, -k or -N options may be specified" msgstr "Doar una dintre opțiunile -K, -k sau -N poate fi specificată" -#: src/parse_args.c:796 +#: src/parse_args.c:778 #, c-format msgid "" "%s - edit files as another user\n" @@ -678,7 +711,7 @@ "%s - editează fișiere ca alt utilizator\n" "\n" -#: src/parse_args.c:798 +#: src/parse_args.c:780 #, c-format msgid "" "%s - execute a command as another user\n" @@ -687,7 +720,7 @@ "%s - execută o comandă ca alt utilizator\n" "\n" -#: src/parse_args.c:804 +#: src/parse_args.c:785 msgid "" "\n" "Options:\n" @@ -701,118 +734,118 @@ # - „utilizează un program auxiliar pentru solicitarea parolei” # Recenzie, Daniel Șegărceanu: a doua variantă, sună mai bine. # Am aplicat-o, în fond era și impresia mea, dar nu vroiam să modific prea mult fișierul... -#: src/parse_args.c:806 +#: src/parse_args.c:787 msgid "use a helper program for password prompting" msgstr "utilizează un program auxiliar pentru solicitarea parolei" -#: src/parse_args.c:809 +#: src/parse_args.c:790 msgid "use specified BSD authentication type" msgstr "utilizează un tip de autentificare BSD specificat" -#: src/parse_args.c:813 +#: src/parse_args.c:794 msgid "run command in the background" msgstr "rulează comanda în fundal" -#: src/parse_args.c:816 +#: src/parse_args.c:797 msgid "ring bell when prompting" msgstr "sună din clopoțel atunci când se solicită" -#: src/parse_args.c:818 +#: src/parse_args.c:799 msgid "close all file descriptors >= num" msgstr "închide toți descriptorii de fișier >= num" -#: src/parse_args.c:821 +#: src/parse_args.c:802 msgid "run command with the specified BSD login class" msgstr "rulează comanda cu clasa de autentificare BSD specificată" -#: src/parse_args.c:824 +#: src/parse_args.c:805 msgid "change the working directory before running command" msgstr "schimbă directorul de lucru înainte de-a executa comanda" -#: src/parse_args.c:827 +#: src/parse_args.c:808 msgid "preserve user environment when running command" msgstr "păstrează mediul utilizatorului atunci când se rulează comanda" -#: src/parse_args.c:829 +#: src/parse_args.c:810 msgid "preserve specific environment variables" msgstr "păstrează variabile de mediu specifice" -#: src/parse_args.c:831 +#: src/parse_args.c:812 msgid "edit files instead of running a command" msgstr "editează fișiere în locul rulării unei comenzi" # Modificat de la: „rulează comanda ca numele sau ID-ul de grup specificat" # la: # „rulează comanda ca grupul cu numele sau ID-ul specificat” -#: src/parse_args.c:834 +#: src/parse_args.c:815 msgid "run command as the specified group name or ID" msgstr "rulează comanda ca grupul cu numele sau ID-ul specificat" -#: src/parse_args.c:837 +#: src/parse_args.c:818 msgid "set HOME variable to target user's home dir" msgstr "stabilește variabila HOME să țintească spre directorul personal al utilizatorului" -#: src/parse_args.c:840 +#: src/parse_args.c:821 msgid "display help message and exit" msgstr "afișează mesajul de ajutor și iese" -#: src/parse_args.c:842 +#: src/parse_args.c:823 msgid "run command on host (if supported by plugin)" msgstr "rulează comanda pe gazdă (dacă este suportat de modul)" -#: src/parse_args.c:845 +#: src/parse_args.c:826 msgid "run login shell as the target user; a command may also be specified" msgstr "rulează shell-ul de autentificare ca utilizatorul țintă; o comandă poate fi, de asemenea, specificată" -#: src/parse_args.c:847 +#: src/parse_args.c:828 msgid "remove timestamp file completely" msgstr "elimină complet fișierul de datare" -#: src/parse_args.c:850 +#: src/parse_args.c:831 msgid "invalidate timestamp file" msgstr "invalidează fișierul de datare" -#: src/parse_args.c:853 +#: src/parse_args.c:834 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "listează privilegiile utilizatorului sau verifică o comandă specifică; utilizează de două ori pentru formatul mai lung" -#: src/parse_args.c:856 +#: src/parse_args.c:837 msgid "non-interactive mode, no prompts are used" msgstr "mod neinteractiv, nu sunt utilizate solicitări" -#: src/parse_args.c:859 +#: src/parse_args.c:840 msgid "preserve group vector instead of setting to target's" msgstr "păstrează vectorul grupului în loc să configurați pe cel al țintei" -#: src/parse_args.c:862 +#: src/parse_args.c:843 msgid "use the specified password prompt" msgstr "utilizează solicitarea de parolă specificată" -#: src/parse_args.c:864 +#: src/parse_args.c:845 msgid "change the root directory before running command" msgstr "schimbă la directorul rădăcină, înainte de a rula comanda" -#: src/parse_args.c:867 +#: src/parse_args.c:848 msgid "create SELinux security context with specified role" msgstr "creează contextul de securitate SELinux cu rolul specificat" -#: src/parse_args.c:870 +#: src/parse_args.c:851 msgid "read password from standard input" msgstr "citește parola de la intrarea standard" -#: src/parse_args.c:873 +#: src/parse_args.c:854 msgid "run shell as the target user; a command may also be specified" msgstr "rulează shell-ul ca utilizatorul țintă; o comandă poate fi, de asemenea, specificată" -#: src/parse_args.c:877 +#: src/parse_args.c:858 msgid "create SELinux security context with specified type" msgstr "creează contextul de securitate SELinux cu tipul specificat" -#: src/parse_args.c:880 +#: src/parse_args.c:861 msgid "terminate command after the specified time limit" msgstr "termină comanda după limita de timp specificată" -#: src/parse_args.c:883 +#: src/parse_args.c:864 msgid "in list mode, display privileges for user" msgstr "în modul listă, afișează privilegiile pentru utilizator" @@ -820,19 +853,19 @@ # „rulează comanda (sau fișierul de editare) ca nume specificat sau ID de utilizator” # la: # „rulează comanda (sau editează fișierul) ca utilizator cu numele sau ID-ul specificat” -#: src/parse_args.c:886 +#: src/parse_args.c:867 msgid "run command (or edit file) as specified user name or ID" msgstr "rulează comanda (sau editează fișierul) ca utilizator cu numele sau ID-ul specificat" -#: src/parse_args.c:888 +#: src/parse_args.c:869 msgid "display version information and exit" msgstr "afișează informațiile de versiune și iese" -#: src/parse_args.c:891 +#: src/parse_args.c:872 msgid "update user's timestamp without running a command" msgstr "actualizează datarea utilizatorului fără să se ruleze o comandă" -#: src/parse_args.c:894 +#: src/parse_args.c:875 msgid "stop processing command line arguments" msgstr "oprește procesarea argumentelor în linia de comandă" @@ -979,6 +1012,14 @@ msgid "unable to save handler for signal %d" msgstr "nu se poate salva manipulantul pentru semnalul %d" +# Modificare: +# de la: „nu se poate stabili mânerul pentru semnalul” +# la: „nu se poate stabili manipulantul pentru semnalul” +#: src/signal.c:101 src/suspend_parent.c:149 +#, c-format +msgid "unable to restore handler for signal %d" +msgstr "nu se poate restaura manipulantul pentru semnalul %d" + #: src/solaris.c:72 msgid "resource control limit has been reached" msgstr "limita de control al resursei a fost atinsă" @@ -1026,21 +1067,21 @@ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "avertizare, alocarea controlului de resurse a eșuat pentru proiectul „%s”" -#: src/sudo.c:216 +#: src/sudo.c:214 #, c-format msgid "Sudo version %s\n" msgstr "Versiune sudo %s\n" -#: src/sudo.c:218 +#: src/sudo.c:216 #, c-format msgid "Configure options: %s\n" msgstr "Configurează opțiunile: %s\n" -#: src/sudo.c:226 +#: src/sudo.c:224 msgid "fatal error, unable to load plugins" msgstr "eroare fatală, nu se pot încărca modulele" -#: src/sudo.c:272 +#: src/sudo.c:270 msgid "plugin did not return a command to execute" msgstr "modulul nu a întors o comandă de executat" @@ -1049,130 +1090,130 @@ msgid "unexpected sudo mode 0x%x" msgstr "mod sudo neașteptat 0x%x" -#: src/sudo.c:555 +#: src/sudo.c:559 #, c-format msgid "you do not exist in the %s database" msgstr "nu existați în baza de date %s" -#: src/sudo.c:612 +#: src/sudo.c:616 msgid "unable to determine tty" msgstr "nu se poate determina tty" -#: src/sudo.c:928 +#: src/sudo.c:932 msgid "The \"no new privileges\" flag is set, which prevents sudo from running as root." msgstr "Este setat indicatorul „fără privilegii noi”, ceea ce împiedică rularea «sudo» ca root." -#: src/sudo.c:930 +#: src/sudo.c:934 msgid "If sudo is running in a container, you may need to adjust the container configuration to disable the flag." msgstr "Dacă «sudo» rulează într-un container, poate fi necesar să ajustați configurația containerului pentru a dezactiva indicatorul." -#: src/sudo.c:964 +#: src/sudo.c:968 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s trebuie să fie deținut de uid-ul %d și să aibă bitul setuid stabilit" # Notă: eficient -> efectiv -#: src/sudo.c:967 +#: src/sudo.c:971 #, 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-ul efectiv nu este %d, este %s pe un sistem de fișiere cu opțiunea „nosuid” stabilită sau un sistem de fișiere NFS fără privilegii de root?" -#: src/sudo.c:973 +#: src/sudo.c:977 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "uid-ul efectiv nu este %d, este sudo instalat root setuid?" -#: src/sudo.c:989 src/tgetpass.c:331 +#: src/sudo.c:993 src/tgetpass.c:332 msgid "unable to set supplementary group IDs" msgstr "nu se pot stabili ID-urile de grup suplimentare" # Notă: eficiente -> efective -#: src/sudo.c:996 +#: src/sudo.c:1000 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "nu se pot stabili gid-uri efective către gid-uri run_as %u" -#: src/sudo.c:1002 +#: src/sudo.c:1006 #, c-format msgid "unable to set gid to runas gid %u" msgstr "nu se poate stabili gid-ul către gid-ul run_as %u" -#: src/sudo.c:1032 +#: src/sudo.c:1037 msgid "argv not set by the security policy" msgstr "argv nu este stabilit de politica de securitate" -#: src/sudo.c:1036 +#: src/sudo.c:1041 msgid "envp not set by the security policy" msgstr "envp nu este stabilit de politica de securitate" -#: src/sudo.c:1058 +#: src/sudo.c:1063 #, c-format msgid "unexpected child termination condition: %d" msgstr "condiție de terminare a procesului copil neașteptată: %d" -#: src/sudo.c:1171 +#: src/sudo.c:1176 msgid "unable to initialize policy plugin" msgstr "nu se poate inițializa modulul de politică" -#: src/sudo.c:1233 +#: src/sudo.c:1238 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "modulului de politică %s îi lipsește metoda „check_policy”" -#: src/sudo.c:1279 +#: src/sudo.c:1284 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "modulul de politică %s nu suportă listarea privilegiilor" -#: src/sudo.c:1323 +#: src/sudo.c:1328 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "modulul de politică %s nu suportă opțiunea -v" -#: src/sudo.c:1361 +#: src/sudo.c:1366 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "modulul de politică %s nu suportă opțiunile -k/-K" -#: src/sudo.c:1490 +#: src/sudo.c:1495 #, c-format msgid "error initializing I/O plugin %s" msgstr "eroare la inițializarea modulului In/Ieș(I/O) %s" -#: src/sudo.c:1493 +#: src/sudo.c:1498 msgid "error initializing I/O plugin" msgstr "eroare la inițializarea modulului In/Ieș(I/O)" -#: src/sudo.c:1642 +#: src/sudo.c:1647 #, c-format msgid "error initializing audit plugin %s" msgstr "eroare la inițializarea modulului auditare %s" -#: src/sudo.c:1721 +#: src/sudo.c:1726 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s: nu se poate înregistra evenimentul de eroare%s%s" -#: src/sudo.c:1757 +#: src/sudo.c:1762 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: nu se poate înregistra evenimentul de acceptare%s%s" -#: src/sudo.c:1762 src/sudo.c:1800 +#: src/sudo.c:1767 src/sudo.c:1805 msgid "audit plugin error" msgstr "eroare a modulului de auditare" -#: src/sudo.c:1795 +#: src/sudo.c:1800 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: nu se poate înregistra evenimentul de respingere%s%s" -#: src/sudo.c:1855 +#: src/sudo.c:1860 #, c-format msgid "error initializing approval plugin %s" msgstr "eroare la inițializarea modulului de aprobare %s" -#: src/sudo.c:1925 +#: src/sudo.c:1930 msgid "command rejected by approver" msgstr "comandă respinsă de aprobator" @@ -1180,55 +1221,55 @@ msgid "no writable temporary directory found" msgstr "nu s-a găsit niciun director temporar inscriptibil" -#: src/sudo_edit.c:291 +#: src/sudo_edit.c:292 #, c-format msgid "%s left unmodified" msgstr "%s lăsat nemodificat" -#: src/sudo_edit.c:304 src/sudo_edit.c:569 +#: src/sudo_edit.c:305 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s neschimbat" -#: src/sudo_edit.c:481 +#: src/sudo_edit.c:482 msgid "sesh: internal error: odd number of paths" -msgstr "sesh: eroare internă: număr impar de căi(paths)" +msgstr "sesh: eroare internă: număr impar de rute(paths)" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:484 msgid "sesh: unable to create temporary files" msgstr "sesh: nu se pot crea fișierele temporare" -#: src/sudo_edit.c:485 src/sudo_edit.c:604 +#: src/sudo_edit.c:486 src/sudo_edit.c:606 msgid "sesh: killed by a signal" msgstr "sesh: omorât de un semnal" -#: src/sudo_edit.c:487 src/sudo_edit.c:607 +#: src/sudo_edit.c:488 src/sudo_edit.c:609 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: eroare necunoscută %d" -#: src/sudo_edit.c:597 +#: src/sudo_edit.c:599 msgid "unable to copy temporary files back to their original location" msgstr "nu se pot copia fișierele temporare înapoi la locația lor originală" -#: src/sudo_edit.c:601 +#: src/sudo_edit.c:603 msgid "unable to copy some of the temporary files back to their original location" msgstr "nu se pot copia o parte din fișierele temporare înapoi la locația lor originală" -#: src/sudo_edit.c:646 +#: src/sudo_edit.c:650 #, c-format msgid "unable to change uid to root (%u)" msgstr "nu se poate schimba uid-ul la root (%u)" -#: src/sudo_edit.c:660 +#: src/sudo_edit.c:664 msgid "plugin error: invalid file list for sudoedit" msgstr "eroare de modul: lista de fișiere pentru sudoedit nu este validă" -#: src/sudo_edit.c:681 +#: src/sudo_edit.c:685 msgid "plugin error: missing file list for sudoedit" msgstr "eroare de modul: lipsește lista de fișiere pentru sudoedit" -#: src/sudo_edit.c:724 src/sudo_edit.c:739 +#: src/sudo_edit.c:728 src/sudo_edit.c:743 msgid "unable to read the clock" msgstr "nu se poate citi ceasul" @@ -1256,30 +1297,30 @@ msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "nu s-a specificat niciun program askpass, încercați să stabiliți SUDO_ASKPASS" -#: src/tgetpass.c:326 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" msgstr "nu se poate stabili gid-ul la %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:337 #, c-format msgid "unable to set uid to %u" msgstr "nu se poate stabili uid-ul la %u" -#: src/tgetpass.c:341 +#: src/tgetpass.c:342 #, c-format msgid "unable to run %s" msgstr "nu se poate rula %s" -#: src/utmp.c:288 +#: src/utmp.c:283 msgid "unable to save stdin" msgstr "nu se poate salva stdin" -#: src/utmp.c:290 +#: src/utmp.c:285 msgid "unable to dup2 stdin" msgstr "nu se poate dup2 stdin" -#: src/utmp.c:293 +#: src/utmp.c:288 msgid "unable to restore stdin" msgstr "nu se poate restaura stdin" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/po/ru.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/po/ru.mo differ diff -Nru sudo-1.9.13p3/po/ru.po sudo-1.9.14p2/po/ru.po --- sudo-1.9.13p3/po/ru.po 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/po/ru.po 2023-07-15 15:37:22.000000000 +0000 @@ -4,328 +4,610 @@ # # Pavel Maryanov , 2011. # Yuri Kozlov , 2011, 2012, 2013, 2014, 2016. +# Kirill Isakov , 2023. msgid "" msgstr "" -"Project-Id-Version: sudo 1.8.16b1\n" +"Project-Id-Version: sudo 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2016-02-19 15:48-0700\n" -"PO-Revision-Date: 2016-02-28 11:05+0200\n" -"Last-Translator: Pavel Maryanov \n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-09 00:22+0600\n" +"Last-Translator: Kirill Isakov \n" "Language-Team: Russian \n" "Language: ru\n" -"X-Bugs: Report translation errors to the Language-Team address.\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.6\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 3.3.1\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" -#: lib/util/aix.c:85 lib/util/aix.c:164 +#: lib/util/aix.c:89 lib/util/aix.c:169 msgid "unable to open userdb" msgstr "не удаётся открыть userdb" -#: lib/util/aix.c:219 +#: lib/util/aix.c:224 #, c-format msgid "unable to switch to registry \"%s\" for %s" msgstr "не удаётся переключиться на реестр «%s» для %s" -#: lib/util/aix.c:244 +#: lib/util/aix.c:249 msgid "unable to restore registry" msgstr "не удаётся восстановить реестр" -#: lib/util/aix.c:267 lib/util/gidlist.c:64 lib/util/gidlist.c:74 -#: lib/util/sudo_conf.c:207 lib/util/sudo_conf.c:290 lib/util/sudo_conf.c:367 -#: lib/util/sudo_conf.c:569 src/conversation.c:75 src/exec.c:863 -#: src/exec_common.c:107 src/exec_common.c:123 src/exec_common.c:132 -#: src/exec_pty.c:684 src/exec_pty.c:692 src/load_plugins.c:52 -#: src/load_plugins.c:65 src/load_plugins.c:215 src/load_plugins.c:238 -#: src/load_plugins.c:303 src/load_plugins.c:318 src/parse_args.c:180 -#: src/parse_args.c:202 src/parse_args.c:370 src/parse_args.c:466 -#: src/parse_args.c:485 src/preserve_fds.c:47 src/preserve_fds.c:130 -#: src/selinux.c:84 src/selinux.c:291 src/selinux.c:416 src/selinux.c:425 -#: src/sesh.c:115 src/sudo.c:201 src/sudo.c:398 src/sudo.c:417 src/sudo.c:481 -#: src/sudo.c:655 src/sudo.c:665 src/sudo.c:685 src/sudo.c:704 src/sudo.c:713 -#: src/sudo.c:722 src/sudo.c:739 src/sudo.c:780 src/sudo.c:790 src/sudo.c:810 -#: src/sudo.c:1215 src/sudo.c:1236 src/sudo.c:1398 src/sudo.c:1492 -#: src/sudo_edit.c:151 src/sudo_edit.c:716 src/sudo_edit.c:813 -#: src/sudo_edit.c:925 src/sudo_edit.c:945 +#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 +#: lib/util/json.c:55 lib/util/json.c:197 lib/util/sudo_conf.c:215 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:78 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:171 src/exec_monitor.c:418 +#: src/exec_monitor.c:424 src/exec_monitor.c:432 src/exec_monitor.c:440 +#: src/exec_monitor.c:447 src/exec_monitor.c:454 src/exec_monitor.c:461 +#: src/exec_monitor.c:468 src/exec_monitor.c:475 src/exec_monitor.c:482 +#: src/exec_monitor.c:489 src/exec_nopty.c:231 src/exec_nopty.c:240 +#: 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:318 src/exec_nopty.c:326 +#: src/exec_nopty.c:744 src/exec_preload.c:343 src/exec_ptrace.c:475 +#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1096 +#: src/exec_ptrace.c:1271 src/exec_ptrace.c:1624 src/exec_ptrace.c:1651 +#: src/exec_ptrace.c:1841 src/exec_pty.c:581 src/exec_pty.c:765 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:193 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 +#: src/sesh.c:246 src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:644 +#: src/sudo.c:709 src/sudo.c:719 src/sudo.c:746 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:787 src/sudo.c:805 src/sudo.c:846 src/sudo.c:855 src/sudo.c:865 +#: src/sudo.c:898 src/sudo.c:1127 src/sudo.c:1148 src/sudo.c:1441 +#: src/sudo.c:1610 src/sudo.c:1837 src/sudo.c:2171 src/sudo_edit.c:89 +#: src/sudo_edit.c:149 src/sudo_edit.c:430 src/sudo_edit.c:439 +#: src/sudo_edit.c:540 src/sudo_edit.c:547 src/sudo_edit.c:692 +#: src/sudo_edit.c:712 src/sudo_intercept_common.c:115 +#: src/sudo_intercept_common.c:340 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/util/aix.c:267 lib/util/gidlist.c:64 lib/util/sudo_conf.c:208 -#: lib/util/sudo_conf.c:290 lib/util/sudo_conf.c:367 lib/util/sudo_conf.c:569 -#: src/conversation.c:76 src/exec.c:863 src/exec_common.c:107 -#: src/exec_common.c:124 src/exec_common.c:133 src/exec_pty.c:684 -#: src/exec_pty.c:692 src/load_plugins.c:215 src/load_plugins.c:238 -#: src/load_plugins.c:303 src/load_plugins.c:318 src/parse_args.c:180 -#: src/parse_args.c:202 src/parse_args.c:370 src/parse_args.c:466 -#: src/parse_args.c:485 src/preserve_fds.c:47 src/preserve_fds.c:130 -#: src/selinux.c:84 src/selinux.c:291 src/selinux.c:416 src/selinux.c:425 -#: src/sesh.c:115 src/sudo.c:201 src/sudo.c:398 src/sudo.c:417 src/sudo.c:481 -#: src/sudo.c:810 src/sudo.c:1215 src/sudo.c:1236 src/sudo.c:1398 -#: src/sudo.c:1492 src/sudo_edit.c:151 src/sudo_edit.c:716 src/sudo_edit.c:813 -#: src/sudo_edit.c:925 src/sudo_edit.c:945 +#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:56 +#: lib/util/json.c:198 lib/util/regex.c:173 lib/util/sudo_conf.c:216 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:79 src/exec_intercept.c:111 src/exec_intercept.c:350 +#: src/exec_intercept.c:525 src/exec_intercept.c:589 src/exec_intercept.c:713 +#: src/exec_intercept.c:837 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:418 src/exec_monitor.c:424 +#: src/exec_monitor.c:432 src/exec_monitor.c:440 src/exec_monitor.c:447 +#: src/exec_monitor.c:454 src/exec_monitor.c:461 src/exec_monitor.c:468 +#: src/exec_monitor.c:475 src/exec_monitor.c:482 src/exec_monitor.c:489 +#: src/exec_nopty.c:231 src/exec_nopty.c:240 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:318 src/exec_nopty.c:326 src/exec_preload.c:343 +#: src/exec_ptrace.c:475 src/exec_ptrace.c:768 src/exec_ptrace.c:983 +#: src/exec_ptrace.c:1651 src/exec_ptrace.c:1842 src/exec_pty.c:581 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:194 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:471 +#: src/sudo.c:228 src/sudo.c:644 src/sudo.c:898 src/sudo.c:1127 +#: src/sudo.c:1148 src/sudo.c:1441 src/sudo.c:1610 src/sudo.c:1837 +#: src/sudo.c:2171 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:430 +#: src/sudo_edit.c:439 src/sudo_edit.c:540 src/sudo_edit.c:547 +#: src/sudo_edit.c:692 src/sudo_edit.c:712 src/sudo_intercept_common.c:115 +#: src/sudo_intercept_common.c:340 msgid "unable to allocate memory" msgstr "не удаётся выделить память" -#: lib/util/strsignal.c:48 +#: lib/util/mkdir_parents.c:63 +#, c-format +msgid "unable to stat %.*s" +msgstr "не удаётся выполнить вызов stat %.*s" + +#: lib/util/mkdir_parents.c:69 +#, c-format +msgid "%.*s exists but is not a directory (0%o)" +msgstr "%.*s существует, но не является каталогом (0%o)" + +#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:664 +#: lib/util/sudo_conf.c:683 lib/util/sudo_conf.c:710 src/selinux.c:235 +#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:495 src/sudo_edit.c:559 +#, c-format +msgid "unable to open %s" +msgstr "не удаётся открыть %s" + +#: lib/util/mkdir_parents.c:120 lib/util/mkdir_parents.c:160 +#, c-format +msgid "unable to mkdir %.*s" +msgstr "не удаётся выполнить %.*s" + +#: lib/util/mkdir_parents.c:130 lib/util/mkdir_parents.c:139 +#, c-format +msgid "unable to open %.*s" +msgstr "не удаётся открыть %.*s" + +#: lib/util/regex.c:163 +msgid "regular expression too large" +msgstr "регулярное выражение слишком велико" + +#: lib/util/strsignal.c:50 msgid "Unknown signal" msgstr "Неизвестный сигнал" -#: lib/util/strtoid.c:76 lib/util/strtoid.c:104 lib/util/strtomode.c:48 -#: lib/util/strtonum.c:58 lib/util/strtonum.c:176 +#: lib/util/strtoid.c:84 lib/util/strtomode.c:52 lib/util/strtonum.c:148 +#: lib/util/strtonum.c:187 src/sesh.c:240 src/sesh.c:253 msgid "invalid value" msgstr "недопустимое значение" -#: lib/util/strtoid.c:83 lib/util/strtoid.c:111 lib/util/strtomode.c:54 -#: lib/util/strtonum.c:61 lib/util/strtonum.c:188 +#: lib/util/strtomode.c:58 lib/util/strtonum.c:160 msgid "value too large" msgstr "значение слишком велико" -#: lib/util/strtoid.c:89 lib/util/strtomode.c:54 lib/util/strtonum.c:61 -#: lib/util/strtonum.c:182 +#: lib/util/strtomode.c:58 lib/util/strtonum.c:154 msgid "value too small" msgstr "значение слишком мало" -#: lib/util/sudo_conf.c:223 +#: lib/util/sudo_conf.c:234 #, c-format -msgid "invalid Path value `%s' in %s, line %u" +msgid "invalid Path value \"%s\" in %s, line %u" msgstr "некорректное значение Path «%s» в %s, строка %u" -#: lib/util/sudo_conf.c:389 lib/util/sudo_conf.c:442 +#: lib/util/sudo_conf.c:400 lib/util/sudo_conf.c:453 #, c-format -msgid "invalid value for %s `%s' in %s, line %u" +msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "некорректное значение для %s «%s» в %s, строка %u" -#: lib/util/sudo_conf.c:410 +#: lib/util/sudo_conf.c:421 #, c-format -msgid "unsupported group source `%s' in %s, line %u" +msgid "unsupported group source \"%s\" in %s, line %u" msgstr "неподдерживаемый групповой источник «%s» в %s, строка %u" -#: lib/util/sudo_conf.c:426 +#: lib/util/sudo_conf.c:437 #, c-format -msgid "invalid max groups `%s' in %s, line %u" +msgid "invalid max groups \"%s\" in %s, line %u" msgstr "некорректное максимальное значение для групп «%s» в %s, строка %u" -#: lib/util/sudo_conf.c:585 -#, c-format -msgid "unable to stat %s" -msgstr "не удалось выполнить вызов stat %s" - -#: lib/util/sudo_conf.c:588 +#: lib/util/sudo_conf.c:686 #, c-format msgid "%s is not a regular file" msgstr "%s не является обычным файлом" -#: lib/util/sudo_conf.c:591 +#: lib/util/sudo_conf.c:689 src/copy_file.c:164 #, c-format msgid "%s is owned by uid %u, should be %u" -msgstr "%s принадлежит пользователю с uid %u, а должен принадлежать пользователю с uid %u" +msgstr "%s принадлежит uid %u, должно быть %u" -#: lib/util/sudo_conf.c:595 +#: lib/util/sudo_conf.c:693 #, c-format msgid "%s is world writable" msgstr "доступ на запись в %s разрешена всем" -#: lib/util/sudo_conf.c:598 +#: lib/util/sudo_conf.c:696 #, c-format msgid "%s is group writable" msgstr "доступ на запись в %s разрешена группе" -#: lib/util/sudo_conf.c:608 src/selinux.c:199 src/selinux.c:212 src/sudo.c:367 +#: src/apparmor.c:85 +msgid "failed to determine AppArmor confinement" +msgstr "не удаётся определить контейнер AppArmor" + +#: src/apparmor.c:93 #, c-format -msgid "unable to open %s" -msgstr "не удаётся открыть %s" +msgid "unable to change AppArmor profile to %s" +msgstr "не удаётся изменить профиль AppArmor на %s" + +#: src/copy_file.c:94 +#, c-format +msgid "%s: truncate %s to zero bytes? (y/n) [n] " +msgstr "%s: обрезать %s до нуля байт? (y/n) [n] " + +#: src/copy_file.c:98 +#, c-format +msgid "not overwriting %s" +msgstr "не перезаписываю %s" + +#: src/copy_file.c:120 +#, c-format +msgid "unable to read from %s" +msgstr "не удаётся прочитать из %s" + +#: src/copy_file.c:137 src/sudo_edit.c:320 +#, c-format +msgid "unable to write to %s" +msgstr "не удаётся записать в %s" + +#: src/copy_file.c:151 +#, c-format +msgid "unable to stat %s" +msgstr "не удаётся выполнить stat для %s" + +#: src/copy_file.c:155 src/sesh.c:312 src/sudo_edit.c:197 +#, c-format +msgid "%s: not a regular file" +msgstr "%s: не обычный файл" + +#: src/copy_file.c:159 +#, c-format +msgid "%s: bad file mode: 0%o" +msgstr "%s: некорректный режим доступа к файлу: 0%o" + +#: src/edit_open.c:333 +msgid "unable to restore current working directory" +msgstr "не удаётся восстановить текущий рабочий каталог" + +#: src/exec.c:111 +msgid "unable to set privileges" +msgstr "не удаётся назначить привилегии" + +#: src/exec.c:117 src/exec.c:122 +msgid "unable to set limit privileges" +msgstr "не удаётся назначить привилегии по ограничению" + +#: src/exec.c:145 +#, c-format +msgid "unknown login class %s" +msgstr "неизвестный класс входа %s" + +#: src/exec.c:157 +msgid "unable to set user context" +msgstr "не удаётся назначить контекст пользователя" + +#: src/exec.c:173 +msgid "unable to set process priority" +msgstr "не удаётся назначить приоритет процесса" + +#: src/exec.c:190 +#, c-format +msgid "unable to change root to %s" +msgstr "не удаётся изменить root на %s" + +#: src/exec.c:203 src/exec.c:209 src/exec.c:216 +#, c-format +msgid "unable to change to runas uid (%u, %u)" +msgstr "не удаётся изменить на runas uid (%u, %u)" + +#: src/exec.c:238 src/sesh.c:199 +#, c-format +msgid "unable to change directory to %s" +msgstr "не удаётся сменить каталог на %s" + +#: src/exec.c:243 +#, c-format +msgid "starting from %s" +msgstr "начинаю с %s" -#: src/exec.c:114 src/exec.c:116 src/exec.c:121 src/exec.c:409 src/exec.c:411 -#: src/exec.c:413 src/exec.c:415 src/exec.c:417 src/exec.c:419 src/exec.c:422 -#: src/exec.c:438 src/exec.c:440 src/exec.c:595 src/exec.c:790 -#: src/exec_pty.c:466 src/exec_pty.c:722 src/exec_pty.c:792 src/exec_pty.c:794 -#: src/exec_pty.c:806 src/exec_pty.c:808 src/exec_pty.c:1289 -#: src/exec_pty.c:1291 src/exec_pty.c:1296 src/exec_pty.c:1298 -#: src/exec_pty.c:1312 src/exec_pty.c:1323 src/exec_pty.c:1325 -#: src/exec_pty.c:1327 src/exec_pty.c:1329 src/exec_pty.c:1331 -#: src/exec_pty.c:1333 src/exec_pty.c:1335 src/signal.c:147 +#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:552 src/exec_monitor.c:554 +#: src/exec_pty.c:1122 src/exec_pty.c:1124 src/signal.c:144 src/signal.c:151 +#: src/signal.c:165 src/suspend_parent.c:143 #, c-format msgid "unable to set handler for signal %d" msgstr "не удаётся установить обработчик сигнала %d" -#: src/exec.c:126 src/exec_pty.c:838 src/exec_pty.c:1373 src/tgetpass.c:265 -msgid "unable to fork" -msgstr "не удаётся создать дочерний процесс" +#: src/exec.c:424 +msgid "intercept mode is not supported with SELinux RBAC on this system" +msgstr "режим перехвата не поддерживается SELinux на этой системе" + +#: src/exec.c:429 +msgid "unable to log sub-commands with SELinux RBAC on this system" +msgstr "не удаётся записать в журнал подкоманды SELinux на этой системе" -#: src/exec.c:304 src/exec.c:312 src/exec.c:868 src/exec_pty.c:604 -#: src/exec_pty.c:611 src/exec_pty.c:654 src/exec_pty.c:659 src/exec_pty.c:946 -#: src/exec_pty.c:956 src/exec_pty.c:1001 src/exec_pty.c:1008 -#: src/exec_pty.c:1438 src/exec_pty.c:1445 src/exec_pty.c:1452 +#: src/exec_common.c:56 +msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" +msgstr "не удаётся удалить PRIV_PROC_EXEC из PRIV_LIMIT" + +#: src/exec_intercept.c:70 src/exec_iolog.c:163 src/exec_iolog.c:173 +#: src/exec_iolog.c:218 src/exec_iolog.c:225 src/exec_iolog.c:252 +#: src/exec_monitor.c:426 src/exec_monitor.c:434 src/exec_monitor.c:442 +#: src/exec_monitor.c:449 src/exec_monitor.c:456 src/exec_monitor.c:463 +#: src/exec_monitor.c:470 src/exec_monitor.c:477 src/exec_monitor.c:484 +#: src/exec_monitor.c:491 src/exec_nopty.c:233 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:305 +#: src/exec_nopty.c:312 src/exec_nopty.c:320 src/exec_nopty.c:328 +#: src/exec_nopty.c:387 src/exec_nopty.c:457 src/exec_pty.c:432 +#: src/exec_pty.c:537 src/exec_pty.c:587 src/exec_pty.c:965 src/exec_pty.c:974 +#: src/exec_pty.c:981 src/exec_pty.c:988 src/exec_pty.c:995 +#: src/exec_pty.c:1002 src/exec_pty.c:1009 src/exec_pty.c:1016 +#: src/exec_pty.c:1023 src/exec_pty.c:1030 src/exec_pty.c:1037 +#: src/exec_pty.c:1044 msgid "unable to add event to queue" msgstr "не удаётся добавить событие в очередь" -#: src/exec.c:392 -msgid "unable to create sockets" -msgstr "не удаётся создать сокеты" +#: src/exec_intercept.c:323 src/sudo.c:1033 +msgid "command not set by the security policy" +msgstr "команда не назначена политикой безопасности" -#: src/exec.c:447 -msgid "policy plugin failed session initialization" -msgstr "модулю политик не удалось инициализировать сеанс" +#: src/exec_intercept.c:401 src/exec_intercept.c:441 src/sudo.c:1253 +#: src/sudo.c:1298 src/sudo.c:1342 +msgid "command rejected by policy" +msgstr "команда отклонена политикой" -#: src/exec.c:492 -msgid "error in event loop" -msgstr "ошибка в событийном цикле" +#: src/exec_intercept.c:512 src/sudo.c:1940 +msgid "approval plugin error" +msgstr "ошибка в модуле подтверждения" -#: src/exec.c:510 -msgid "unable to restore tty label" -msgstr "не удаётся создать восстановить метку tty" +#: src/exec_intercept.c:537 src/sudo.c:1258 src/sudo.c:1303 src/sudo.c:1347 +#: src/sudo.c:1421 +msgid "policy plugin error" +msgstr "ошибка в модуле политики" -#: src/exec.c:603 src/exec_pty.c:498 src/signal.c:86 +#: src/exec_intercept.c:566 +msgid "invalid PolicyCheckRequest" +msgstr "некорректный PolicyCheckRequest" + +#: src/exec_intercept.c:709 #, c-format -msgid "unable to restore handler for signal %d" -msgstr "не удаётся восстановить обработчик сигнала %d" +msgid "client request too large: %zu" +msgstr "запрос клиента слишком велик: %zu" + +#: src/exec_intercept.c:751 +#, c-format +msgid "unable to unpack %s size %zu" +msgstr "не удаётся распаковать %s, размер %zu" -#: src/exec.c:721 src/exec_pty.c:1180 -msgid "error reading from signal pipe" -msgstr "ошибка чтения из сигнального канала" +#: src/exec_intercept.c:799 +#, c-format +msgid "unexpected type_case value %d in %s from %s" +msgstr "неожиданное значение type_case %d в %s из %s" -#: src/exec_common.c:166 -msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" -msgstr "не удаётся удалить PRIV_PROC_EXEC из PRIV_LIMIT" +#: src/exec_intercept.c:825 +#, c-format +msgid "server message too large: %zu" +msgstr "сообщение сервера слишком велико: %zu" -#: src/exec_pty.c:188 -msgid "unable to allocate pty" -msgstr "не удаётся выделить pty" +#: src/exec_iolog.c:321 src/exec_iolog.c:361 src/exec_iolog.c:401 +#: src/exec_iolog.c:452 src/exec_iolog.c:503 +msgid "I/O plugin error" +msgstr "Ошибка в модуле ввода/вывода" -#: src/exec_pty.c:766 src/exec_pty.c:775 src/exec_pty.c:783 -#: src/exec_pty.c:1281 src/exec_pty.c:1370 src/signal.c:128 src/tgetpass.c:261 -msgid "unable to create pipe" -msgstr "не удаётся создать канал" +#: src/exec_iolog.c:325 src/exec_iolog.c:365 src/exec_iolog.c:405 +#: src/exec_iolog.c:456 src/exec_iolog.c:507 +msgid "command rejected by I/O plugin" +msgstr "команда отклонена модулем ввода/вывода" -#: src/exec_pty.c:1213 -msgid "error reading from pipe" -msgstr "ошибка чтения из канала" +#: src/exec_iolog.c:555 +msgid "error logging suspend" +msgstr "ошибка при приостановке записи в журнал" -#: src/exec_pty.c:1238 +#: src/exec_iolog.c:590 +msgid "error changing window size" +msgstr "ошибка изменения размера окна" + +#: src/exec_monitor.c:328 msgid "error reading from socketpair" msgstr "ошибка чтения из пары сокетов" -#: src/exec_pty.c:1247 +#: src/exec_monitor.c:340 #, c-format msgid "unexpected reply type on backchannel: %d" msgstr "неожиданный тип ответа в резервном канале: %d" -#: src/exec_pty.c:1349 +#: src/exec_monitor.c:566 msgid "unable to set controlling tty" msgstr "не удаётся установить управляющий tty" -#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 -#: src/load_plugins.c:115 src/load_plugins.c:123 src/load_plugins.c:129 -#: src/load_plugins.c:170 src/load_plugins.c:178 src/load_plugins.c:185 -#: src/load_plugins.c:191 +#: src/exec_monitor.c:574 src/exec_nopty.c:504 src/exec_nopty.c:514 +#: src/exec_nopty.c:524 src/exec_nopty.c:560 src/exec_pty.c:1195 +#: src/exec_pty.c:1222 src/exec_pty.c:1242 src/exec_pty.c:1262 +#: src/tgetpass.c:306 +msgid "unable to create pipe" +msgstr "не удаётся создать канал" + +#: src/exec_monitor.c:584 +msgid "unable to receive message from parent" +msgstr "не удаётся получить сообщение от родительского процесса" + +#: src/exec_monitor.c:600 src/exec_nopty.c:603 src/exec_pty.c:1303 +#: src/sudo_edit.c:361 src/tgetpass.c:310 +msgid "unable to fork" +msgstr "не удаётся создать дочерний процесс" + +#: src/exec_monitor.c:604 src/exec_monitor.c:700 src/exec_nopty.c:708 +msgid "unable to restore tty label" +msgstr "не удаётся создать восстановить метку tty" + +#: src/exec_monitor.c:615 src/sesh.c:217 src/sudo.c:1204 #, c-format -msgid "error in %s, line %d while loading plugin `%s'" -msgstr "ошибка в %s, строка %d, при загрузке модуля «%s»" +msgid "unable to execute %s" +msgstr "не удаётся выполнить %s" + +#: src/exec_nopty.c:554 src/exec_pty.c:1131 +msgid "policy plugin failed session initialization" +msgstr "модулю политик не удаётся инициализировать сеанс" -#: src/load_plugins.c:87 +#: src/exec_nopty.c:569 src/exec_pty.c:1100 src/exec_pty.c:1109 +msgid "unable to create sockets" +msgstr "не удаётся создать сокеты" + +#: src/exec_nopty.c:696 src/exec_pty.c:1406 +msgid "error in event loop" +msgstr "ошибка в событийном цикле" + +#: src/exec_preload.c:167 src/net_ifs.c:206 src/net_ifs.c:372 +#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:852 src/sudo.c:488 +#: src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format -msgid "%s%s: %s" -msgstr "%s%s: %s" +msgid "internal error, %s overflow" +msgstr "внутренняя ошибка, переполнение %s" -#: src/load_plugins.c:125 +#: src/exec_ptrace.c:1080 src/exec_ptrace.c:1105 src/exec_ptrace.c:1925 #, c-format -msgid "%s must be owned by uid %d" -msgstr "%s должен принадлежать пользователю с uid %d" +msgid "unable to set registers for process %d" +msgstr "не удаётся назначить реестры для процесса %d" -#: src/load_plugins.c:131 +#: src/exec_ptrace.c:1100 src/exec_ptrace.c:1275 src/exec_ptrace.c:1628 #, c-format -msgid "%s must be only be writable by owner" -msgstr "%s должен быть доступен на запись только владельцу" +msgid "process %d exited unexpectedly" +msgstr "процесс %d неожиданно завершился" + +#: src/exec_ptrace.c:1209 +msgid "unable to set seccomp filter" +msgstr "не удаётся установить фильтр seccomp" -#: src/load_plugins.c:172 +#: src/exec_ptrace.c:1406 +#, c-format +msgid "interpreter argument , expected \"%s\", got \"%s\"" +msgstr "аргумент интерпретатора , ожидалось \"%s\", получено \"%s\"" + +#: src/exec_ptrace.c:1505 +#, c-format +msgid "pathname mismatch, expected \"%s\", got \"%s\"" +msgstr "несоответствие путей, ожидалось \"%s\", получено \"%s\"" + +#: src/exec_ptrace.c:1514 src/exec_ptrace.c:1521 src/exec_ptrace.c:1545 +#: src/exec_ptrace.c:1553 src/exec_ptrace.c:1559 src/exec_ptrace.c:1565 +#, c-format +msgid "%s[%d] mismatch, expected \"%s\", got \"%s\"" +msgstr "несоответствие %s[%d], ожидалось \"%s\", получено \"%s\"" + +#: src/exec_ptrace.c:1632 +#, c-format +msgid "process %d unexpected status 0x%x" +msgstr "неожиданный статус процесса %d: 0x%x" + +#: src/exec_ptrace.c:1723 +#, c-format +msgid "unable to get event message for process %d" +msgstr "не удаётся получить сообщение события для процесса %d" + +#: src/exec_ptrace.c:1730 +#, c-format +msgid "unable to get registers for process %d" +msgstr "не удаётся получить реестры для процесса %d" + +#: src/exec_pty.c:84 +msgid "unable to allocate pty" +msgstr "не удаётся выделить pty" + +#: src/exec_pty.c:131 src/exec_pty.c:284 src/tgetpass.c:251 +msgid "unable to restore terminal settings" +msgstr "не удаётся восстановить настройки терминала" + +#: src/exec_pty.c:243 +msgid "unable to set handler for SIGCONT" +msgstr "не удаётся установить обработчик сигнала SIGCONT" + +#: src/exec_pty.c:293 +#, c-format +msgid "unable to set handler for SIG%s" +msgstr "не удаётся установить обработчик сигнала SIG%s" + +#: src/exec_pty.c:317 +#, c-format +msgid "unable to restore handler for SIG%s" +msgstr "не удаётся восстановить обработчик сигнала SIG%s" + +#: src/exec_pty.c:345 +msgid "unable to restore handler for SIGCONT" +msgstr "не удаётся восстановить обработчик сигнала SIGCONT" + +#: src/exec_pty.c:1353 +msgid "unable to send message to monitor process" +msgstr "не удаётся отправить сообщение процессу аудита" + +#: src/load_plugins.c:75 src/load_plugins.c:222 src/load_plugins.c:232 +#: src/load_plugins.c:242 src/load_plugins.c:289 +#, c-format +msgid "error in %s, line %d while loading plugin \"%s\"" +msgstr "ошибка в %s, строка %d, при загрузке модуля «%s»" + +#: src/load_plugins.c:186 src/load_plugins.c:257 +#, c-format +msgid "ignoring duplicate plugin \"%s\" in %s, line %d" +msgstr "игнорируется повторный модуль ввода-вывода «%s» в %s, строка %d" + +#: src/load_plugins.c:224 #, c-format msgid "unable to load %s: %s" msgstr "не удаётся загрузить %s: %s" -#: src/load_plugins.c:180 +#: src/load_plugins.c:234 #, c-format -msgid "unable to find symbol `%s' in %s" +msgid "unable to find symbol \"%s\" in %s" msgstr "не удаётся найти символ «%s» в %s" -#: src/load_plugins.c:187 -#, c-format -msgid "unknown policy type %d found in %s" -msgstr "найден неизвестный тип политики %d в %s" - -#: src/load_plugins.c:193 +#: src/load_plugins.c:244 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "найдена несовместимая основная версия модуля %d (ожидалась %d) в %s" -#: src/load_plugins.c:202 +#: src/load_plugins.c:262 #, c-format -msgid "ignoring policy plugin `%s' in %s, line %d" +msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "игнорируется модуль политики «%s» в %s, строка %d" -#: src/load_plugins.c:204 +#: src/load_plugins.c:265 msgid "only a single policy plugin may be specified" msgstr "может быть задан только один модуль политики" -#: src/load_plugins.c:207 -#, c-format -msgid "ignoring duplicate policy plugin `%s' in %s, line %d" -msgstr "игнорируется повторный модуль политики «%s» в %s, строка %d" - -#: src/load_plugins.c:228 +#: src/load_plugins.c:291 #, c-format -msgid "ignoring duplicate I/O plugin `%s' in %s, line %d" -msgstr "игнорируется повторный модуль ввода-вывода «%s» в %s, строка %d" +msgid "unknown plugin type %d found in %s" +msgstr "найден неизвестный тип модуля %d в %s" -#: src/load_plugins.c:331 +#: src/load_plugins.c:474 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "модуль политики %s не содержит метод check_policy" -#: src/net_ifs.c:173 src/net_ifs.c:190 src/net_ifs.c:335 src/sudo.c:476 +#: src/parse_args.c:214 #, c-format -msgid "internal error, %s overflow" -msgstr "внутренняя ошибка, переполнение %s" +msgid "invalid environment variable name: %s" +msgstr "некорректное имя переменной окружения: %s" -#: src/parse_args.c:239 +#: src/parse_args.c:319 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "аргумент для -C должен быть числом, которое больше или равно 3" -#: src/parse_args.c:406 -msgid "you may not specify both the `-i' and `-s' options" -msgstr "параметры «-i» и «-s» являются взаимоисключающими" - -#: src/parse_args.c:410 -msgid "you may not specify both the `-i' and `-E' options" -msgstr "параметры «-i» и «-E» являются взаимоисключающими" - -#: src/parse_args.c:420 -msgid "the `-E' option is not valid in edit mode" -msgstr "параметр «-E» не действует в режиме редактирования" +#: src/parse_args.c:556 +msgid "you may not specify both the -i and -s options" +msgstr "параметры -i и -s являются взаимоисключающими" + +#: src/parse_args.c:561 +msgid "you may not specify both the -i and -E options" +msgstr "параметры -i и -E являются взаимоисключающими" + +#: src/parse_args.c:571 +msgid "the -E option is not valid in edit mode" +msgstr "параметр -E не действует в режиме редактирования" -#: src/parse_args.c:422 +#: src/parse_args.c:574 msgid "you may not specify environment variables in edit mode" msgstr "переменные окружения нельзя определять в режиме редактирования" -#: src/parse_args.c:430 -msgid "the `-U' option may only be used with the `-l' option" -msgstr "параметр «-U» можно использовать только с параметром «-l»" - -#: src/parse_args.c:434 -msgid "the `-A' and `-S' options may not be used together" -msgstr "параметры «-A» и «-S» являются взаимоисключающими" +#: src/parse_args.c:584 +msgid "the -U option may only be used with the -l option" +msgstr "параметр -U можно использовать только с параметром -l" + +#: src/parse_args.c:588 +msgid "the -A and -S options may not be used together" +msgstr "параметры -A и -S являются взаимоисключающими" -#: src/parse_args.c:504 +#: src/parse_args.c:686 msgid "sudoedit is not supported on this platform" msgstr "sudoedit не поддерживается на этой платформе" -#: src/parse_args.c:577 +#: src/parse_args.c:744 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:591 +#: src/parse_args.c:757 +msgid "Only one of the -K, -k or -N options may be specified" +msgstr "Можно указать только один из параметров -K, -k, или -N" + +#: src/parse_args.c:778 #, c-format msgid "" "%s - edit files as another user\n" @@ -334,7 +616,7 @@ "%s — редактирование файлов от имени другого пользователя\n" "\n" -#: src/parse_args.c:593 +#: src/parse_args.c:780 #, c-format msgid "" "%s - execute a command as another user\n" @@ -343,8 +625,7 @@ "%s — выполнение команд от имени другого пользователя\n" "\n" -#: src/parse_args.c:598 -#, c-format +#: src/parse_args.c:785 msgid "" "\n" "Options:\n" @@ -352,510 +633,613 @@ "\n" "Параметры:\n" -#: src/parse_args.c:600 +#: src/parse_args.c:787 msgid "use a helper program for password prompting" msgstr "использовать вспомогательную программу для ввода пароля" -#: src/parse_args.c:603 +#: src/parse_args.c:790 msgid "use specified BSD authentication type" msgstr "использовать указанный тип проверки подлинности BSD" -#: src/parse_args.c:606 +#: src/parse_args.c:794 msgid "run command in the background" msgstr "выполнить команду в фоновом режиме" -#: src/parse_args.c:608 +#: src/parse_args.c:797 +msgid "ring bell when prompting" +msgstr "звонок при запросе ввода" + +#: src/parse_args.c:799 msgid "close all file descriptors >= num" msgstr "закрыть все дескрипторы файлов >= num" -#: src/parse_args.c:611 +#: src/parse_args.c:802 msgid "run command with the specified BSD login class" msgstr "выполнить команду с указанным классом входа BSD в систему" -#: src/parse_args.c:614 +#: src/parse_args.c:805 +msgid "change the working directory before running command" +msgstr "изменить рабочий каталог перед выполнением команды" + +#: src/parse_args.c:808 msgid "preserve user environment when running command" msgstr "сохранить пользовательское окружение при выполнении команды" -#: src/parse_args.c:616 +#: src/parse_args.c:810 +msgid "preserve specific environment variables" +msgstr "сохранить определённые переменные окружения" + +#: src/parse_args.c:812 msgid "edit files instead of running a command" msgstr "редактировать файлы вместо выполнения команды" -#: src/parse_args.c:618 +#: src/parse_args.c:815 msgid "run command as the specified group name or ID" msgstr "выполнить команду от имени или ID указанной группы" -#: src/parse_args.c:620 +#: src/parse_args.c:818 msgid "set HOME variable to target user's home dir" msgstr "установить для переменной HOME домашний каталог указанного пользователя" -#: src/parse_args.c:622 +#: src/parse_args.c:821 msgid "display help message and exit" msgstr "показать справку и выйти" -#: src/parse_args.c:624 +#: src/parse_args.c:823 msgid "run command on host (if supported by plugin)" msgstr "выполнить команду на узле (если поддерживается модулем)" -#: src/parse_args.c:626 +#: src/parse_args.c:826 msgid "run login shell as the target user; a command may also be specified" msgstr "запустить оболочку входа в систему от имени указанного пользователя; также можно задать команду" -#: src/parse_args.c:628 +#: src/parse_args.c:828 msgid "remove timestamp file completely" -msgstr "полностью удалить файл timestamp" +msgstr "полностью удалить файл меток времени" -#: src/parse_args.c:630 +#: src/parse_args.c:831 msgid "invalidate timestamp file" -msgstr "объявить недействительным файл timestamp" +msgstr "объявить недействительным файл меток времени" -#: src/parse_args.c:632 +#: src/parse_args.c:834 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "показать список прав пользователя или проверить заданную команду; в длинном формате используется дважды" -#: src/parse_args.c:634 +#: src/parse_args.c:837 msgid "non-interactive mode, no prompts are used" -msgstr "автономный режим без не вывода запросов пользователю" +msgstr "автономный режим без вывода запросов пользователю" -#: src/parse_args.c:636 +#: src/parse_args.c:840 msgid "preserve group vector instead of setting to target's" msgstr "сохранить вектор группы вместо установки целевой группы" -#: src/parse_args.c:638 +#: src/parse_args.c:843 msgid "use the specified password prompt" msgstr "использовать указанный запрос пароля" -#: src/parse_args.c:641 +#: src/parse_args.c:845 +msgid "change the root directory before running command" +msgstr "изменить корневой каталог перед выполнением команды" + +#: src/parse_args.c:848 msgid "create SELinux security context with specified role" msgstr "создать контекст безопасности SELinux с указанной ролью" -#: src/parse_args.c:644 +#: src/parse_args.c:851 msgid "read password from standard input" msgstr "читать пароль из стандартного ввода" -#: src/parse_args.c:646 +#: src/parse_args.c:854 msgid "run shell as the target user; a command may also be specified" msgstr "запустить оболочку от имени указанного пользователя; также можно задать команду" -#: src/parse_args.c:649 +#: src/parse_args.c:858 msgid "create SELinux security context with specified type" msgstr "создать контекст безопасности SELinux указанного типа" -#: src/parse_args.c:652 +#: src/parse_args.c:861 +msgid "terminate command after the specified time limit" +msgstr "завершить команду по истечению указанного времени" + +#: src/parse_args.c:864 msgid "in list mode, display privileges for user" msgstr "в режиме списка показывать права пользователя" -#: src/parse_args.c:654 +#: src/parse_args.c:867 msgid "run command (or edit file) as specified user name or ID" msgstr "выполнить команду (или редактировать файл) от имени или ID указанного пользователя" -#: src/parse_args.c:656 +#: src/parse_args.c:869 msgid "display version information and exit" -msgstr "показать сведения о версии и выйти" +msgstr "показать информацию о версии и выйти" -#: src/parse_args.c:658 +#: src/parse_args.c:872 msgid "update user's timestamp without running a command" msgstr "обновить временную метку пользователя без выполнения команды" -#: src/parse_args.c:660 +#: src/parse_args.c:875 msgid "stop processing command line arguments" msgstr "прекратить обработку аргументов командной строки" -#: src/selinux.c:78 +#: src/selinux.c:83 msgid "unable to open audit system" msgstr "не удаётся открыть систему аудита" -#: src/selinux.c:88 +#: src/selinux.c:93 msgid "unable to send audit message" msgstr "не удаётся отправить сообщение аудита" -#: src/selinux.c:116 +#: src/selinux.c:129 #, c-format msgid "unable to fgetfilecon %s" msgstr "не удаётся выполнить fgetfilecon %s" -#: src/selinux.c:121 +#: src/selinux.c:134 #, c-format msgid "%s changed labels" msgstr "изменено меток: %s" -#: src/selinux.c:126 +#: src/selinux.c:142 #, c-format msgid "unable to restore context for %s" msgstr "не удаётся восстановить контекст для %s" -#: src/selinux.c:166 +#: src/selinux.c:190 #, c-format msgid "unable to open %s, not relabeling tty" msgstr "не удаётся открыть %s, tty без возможности переименования" -#: src/selinux.c:175 +#: src/selinux.c:194 src/selinux.c:239 src/selinux.c:269 +#, c-format +msgid "%s is not a character device, not relabeling tty" +msgstr "%s не является символьным устройством, tty без возможности переименования" + +#: src/selinux.c:203 msgid "unable to get current tty context, not relabeling tty" msgstr "не удаётся получить контекст текущего tty, tty без возможности переименования" -#: src/selinux.c:182 +#: src/selinux.c:210 +msgid "unknown security class \"chr_file\", not relabeling tty" +msgstr "неизвестный класс безопасности «chr_file», tty без возможности переименования" + +#: src/selinux.c:215 msgid "unable to get new tty context, not relabeling tty" -msgstr "не удаётся получить контекст tty, tty без возможности переименования" +msgstr "не удаётся получить новый контекст tty, tty без возможности переименования" -#: src/selinux.c:189 +#: src/selinux.c:224 msgid "unable to set new tty context" msgstr "не удаётся установить новый контекст tty" -#: src/selinux.c:255 +#: src/selinux.c:323 #, c-format msgid "you must specify a role for type %s" msgstr "необходимо указать роль для типа %s" -#: src/selinux.c:261 +#: src/selinux.c:329 #, c-format msgid "unable to get default type for role %s" msgstr "не удаётся получить тип по умолчанию для роли %s" -#: src/selinux.c:279 +#: src/selinux.c:341 +msgid "failed to get new context" +msgstr "не удаётся получить новый контекст" + +#: src/selinux.c:350 #, c-format msgid "failed to set new role %s" -msgstr "не удалось установить новую роль %s" +msgstr "не удаётся установить новую роль %s" -#: src/selinux.c:283 +#: src/selinux.c:354 #, c-format msgid "failed to set new type %s" -msgstr "не удалось установить новый тип %s" +msgstr "не удаётся установить новый тип %s" -#: src/selinux.c:295 +#: src/selinux.c:366 #, c-format msgid "%s is not a valid context" msgstr "%s не является допустимым контекстом" -#: src/selinux.c:330 -msgid "failed to get old_context" -msgstr "не удалось получить old_context" +#: src/selinux.c:394 +msgid "failed to get old context" +msgstr "не удаётся получить прошлый контекст" -#: src/selinux.c:336 +#: src/selinux.c:400 msgid "unable to determine enforcing mode." -msgstr "не удаётся определить принудительный режим" - -#: src/selinux.c:353 -#, c-format -msgid "unable to set tty context to %s" -msgstr "не удаётся задать контекст tty для %s" +msgstr "не удаётся определить принудительный режим." -#: src/selinux.c:392 +#: src/selinux.c:425 #, c-format msgid "unable to set exec context to %s" msgstr "не удаётся установить для контекста exec значение %s" -#: src/selinux.c:399 +#: src/selinux.c:432 #, c-format msgid "unable to set key creation context to %s" msgstr "не удаётся установить для контекста создания ключа значение %s" -#: src/sesh.c:77 -msgid "requires at least one argument" -msgstr "укажите не менее одного аргумента" +#: src/sesh.c:114 src/sesh.c:134 +msgid "Only one of the -c or -i options may be specified" +msgstr "Может использоваться только один из параметров -c или -i" -#: src/sesh.c:106 +#: src/sesh.c:129 #, c-format msgid "invalid file descriptor number: %s" msgstr "неверный номер файлового дескриптора: %s" -#: src/sesh.c:120 +#: src/sesh.c:167 src/sesh.c:171 src/sesh.c:175 #, c-format -msgid "unable to run %s as a login shell" -msgstr "не удаётся выполнить %s в качестве регистрационной оболочки" +msgid "The -%c option may not be used in edit mode." +msgstr "Параметр -%c не может использоваться в режиме редактирования." -#: src/sesh.c:125 src/sudo.c:1274 +#: src/sesh.c:184 src/sesh.c:189 #, c-format -msgid "unable to execute %s" -msgstr "не удаётся выполнить %s" +msgid "The -%c option may only be used in edit mode." +msgstr "Параметр -%c может использоваться только в режиме редактирования." + +#: src/sesh.c:294 src/sesh.c:394 src/sudo_edit.c:204 +#, c-format +msgid "%s: editing symbolic links is not permitted" +msgstr "%s: изменение символических ссылок не допускается" + +#: src/sesh.c:297 src/sesh.c:397 src/sudo_edit.c:207 +#, c-format +msgid "%s: editing files in a writable directory is not permitted" +msgstr "%s: изменение файлов в каталоге, доступном на запись, не допускается" -#: src/signal.c:68 +#: src/sesh.c:381 src/sesh.c:402 src/sesh.c:411 src/sesh.c:419 +#: src/sudo_edit.c:331 +#, c-format +msgid "contents of edit session left in %s" +msgstr "данные сеанса редактирования оставлены в %s" + +#: src/sesh.c:476 src/sudo_edit.c:94 +msgid "unable to get group list" +msgstr "не удаётся получить список групп" + +#: src/signal.c:79 #, c-format msgid "unable to save handler for signal %d" msgstr "не удаётся сохранить обработчик сигнала %d" -#: src/solaris.c:76 +#: src/signal.c:101 src/suspend_parent.c:149 +#, c-format +msgid "unable to restore handler for signal %d" +msgstr "не удаётся восстановить обработчик сигнала %d" + +#: src/solaris.c:72 msgid "resource control limit has been reached" msgstr "достигнут лимит управления ресурсами" -#: src/solaris.c:79 +#: src/solaris.c:75 #, c-format msgid "user \"%s\" is not a member of project \"%s\"" msgstr "пользователь «%s» не является членом проекта «%s»" -#: src/solaris.c:83 +#: src/solaris.c:79 msgid "the invoking task is final" -msgstr "вызывающе задание — последнее" +msgstr "вызывающее задание — последнее" -#: src/solaris.c:86 +#: src/solaris.c:82 #, c-format msgid "could not join project \"%s\"" -msgstr "не удалось присоединиться к проекту «%s»" +msgstr "не удаётся присоединиться к проекту «%s»" -#: src/solaris.c:91 +#: src/solaris.c:89 #, c-format msgid "no resource pool accepting default bindings exists for project \"%s\"" msgstr "для проекта «%s» не существует пула ресурсов, принимающих привязки по умолчанию" -#: src/solaris.c:95 +#: src/solaris.c:93 #, c-format msgid "specified resource pool does not exist for project \"%s\"" msgstr "у проекта «%s» нет указанного пула ресурсов" -#: src/solaris.c:99 +#: src/solaris.c:97 #, c-format msgid "could not bind to default resource pool for project \"%s\"" msgstr "не удаётся подключиться к пулу ресурсов по умолчанию проекта «%s»" -#: src/solaris.c:105 +#: src/solaris.c:104 #, c-format msgid "setproject failed for project \"%s\"" msgstr "setproject завершилась с ошибкой для проекта «%s»" -#: src/solaris.c:107 +#: src/solaris.c:106 #, c-format msgid "warning, resource control assignment failed for project \"%s\"" msgstr "предупреждение: назначение контроля за ресурсами завершилось с ошибкой для проекта «%s»" -#: src/sudo.c:212 +#: src/sudo.c:214 #, c-format msgid "Sudo version %s\n" -msgstr "Sudo версия %s\n" +msgstr "Sudo версии %s\n" -#: src/sudo.c:214 +#: src/sudo.c:216 #, c-format msgid "Configure options: %s\n" msgstr "Параметры настройки: %s\n" -#: src/sudo.c:222 +#: src/sudo.c:224 msgid "fatal error, unable to load plugins" -msgstr "фатальная ошибка, не удалось загрузить модули" +msgstr "фатальная ошибка, не удаётся загрузить модули" -#: src/sudo.c:230 -msgid "unable to initialize policy plugin" -msgstr "не удаётся инициализировать модуль политики" - -#: src/sudo.c:276 +#: src/sudo.c:270 msgid "plugin did not return a command to execute" msgstr "модуль не вернул команду для выполнения" -#: src/sudo.c:292 -#, c-format -msgid "error initializing I/O plugin %s" -msgstr "ошибка инициализации модуля ввода-вывода %s" - -#: src/sudo.c:318 +#: src/sudo.c:306 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "неожиданный режим sudo: 0x%x" -#: src/sudo.c:461 -msgid "unable to get group vector" -msgstr "не удаётся получить вектор группы" - -#: src/sudo.c:522 +#: src/sudo.c:559 #, c-format -msgid "unknown uid %u: who are you?" -msgstr "неизвестный uid %u: кто вы?" +msgid "you do not exist in the %s database" +msgstr "вы не существуете в базе данных %s" -#: src/sudo.c:859 +#: src/sudo.c:616 +msgid "unable to determine tty" +msgstr "не удаётся установить tty" + +#: src/sudo.c:932 +msgid "The \"no new privileges\" flag is set, which prevents sudo from running as root." +msgstr "Установлен флаг «без новых привилегий», блокирующий запуск sudo от имени root." + +#: src/sudo.c:934 +msgid "If sudo is running in a container, you may need to adjust the container configuration to disable the flag." +msgstr "Если sudo запущен внутри контейнера, может понадобиться изменение настроек контейнера для отключения флага." + +#: src/sudo.c:968 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s должен принадлежать пользователю с uid %d и иметь бит setuid" -#: src/sudo.c:862 +#: src/sudo.c:971 #, 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 без прав суперпользователя?" -#: src/sudo.c:868 +#: src/sudo.c:977 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "эффективный uid не равен %d, программа sudo установлена с битом setuid и принадлежит root?" -#: src/sudo.c:999 -#, c-format -msgid "unknown login class %s" -msgstr "неизвестный класс входа %s" - -#: src/sudo.c:1012 -msgid "unable to set user context" -msgstr "не удаётся назначить контекст пользователя" - -#: src/sudo.c:1026 +#: src/sudo.c:993 src/tgetpass.c:332 msgid "unable to set supplementary group IDs" msgstr "не удаётся назначить дополнительные идентификаторы групп" -#: src/sudo.c:1033 +#: src/sudo.c:1000 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "не удаётся назначить эффективный gid на runas gid %u" -#: src/sudo.c:1039 +#: src/sudo.c:1006 #, c-format msgid "unable to set gid to runas gid %u" msgstr "не удаётся назначить gid на runas gid %u" -#: src/sudo.c:1046 -msgid "unable to set process priority" -msgstr "не удаётся назначить приоритет процесса" +#: src/sudo.c:1037 +msgid "argv not set by the security policy" +msgstr "argv не установлен политикой безопасности" + +#: src/sudo.c:1041 +msgid "envp not set by the security policy" +msgstr "envp не установлен политикой безопасности" -#: src/sudo.c:1054 -#, c-format -msgid "unable to change root to %s" -msgstr "не удаётся изменить root на %s" - -#: src/sudo.c:1067 src/sudo.c:1073 src/sudo.c:1080 -#, c-format -msgid "unable to change to runas uid (%u, %u)" -msgstr "не удаётся изменить на runas uid (%u, %u)" - -#: src/sudo.c:1098 -#, c-format -msgid "unable to change directory to %s" -msgstr "не удаётся сменить каталог на %s" - -#: src/sudo.c:1156 +#: src/sudo.c:1063 #, c-format msgid "unexpected child termination condition: %d" msgstr "неожиданное условие завершения потомка: %d" -#: src/sudo.c:1302 +#: src/sudo.c:1176 +msgid "unable to initialize policy plugin" +msgstr "не удаётся инициализировать модуль политики" + +#: src/sudo.c:1238 #, c-format -msgid "policy plugin %s is missing the `check_policy' method" +msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "модуль политики %s не содержит метод «check_policy»" -#: src/sudo.c:1320 +#: src/sudo.c:1284 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "модуль политики %s не поддерживает списка прав" -#: src/sudo.c:1337 +#: src/sudo.c:1328 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "модуль политики %s не поддерживает параметр -v" -#: src/sudo.c:1352 +#: src/sudo.c:1366 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "модуль политики %s не поддерживает параметры -k/-K" -#: src/sudo_edit.c:181 -msgid "unable to restore current working directory" -msgstr "не удалось восстановить текущий рабочий каталог" - -#: src/sudo_edit.c:526 src/sudo_edit.c:630 +#: src/sudo.c:1495 #, c-format -msgid "%s: not a regular file" -msgstr "%s: не обычный файл" +msgid "error initializing I/O plugin %s" +msgstr "ошибка инициализации модуля ввода-вывода %s" -#: src/sudo_edit.c:533 -#, c-format -msgid "%s: editing symbolic links is not permitted" -msgstr "%s: изменение символических ссылок не допускается" +#: src/sudo.c:1498 +msgid "error initializing I/O plugin" +msgstr "ошибка инициализации модуля ввода-вывода" -#: src/sudo_edit.c:536 +#: src/sudo.c:1647 #, c-format -msgid "%s: editing files in a writable directory is not permitted" -msgstr "%s: изменение файлов в каталоге, доступном на запись, не допускается" +msgid "error initializing audit plugin %s" +msgstr "ошибка инициализации модуля аудита %s" -#: src/sudo_edit.c:567 src/sudo_edit.c:669 +#: src/sudo.c:1726 #, c-format -msgid "%s: short write" -msgstr "%s: неполная запись" +msgid "%s: unable to log error event%s%s" +msgstr "%s: не удаётся записать в журнал событие ошибки%s%s" -#: src/sudo_edit.c:631 +#: src/sudo.c:1762 #, c-format -msgid "%s left unmodified" -msgstr "%s осталось неизменным" +msgid "%s: unable to log accept event%s%s" +msgstr "%s: не удаётся записать в журнал событие принятия%s%s" -#: src/sudo_edit.c:644 src/sudo_edit.c:830 +#: src/sudo.c:1767 src/sudo.c:1805 +msgid "audit plugin error" +msgstr "ошибка модуля аудита" + +#: src/sudo.c:1800 #, c-format -msgid "%s unchanged" -msgstr "%s не изменено" +msgid "%s: unable to log reject event%s%s" +msgstr "%s: не удаётся записать в журнал событие отказа%s%s" -#: src/sudo_edit.c:658 src/sudo_edit.c:680 +#: src/sudo.c:1860 #, c-format -msgid "unable to write to %s" -msgstr "не удаётся записать в %s" +msgid "error initializing approval plugin %s" +msgstr "ошибка инициализации модуля подтверждения %s" + +#: src/sudo.c:1930 +msgid "command rejected by approver" +msgstr "команда отклонена средством подтверждения" + +#: src/sudo_edit.c:113 +msgid "no writable temporary directory found" +msgstr "не найден временный каталог с доступом на запись" -#: src/sudo_edit.c:659 src/sudo_edit.c:678 src/sudo_edit.c:681 -#: src/sudo_edit.c:855 src/sudo_edit.c:859 +#: src/sudo_edit.c:292 #, c-format -msgid "contents of edit session left in %s" -msgstr "содержимое сеанса редактирования сохранено в %s" +msgid "%s left unmodified" +msgstr "%s осталось неизменным" -#: src/sudo_edit.c:677 -msgid "unable to read temporary file" -msgstr "не удалось прочитать временный файл" +#: src/sudo_edit.c:305 src/sudo_edit.c:571 +#, c-format +msgid "%s unchanged" +msgstr "%s не изменён" -#: src/sudo_edit.c:760 +#: src/sudo_edit.c:482 msgid "sesh: internal error: odd number of paths" msgstr "sesh: внутренняя ошибка: нечётное количество путей" -#: src/sudo_edit.c:762 +#: src/sudo_edit.c:484 msgid "sesh: unable to create temporary files" -msgstr "sesh: не удалось создать временные файлы" +msgstr "sesh: не удаётся создать временные файлы" + +#: src/sudo_edit.c:486 src/sudo_edit.c:606 +msgid "sesh: killed by a signal" +msgstr "sesh: завершён сигналом" -#: src/sudo_edit.c:764 src/sudo_edit.c:862 +#: src/sudo_edit.c:488 src/sudo_edit.c:609 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: неизвестная ошибка %d" -#: src/sudo_edit.c:854 +#: src/sudo_edit.c:599 msgid "unable to copy temporary files back to their original location" -msgstr "не удалось скопировать временные файлы обратно в изначальное положение" +msgstr "не удаётся скопировать временные файлы обратно в изначальное положение" -#: src/sudo_edit.c:858 +#: src/sudo_edit.c:603 msgid "unable to copy some of the temporary files back to their original location" -msgstr "не удалось скопировать некоторые из временных файлов обратно в изначальное положение" +msgstr "не удаётся скопировать некоторые из временных файлов обратно в изначальное положение" -#: src/sudo_edit.c:901 +#: src/sudo_edit.c:650 #, c-format msgid "unable to change uid to root (%u)" -msgstr "не удалось изменить uid на root (%u)" +msgstr "не удаётся изменить uid на root (%u)" -#: src/sudo_edit.c:918 +#: src/sudo_edit.c:664 +msgid "plugin error: invalid file list for sudoedit" +msgstr "ошибка модуля: некорректный список файлов для sudoedit" + +#: src/sudo_edit.c:685 msgid "plugin error: missing file list for sudoedit" msgstr "ошибка модуля: отсутствует список файлов для sudoedit" -#: src/sudo_edit.c:959 src/sudo_edit.c:972 +#: src/sudo_edit.c:728 src/sudo_edit.c:743 msgid "unable to read the clock" -msgstr "не удалось прочитать время" +msgstr "не удаётся прочитать время" + +#: src/sudo_intercept_common.c:365 +msgid "intercept port not set" +msgstr "порт перехвата не назначен" -#: src/tgetpass.c:107 -msgid "no tty present and no askpass program specified" -msgstr "нет tty и не указана программа askpass" +#: src/tgetpass.c:95 +msgid "timed out reading password" +msgstr "превышено время ожидания при чтении пароля" -#: src/tgetpass.c:116 +#: src/tgetpass.c:98 +msgid "no password was provided" +msgstr "пароль не предоставлен" + +#: src/tgetpass.c:101 +msgid "unable to read password" +msgstr "не удаётся прочитать пароль" + +#: 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" + +#: src/tgetpass.c:152 msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "не указана программа askpass, попробуйте задать значение в SUDO_ASKPASS" -#: src/tgetpass.c:276 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" -msgstr "не удаётся назначить gid равным %u" +msgstr "не удаётся назначить gid равным %u" -#: src/tgetpass.c:280 +#: src/tgetpass.c:337 #, c-format msgid "unable to set uid to %u" -msgstr "не удаётся назначить uid равным %u" +msgstr "не удаётся назначить uid равным %u" -#: src/tgetpass.c:285 +#: src/tgetpass.c:342 #, c-format msgid "unable to run %s" -msgstr "не удаётся выполнить %s" +msgstr "не удаётся запустить %s" -#: src/utmp.c:266 +#: src/utmp.c:283 msgid "unable to save stdin" msgstr "не удаётся сохранить стандартный ввод" -#: src/utmp.c:268 +#: src/utmp.c:285 msgid "unable to dup2 stdin" msgstr "не удаётся выполнить dup2 для стандартного ввода" -#: src/utmp.c:271 +#: src/utmp.c:288 msgid "unable to restore stdin" msgstr "не удаётся восстановить стандартный ввод" +#~ msgid "error reading from signal pipe" +#~ msgstr "ошибка чтения из сигнального канала" + +#~ msgid "%s%s: %s" +#~ msgstr "%s%s: %s" + +#~ msgid "%s must be owned by uid %d" +#~ msgstr "%s должен принадлежать пользователю с uid %d" + +#~ msgid "%s must be only be writable by owner" +#~ msgstr "%s должен быть доступен на запись только владельцу" + +#~ msgid "ignoring duplicate policy plugin `%s' in %s, line %d" +#~ msgstr "игнорируется повторный модуль политики «%s» в %s, строка %d" + +#~ msgid "unable to set tty context to %s" +#~ msgstr "не удаётся задать контекст tty для %s" + +#~ msgid "requires at least one argument" +#~ msgstr "укажите не менее одного аргумента" + +#~ msgid "unable to run %s as a login shell" +#~ msgstr "не удаётся выполнить %s в качестве регистрационной оболочки" + +#~ msgid "unknown uid %u: who are you?" +#~ msgstr "неизвестный uid %u: кто вы?" + +#~ msgid "%s: short write" +#~ msgstr "%s: неполная запись" + +#~ msgid "unable to read temporary file" +#~ msgstr "не удаётся прочитать временный файл" + +#~ msgid "no tty present and no askpass program specified" +#~ msgstr "нет tty и не указана программа askpass" + #~ msgid "internal error, tried allocate zero bytes" #~ msgstr "внутренняя ошибка, попытка выделить 0 байт" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/po/sr.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/po/sr.mo differ diff -Nru sudo-1.9.13p3/po/sr.po sudo-1.9.14p2/po/sr.po --- sudo-1.9.13p3/po/sr.po 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/po/sr.po 2023-07-15 15:37:22.000000000 +0000 @@ -1,13 +1,13 @@ # Serbian translations for sudo package. # This file is put in the public domain. -# Мирослав Николић , 2011–2022. +# Мирослав Николић , 2011–2023. # msgid "" msgstr "" -"Project-Id-Version: sudo-1.9.11b1\n" +"Project-Id-Version: sudo-1.9.13b2\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2022-05-27 08:39-0600\n" -"PO-Revision-Date: 2022-09-08 20:38+0200\n" +"POT-Creation-Date: 2023-01-24 13:11-0700\n" +"PO-Revision-Date: 2023-02-26 09:32+0100\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" @@ -16,6 +16,7 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Gtranslator 41.0\n" #: lib/util/aix.c:89 lib/util/aix.c:169 msgid "unable to open userdb" @@ -31,76 +32,75 @@ 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: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:205 src/exec_monitor.c:458 -#: 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:224 src/exec_nopty.c:233 -#: src/exec_nopty.c:240 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:311 src/exec_nopty.c:549 -#: src/exec_preload.c:143 src/exec_preload.c:204 src/exec_ptrace.c:632 -#: src/exec_ptrace.c:730 src/exec_ptrace.c:895 src/exec_pty.c:845 -#: src/exec_pty.c:854 src/exec_pty.c:911 src/exec_pty.c:1075 -#: src/exec_pty.c:1265 src/exec_pty.c:1274 src/exec_pty.c:1281 -#: src/exec_pty.c:1288 src/exec_pty.c:1295 src/exec_pty.c:1302 -#: src/exec_pty.c:1309 src/exec_pty.c:1316 src/exec_pty.c:1323 -#: src/exec_pty.c:1330 src/exec_pty.c:1337 src/exec_pty.c:1345 -#: src/exec_pty.c:1811 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:169 src/parse_args.c:190 src/parse_args.c:264 -#: src/parse_args.c:613 src/parse_args.c:635 src/parse_args.c:660 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:89 -#: src/selinux.c:362 src/selinux.c:474 src/selinux.c:485 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:639 src/sudo.c:712 src/sudo.c:722 src/sudo.c:748 src/sudo.c:771 -#: src/sudo.c:780 src/sudo.c:789 src/sudo.c:806 src/sudo.c:848 src/sudo.c:858 -#: src/sudo.c:891 src/sudo.c:1100 src/sudo.c:1121 src/sudo.c:1414 -#: src/sudo.c:1583 src/sudo.c:1810 src/sudo.c:2144 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:677 -#: src/sudo_edit.c:697 src/sudo_intercept_common.c:113 -#: src/sudo_intercept_common.c:317 +#: lib/util/json.c:55 lib/util/json.c:197 lib/util/sudo_conf.c:215 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 +#: src/conversation.c:80 src/exec_iolog.c:124 src/exec_iolog.c:135 +#: src/exec_iolog.c:212 src/exec_monitor.c:205 src/exec_monitor.c:460 +#: src/exec_monitor.c:466 src/exec_monitor.c:474 src/exec_monitor.c:482 +#: src/exec_monitor.c:489 src/exec_monitor.c:496 src/exec_monitor.c:503 +#: src/exec_monitor.c:510 src/exec_monitor.c:517 src/exec_monitor.c:524 +#: src/exec_monitor.c:531 src/exec_nopty.c:231 src/exec_nopty.c:240 +#: 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:318 src/exec_nopty.c:326 +#: src/exec_nopty.c:736 src/exec_preload.c:343 src/exec_ptrace.c:475 +#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1095 +#: src/exec_ptrace.c:1270 src/exec_ptrace.c:1612 src/exec_ptrace.c:1639 +#: src/exec_pty.c:511 src/exec_pty.c:692 src/exec_pty.c:882 src/exec_pty.c:891 +#: src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 src/exec_pty.c:919 +#: src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 src/exec_pty.c:947 +#: src/exec_pty.c:954 src/exec_pty.c:962 src/load_plugins.c:98 +#: src/load_plugins.c:123 src/load_plugins.c:159 src/load_plugins.c:392 +#: src/load_plugins.c:398 src/parse_args.c:172 src/parse_args.c:193 +#: src/parse_args.c:267 src/parse_args.c:623 src/parse_args.c:645 +#: src/parse_args.c:670 src/preserve_fds.c:46 src/preserve_fds.c:131 +#: src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 src/selinux.c:489 +#: src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 src/sesh.c:246 +#: src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:641 src/sudo.c:706 +#: src/sudo.c:716 src/sudo.c:743 src/sudo.c:766 src/sudo.c:775 src/sudo.c:784 +#: src/sudo.c:801 src/sudo.c:842 src/sudo.c:851 src/sudo.c:861 src/sudo.c:894 +#: src/sudo.c:1122 src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 +#: src/sudo.c:1832 src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 +#: src/sudo_edit.c:429 src/sudo_edit.c:438 src/sudo_edit.c:538 +#: src/sudo_edit.c:545 src/sudo_edit.c:688 src/sudo_edit.c:708 +#: src/sudo_intercept_common.c:115 src/sudo_intercept_common.c:340 #, 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/regex.c:113 lib/util/regex.c:121 -#: 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:68 -#: src/exec_intercept.c:336 src/exec_intercept.c:359 src/exec_intercept.c:367 -#: src/exec_intercept.c:392 src/exec_intercept.c:398 src/exec_intercept.c:407 -#: src/exec_intercept.c:413 src/exec_intercept.c:478 src/exec_intercept.c:588 -#: src/exec_intercept.c:707 src/exec_monitor.c:458 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:224 src/exec_nopty.c:233 src/exec_nopty.c:240 -#: 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:311 src/exec_preload.c:143 src/exec_preload.c:204 -#: src/exec_ptrace.c:632 src/exec_pty.c:845 src/exec_pty.c:854 -#: src/exec_pty.c:911 src/exec_pty.c:1265 src/exec_pty.c:1274 -#: src/exec_pty.c:1281 src/exec_pty.c:1288 src/exec_pty.c:1295 -#: src/exec_pty.c:1302 src/exec_pty.c:1309 src/exec_pty.c:1316 -#: src/exec_pty.c:1323 src/exec_pty.c:1330 src/exec_pty.c:1337 -#: src/exec_pty.c:1345 src/exec_pty.c:1811 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:169 src/parse_args.c:191 -#: src/parse_args.c:264 src/parse_args.c:613 src/parse_args.c:635 -#: src/parse_args.c:660 src/preserve_fds.c:46 src/preserve_fds.c:131 -#: src/selinux.c:89 src/selinux.c:362 src/selinux.c:474 src/selinux.c:485 -#: src/sesh.c:113 src/sesh.c:411 src/sudo.c:230 src/sudo.c:639 src/sudo.c:891 -#: src/sudo.c:1100 src/sudo.c:1121 src/sudo.c:1414 src/sudo.c:1583 -#: src/sudo.c:1810 src/sudo.c:2144 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:677 src/sudo_edit.c:697 -#: src/sudo_intercept_common.c:113 src/sudo_intercept_common.c:317 +#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:56 +#: lib/util/json.c:198 lib/util/regex.c:173 lib/util/sudo_conf.c:216 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 +#: src/conversation.c:81 src/exec_intercept.c:111 src/exec_intercept.c:344 +#: src/exec_intercept.c:518 src/exec_intercept.c:582 src/exec_intercept.c:706 +#: src/exec_intercept.c:830 src/exec_iolog.c:124 src/exec_iolog.c:135 +#: src/exec_iolog.c:212 src/exec_monitor.c:460 src/exec_monitor.c:466 +#: src/exec_monitor.c:474 src/exec_monitor.c:482 src/exec_monitor.c:489 +#: src/exec_monitor.c:496 src/exec_monitor.c:503 src/exec_monitor.c:510 +#: src/exec_monitor.c:517 src/exec_monitor.c:524 src/exec_monitor.c:531 +#: src/exec_nopty.c:231 src/exec_nopty.c:240 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:318 src/exec_nopty.c:326 src/exec_preload.c:343 +#: src/exec_ptrace.c:475 src/exec_ptrace.c:768 src/exec_ptrace.c:983 +#: src/exec_ptrace.c:1639 src/exec_pty.c:511 src/exec_pty.c:882 +#: src/exec_pty.c:891 src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 +#: src/exec_pty.c:919 src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 +#: src/exec_pty.c:947 src/exec_pty.c:954 src/exec_pty.c:962 +#: src/load_plugins.c:98 src/load_plugins.c:123 src/load_plugins.c:159 +#: src/load_plugins.c:392 src/load_plugins.c:398 src/parse_args.c:172 +#: src/parse_args.c:194 src/parse_args.c:267 src/parse_args.c:623 +#: src/parse_args.c:645 src/parse_args.c:670 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:471 +#: src/sudo.c:230 src/sudo.c:641 src/sudo.c:894 src/sudo.c:1122 +#: src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 src/sudo.c:1832 +#: src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 +#: src/sudo_edit.c:438 src/sudo_edit.c:538 src/sudo_edit.c:545 +#: src/sudo_edit.c:688 src/sudo_edit.c:708 src/sudo_intercept_common.c:115 +#: src/sudo_intercept_common.c:340 msgid "unable to allocate memory" msgstr "не могу да доделим меморију" @@ -114,24 +114,24 @@ msgid "%.*s exists but is not a directory (0%o)" msgstr "„%.*s“ постоји али није директоријум (0%o)" -#: lib/util/mkdir_parents.c:102 lib/util/sudo_conf.c:704 src/selinux.c:235 -#: src/selinux.c:265 src/sudo.c:371 src/sudo_edit.c:494 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:666 +#: lib/util/sudo_conf.c:696 lib/util/sudo_conf.c:703 src/selinux.c:235 +#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:494 src/sudo_edit.c:557 #, c-format msgid "unable to open %s" msgstr "не могу да отворим %s" -#: lib/util/mkdir_parents.c:119 lib/util/mkdir_parents.c:127 -#: lib/util/mkdir_parents.c:136 -#, c-format -msgid "unable to open %.*s" -msgstr "не могу да отворим „%.*s“" - -#: lib/util/mkdir_parents.c:157 +#: lib/util/mkdir_parents.c:120 lib/util/mkdir_parents.c:160 #, c-format msgid "unable to mkdir %.*s" msgstr "не могу да направим директоријум „%.*s“" -#: lib/util/regex.c:103 +#: lib/util/mkdir_parents.c:130 lib/util/mkdir_parents.c:139 +#, c-format +msgid "unable to open %.*s" +msgstr "не могу да отворим „%.*s“" + +#: lib/util/regex.c:163 msgid "regular expression too large" msgstr "регуларни израз је превелик" @@ -139,8 +139,8 @@ 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:146 src/sesh.c:159 +#: lib/util/strtoid.c:84 lib/util/strtomode.c:52 lib/util/strtonum.c:148 +#: lib/util/strtonum.c:187 src/sesh.c:240 src/sesh.c:253 msgid "invalid value" msgstr "неисправна вредност" @@ -152,86 +152,86 @@ msgid "value too small" msgstr "вредност је премала" -#: lib/util/sudo_conf.c:237 +#: lib/util/sudo_conf.c:234 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "неисправна вредност путање „%s“ у „%s“, %u. ред" -#: lib/util/sudo_conf.c:403 lib/util/sudo_conf.c:419 lib/util/sudo_conf.c:472 +#: lib/util/sudo_conf.c:400 lib/util/sudo_conf.c:453 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "неисправна вредност за %s „%s“ у „%s“, %u. ред" -#: lib/util/sudo_conf.c:440 +#: lib/util/sudo_conf.c:421 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "неподржани извор групе „%s“ у „%s“, %u. ред" -#: lib/util/sudo_conf.c:456 +#: lib/util/sudo_conf.c:437 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "неисправне највеће групе „%s“ у „%s“, %u. ред" -#: lib/util/sudo_conf.c:681 src/copy_file.c:150 -#, c-format -msgid "unable to stat %s" -msgstr "не могу да добијем податке о „%s“" - -#: lib/util/sudo_conf.c:684 +#: lib/util/sudo_conf.c:669 #, c-format msgid "%s is not a regular file" msgstr "„%s“ није обична датотека" -#: lib/util/sudo_conf.c:687 src/copy_file.c:163 +#: lib/util/sudo_conf.c:672 src/copy_file.c:164 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s је у власништву уиб-а %u, а треба бити %u" -#: lib/util/sudo_conf.c:691 +#: lib/util/sudo_conf.c:676 #, c-format msgid "%s is world writable" msgstr "%s је светски уписив" -#: lib/util/sudo_conf.c:694 +#: lib/util/sudo_conf.c:679 #, c-format msgid "%s is group writable" msgstr "%s је групно уписив" -#: src/apparmor.c:79 +#: src/apparmor.c:85 msgid "failed to determine AppArmor confinement" msgstr "нисам успео да одредим оивичење АпАрмора" -#: src/apparmor.c:87 +#: src/apparmor.c:93 #, c-format msgid "unable to change AppArmor profile to %s" msgstr "не могу да променим АпАрмор профил на „%s“" -#: src/copy_file.c:93 +#: src/copy_file.c:94 #, c-format msgid "%s: truncate %s to zero bytes? (y/n) [n] " msgstr "%s: да скратим „%s“ на нула бајта? (y/n) [n] " -#: src/copy_file.c:97 +#: src/copy_file.c:98 #, c-format msgid "not overwriting %s" msgstr "не преписујем „%s“" -#: src/copy_file.c:119 +#: src/copy_file.c:120 #, c-format msgid "unable to read from %s" msgstr "не могу да читам из „%s“" -#: src/copy_file.c:136 src/sudo_edit.c:320 +#: src/copy_file.c:137 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "не могу да упишем у %s" -#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 +#: src/copy_file.c:151 +#, c-format +msgid "unable to stat %s" +msgstr "не могу да добијем податке о „%s“" + +#: src/copy_file.c:155 src/sesh.c:312 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "%s: није обична датотека" -#: src/copy_file.c:158 +#: src/copy_file.c:159 #, c-format msgid "%s: bad file mode: 0%o" msgstr "%s: лош режим датотеке: 0%o" @@ -240,60 +240,59 @@ msgid "unable to restore current working directory" msgstr "не могу да повратим текући радни директоријум" -#: src/exec.c:103 +#: src/exec.c:111 msgid "unable to set privileges" msgstr "не могу да поставим привилегије" -#: src/exec.c:109 src/exec.c:114 +#: src/exec.c:117 src/exec.c:122 msgid "unable to set limit privileges" msgstr "не могу да поставим привилегије ограничења" -#: src/exec.c:137 +#: src/exec.c:145 #, c-format msgid "unknown login class %s" msgstr "непозната класа пријаве %s" -#: src/exec.c:149 +#: src/exec.c:157 msgid "unable to set user context" msgstr "не могу да подесим кориснички контекст" -#: src/exec.c:165 +#: src/exec.c:173 msgid "unable to set process priority" msgstr "не могу да подесим приоритет процеса" -#: src/exec.c:182 +#: src/exec.c:190 #, c-format msgid "unable to change root to %s" msgstr "не могу да променим администратора на %s" -#: src/exec.c:195 src/exec.c:201 src/exec.c:208 +#: src/exec.c:203 src/exec.c:209 src/exec.c:216 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "не могу да се пребацим у покрени_као уид (%u, %u)" -#: src/exec.c:226 +#: src/exec.c:238 src/sesh.c:199 #, c-format msgid "unable to change directory to %s" msgstr "не могу да променим директоријум у %s" -#: src/exec.c:230 +#: src/exec.c:243 #, c-format msgid "starting from %s" msgstr "почевши од „%s“" -#: src/exec.c:312 src/exec_monitor.c:575 src/exec_monitor.c:577 -#: src/exec_monitor.c:648 src/exec_nopty.c:439 src/exec_pty.c:586 -#: src/exec_pty.c:1447 src/exec_pty.c:1449 src/signal.c:144 src/signal.c:151 -#: src/signal.c:165 src/suspend_nopty.c:89 +#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:569 src/exec_monitor.c:571 +#: src/exec_pty.c:225 src/exec_pty.c:1026 src/exec_pty.c:1028 src/signal.c:144 +#: src/signal.c:151 src/signal.c:165 src/suspend_nopty.c:93 #, c-format msgid "unable to set handler for signal %d" msgstr "не могу да подесим руковаоца за сигнал „%d“" -#: src/exec.c:391 +#: src/exec.c:422 msgid "intercept mode is not supported with SELinux RBAC on this system" msgstr "режим пресретања није подржан са СЕЛинукс РБАЦ-ом на овом систему" -#: src/exec.c:396 +#: src/exec.c:427 msgid "unable to log sub-commands with SELinux RBAC on this system" msgstr "не могу да забележим садржане наредбе са СЕЛинукс РБАЦ-ом на овом систему" @@ -301,285 +300,289 @@ msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "не могу да уклоним PRIV_PROC_EXEC из PRIV_LIMIT" -#: src/exec_intercept.c:95 src/exec_intercept.c:674 src/exec_intercept.c:864 -#: src/exec_intercept.c:876 src/exec_monitor.c:466 src/exec_monitor.c:474 -#: src/exec_monitor.c:482 src/exec_monitor.c:489 src/exec_monitor.c:496 -#: src/exec_monitor.c:503 src/exec_monitor.c:510 src/exec_monitor.c:517 -#: src/exec_monitor.c:524 src/exec_monitor.c:531 src/exec_nopty.c:226 -#: 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:305 src/exec_nopty.c:313 -#: src/exec_pty.c:711 src/exec_pty.c:716 src/exec_pty.c:813 src/exec_pty.c:820 -#: src/exec_pty.c:917 src/exec_pty.c:1267 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297 -#: src/exec_pty.c:1304 src/exec_pty.c:1311 src/exec_pty.c:1318 -#: src/exec_pty.c:1325 src/exec_pty.c:1332 src/exec_pty.c:1339 -#: src/exec_pty.c:1764 src/exec_pty.c:1774 src/exec_pty.c:1819 -#: src/exec_pty.c:1826 src/exec_pty.c:1853 +#: src/exec_intercept.c:70 src/exec_iolog.c:165 src/exec_iolog.c:175 +#: src/exec_iolog.c:220 src/exec_iolog.c:227 src/exec_iolog.c:254 +#: src/exec_monitor.c:468 src/exec_monitor.c:476 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_monitor.c:533 src/exec_nopty.c:233 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:305 +#: src/exec_nopty.c:312 src/exec_nopty.c:320 src/exec_nopty.c:328 +#: src/exec_nopty.c:387 src/exec_nopty.c:453 src/exec_pty.c:360 +#: src/exec_pty.c:462 src/exec_pty.c:517 src/exec_pty.c:884 src/exec_pty.c:893 +#: src/exec_pty.c:900 src/exec_pty.c:907 src/exec_pty.c:914 src/exec_pty.c:921 +#: src/exec_pty.c:928 src/exec_pty.c:935 src/exec_pty.c:942 src/exec_pty.c:949 +#: src/exec_pty.c:956 msgid "unable to add event to queue" msgstr "не могу да додам догађај у ред" -#: src/exec_intercept.c:344 src/sudo.c:1226 src/sudo.c:1271 src/sudo.c:1315 +#: src/exec_intercept.c:317 src/sudo.c:1028 +msgid "command not set by the security policy" +msgstr "наредба није постављена политиком безбедности" + +#: src/exec_intercept.c:395 src/exec_intercept.c:435 src/sudo.c:1248 +#: src/sudo.c:1293 src/sudo.c:1337 msgid "command rejected by policy" msgstr "наредба је одбачена политиком" -#: src/exec_intercept.c:437 src/sudo.c:1231 src/sudo.c:1276 src/sudo.c:1320 -#: src/sudo.c:1394 +#: src/exec_intercept.c:505 src/sudo.c:1935 +msgid "approval plugin error" +msgstr "грешка прикључка одобравања" + +#: src/exec_intercept.c:530 src/sudo.c:1253 src/sudo.c:1298 src/sudo.c:1342 +#: src/sudo.c:1416 msgid "policy plugin error" msgstr "грешка прикључка политике" -#: src/exec_intercept.c:462 +#: src/exec_intercept.c:559 msgid "invalid PolicyCheckRequest" msgstr "неисправан захтев провере политике" -#: src/exec_intercept.c:584 +#: src/exec_intercept.c:702 #, c-format msgid "client request too large: %zu" msgstr "захтев клијента је превелик: %zu" -#: src/exec_intercept.c:622 +#: src/exec_intercept.c:744 #, c-format msgid "unable to unpack %s size %zu" msgstr "не могу да распакујем „%s“ величине %zu" -#: src/exec_intercept.c:665 +#: src/exec_intercept.c:792 #, c-format msgid "unexpected type_case value %d in %s from %s" msgstr "неочекивана вредност врсте_слова %d у „%s“ из „%s“" -#: src/exec_intercept.c:695 +#: src/exec_intercept.c:818 #, c-format msgid "server message too large: %zu" msgstr "порука сервера је превелика: %zu" -#: src/exec_monitor.c:360 +#: src/exec_iolog.c:323 src/exec_iolog.c:363 src/exec_iolog.c:403 +#: src/exec_iolog.c:454 src/exec_iolog.c:505 +msgid "I/O plugin error" +msgstr "грешка У/И прикључка" + +#: src/exec_iolog.c:327 src/exec_iolog.c:367 src/exec_iolog.c:407 +#: src/exec_iolog.c:458 src/exec_iolog.c:509 +msgid "command rejected by I/O plugin" +msgstr "наредбу је одбацио У/И прикључак" + +#: src/exec_iolog.c:556 +msgid "error logging suspend" +msgstr "грешка обуставе писања дневника" + +#: src/exec_iolog.c:591 +msgid "error changing window size" +msgstr "грешка промене величине прозора" + +#: src/exec_monitor.c:362 msgid "error reading from socketpair" msgstr "грешка у читању из пара прикључка" -#: src/exec_monitor.c:377 +#: src/exec_monitor.c:379 #, c-format msgid "unexpected reply type on backchannel: %d" msgstr "неочекивана врста одговора на повратном каналу: %d" -#: src/exec_monitor.c:593 +#: src/exec_monitor.c:587 msgid "unable to set controlling tty" msgstr "не могу да подесим контролисање tty" -#: src/exec_monitor.c:601 src/exec_nopty.c:382 src/exec_pty.c:1526 -#: src/exec_pty.c:1547 src/exec_pty.c:1567 src/tgetpass.c:305 +#: src/exec_monitor.c:595 src/exec_nopty.c:498 src/exec_nopty.c:508 +#: src/exec_nopty.c:518 src/exec_nopty.c:552 src/exec_pty.c:1097 +#: src/exec_pty.c:1118 src/exec_pty.c:1138 src/tgetpass.c:305 msgid "unable to create pipe" msgstr "не могу да направим спојку" -#: src/exec_monitor.c:611 +#: src/exec_monitor.c:605 msgid "unable to receive message from parent" msgstr "не могу да примим поруку од родитеља" -#: src/exec_monitor.c:627 src/exec_nopty.c:422 src/exec_pty.c:1605 +#: src/exec_monitor.c:621 src/exec_nopty.c:595 src/exec_pty.c:1176 #: src/sudo_edit.c:361 src/tgetpass.c:309 msgid "unable to fork" msgstr "не могу да поделим" -#: src/exec_monitor.c:631 src/exec_monitor.c:749 src/exec_nopty.c:518 +#: src/exec_monitor.c:625 src/exec_monitor.c:723 src/exec_nopty.c:700 msgid "unable to restore tty label" msgstr "не могу да повратим tty натпис" -#: src/exec_monitor.c:664 src/sesh.c:123 src/sudo.c:1177 +#: src/exec_monitor.c:638 src/sesh.c:217 src/sudo.c:1199 #, c-format msgid "unable to execute %s" msgstr "не могу да извршим %s" -#: src/exec_nopty.c:376 src/exec_pty.c:1456 +#: src/exec_nopty.c:546 src/exec_pty.c:1035 msgid "policy plugin failed session initialization" msgstr "није успело покретање сесије прикључка политике" -#: src/exec_nopty.c:391 src/exec_pty.c:1425 src/exec_pty.c:1434 +#: src/exec_nopty.c:561 src/exec_pty.c:1004 src/exec_pty.c:1013 msgid "unable to create sockets" msgstr "не могу да направим утичнице" -#: src/exec_nopty.c:506 src/exec_pty.c:1703 +#: src/exec_nopty.c:688 src/exec_pty.c:1274 msgid "error in event loop" msgstr "грешка у петљи догађаја" -#: src/exec_ptrace.c:647 -msgid "insufficient space for execve arguments" -msgstr "недовољно простора за „execve“ аргументе" - -#: src/exec_ptrace.c:658 src/exec_ptrace.c:668 src/exec_ptrace.c:678 +#: src/exec_preload.c:167 src/net_ifs.c:206 src/net_ifs.c:372 +#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:851 src/sudo.c:488 +#: src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format -msgid "unable to read execve %s for process %d" -msgstr "не могу да прочитам „execve %s“ за процес %d" +msgid "internal error, %s overflow" +msgstr "унутрашња грешка, прекорачење функције „%s“" -#: src/exec_ptrace.c:714 src/exec_ptrace.c:739 src/exec_ptrace.c:1194 +#: src/exec_ptrace.c:1079 src/exec_ptrace.c:1104 src/exec_ptrace.c:1900 #, c-format msgid "unable to set registers for process %d" msgstr "не могу да поставим регистре за процес %d" -#: src/exec_ptrace.c:734 src/exec_ptrace.c:899 +#: src/exec_ptrace.c:1099 src/exec_ptrace.c:1274 src/exec_ptrace.c:1616 #, c-format msgid "process %d exited unexpectedly" msgstr "процес %d је изашао неочекивано" -#: src/exec_ptrace.c:843 +#: src/exec_ptrace.c:1208 msgid "unable to set seccomp filter" msgstr "не могу да поставим „seccomp“ филтер" -#: src/exec_ptrace.c:934 +#: src/exec_ptrace.c:1405 +#, c-format +msgid "interpreter argument , expected \"%s\", got \"%s\"" +msgstr "аргумент тумача, очекивах „%s“, добих „%s“" + +#: src/exec_ptrace.c:1504 #, c-format msgid "pathname mismatch, expected \"%s\", got \"%s\"" msgstr "назив путање не одговара, очекивах „%s“, добих „%s“" -#: src/exec_ptrace.c:942 src/exec_ptrace.c:948 src/exec_ptrace.c:954 -#: src/exec_ptrace.c:962 src/exec_ptrace.c:968 src/exec_ptrace.c:974 +#: src/exec_ptrace.c:1513 src/exec_ptrace.c:1520 src/exec_ptrace.c:1533 +#: src/exec_ptrace.c:1541 src/exec_ptrace.c:1547 src/exec_ptrace.c:1553 #, c-format msgid "%s[%d] mismatch, expected \"%s\", got \"%s\"" msgstr "%s[%d] не одговара, очекивах „%s“, добих „%s“" -#: src/exec_ptrace.c:1013 +#: src/exec_ptrace.c:1620 +#, c-format +msgid "process %d unexpected status 0x%x" +msgstr "процес %d неочекиваног статуса 0x%x" + +#: src/exec_ptrace.c:1711 #, c-format msgid "unable to get event message for process %d" msgstr "не могу да добавим поруку догађаја за процес %d" -#: src/exec_ptrace.c:1019 +#: src/exec_ptrace.c:1718 #, c-format msgid "unable to get registers for process %d" msgstr "не могу да добавим регистре за процес %d" -#: src/exec_pty.c:163 +#: src/exec_pty.c:103 msgid "unable to allocate pty" msgstr "не могу да доделим pty" -#: src/exec_pty.c:227 src/exec_pty.c:267 src/exec_pty.c:307 src/exec_pty.c:358 -#: src/exec_pty.c:409 -msgid "I/O plugin error" -msgstr "грешка У/И прикључка" - -#: src/exec_pty.c:231 src/exec_pty.c:271 src/exec_pty.c:311 src/exec_pty.c:362 -#: src/exec_pty.c:413 -msgid "command rejected by I/O plugin" -msgstr "наредбу је одбацио У/И прикључак" - -#: src/exec_pty.c:460 -msgid "error logging suspend" -msgstr "грешка обуставе писања дневника" - -#: src/exec_pty.c:494 -msgid "error changing window size" -msgstr "грешка промене величине прозора" - -#: src/exec_pty.c:624 src/signal.c:101 src/suspend_nopty.c:95 +#: src/exec_pty.c:268 src/signal.c:101 src/suspend_nopty.c:99 #, c-format msgid "unable to restore handler for signal %d" msgstr "не могу да повратим руковаоца за сигнал „%d“" -#: src/exec_pty.c:1651 +#: src/exec_pty.c:1222 msgid "unable to send message to monitor process" msgstr "не могу да пошаљем поруку процесу праћења" -#: 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 +#: src/load_plugins.c:73 src/load_plugins.c:220 src/load_plugins.c:230 +#: src/load_plugins.c:240 src/load_plugins.c:287 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "грешка у „%s“, %d. ред приликом учитавања прикључка „%s“" -#: src/load_plugins.c:124 -#, c-format -msgid "%s must be owned by uid %d" -msgstr "%s мора бити у власништву уида %d" - -#: src/load_plugins.c:130 -#, c-format -msgid "%s must be only be writable by owner" -msgstr "%s мора бити уписив само од стране власника" - -#: src/load_plugins.c:241 src/load_plugins.c:312 +#: src/load_plugins.c:184 src/load_plugins.c:255 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "занемарујем удвостручени „%s“ прикључак у %s, %d. ред" -#: src/load_plugins.c:279 +#: src/load_plugins.c:222 #, c-format msgid "unable to load %s: %s" msgstr "не могу да учитам %s: %s" -#: src/load_plugins.c:289 +#: src/load_plugins.c:232 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "не могу да пронађем симбол „%s“ у %s" -#: src/load_plugins.c:299 +#: src/load_plugins.c:242 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "пронађено је несагласно главно издање прикључка %d (очекивано је %d) у „%s“" -#: src/load_plugins.c:317 +#: src/load_plugins.c:260 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "занемарујем прикључак сигурности „%s“ у %s, %d. ред" -#: src/load_plugins.c:320 +#: src/load_plugins.c:263 msgid "only a single policy plugin may be specified" msgstr "може бити наведен само један прикључак сигурности" -#: src/load_plugins.c:346 +#: src/load_plugins.c:289 #, c-format msgid "unknown plugin type %d found in %s" msgstr "нађох непознату врсту прикључка %d у „%s“" -#: src/load_plugins.c:529 +#: src/load_plugins.c:472 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "прикључак сигурности %s не садржи метод провере_сигурности" -#: 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:486 src/sudo_edit.c:398 src/sudo_edit.c:406 -#, c-format -msgid "internal error, %s overflow" -msgstr "унутрашња грешка, прекорачење функције „%s“" - -#: src/parse_args.c:211 +#: src/parse_args.c:214 #, c-format msgid "invalid environment variable name: %s" msgstr "неисправан назив променљиве окружења: %s" -#: src/parse_args.c:314 +#: src/parse_args.c:317 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "аргумент уз -C мора бити број већи или једнак 3" -#: src/parse_args.c:545 +#: src/parse_args.c:554 msgid "you may not specify both the -i and -s options" msgstr "не можете да наведете обе опције „-i“ и „-s“" -#: src/parse_args.c:550 +#: src/parse_args.c:559 msgid "you may not specify both the -i and -E options" msgstr "не можете да наведете обе опције „-i“ и „-E“" -#: src/parse_args.c:560 +#: src/parse_args.c:569 msgid "the -E option is not valid in edit mode" msgstr "опција „-E“ није исправна у режиму уређивања" -#: src/parse_args.c:563 +#: src/parse_args.c:572 msgid "you may not specify environment variables in edit mode" msgstr "не можете да одредите променљиве окружења у режиму уређивања" -#: src/parse_args.c:573 +#: src/parse_args.c:582 msgid "the -U option may only be used with the -l option" msgstr "опција „-U“ може бити коришћена само са опцијом „-l“" -#: src/parse_args.c:577 +#: src/parse_args.c:586 msgid "the -A and -S options may not be used together" msgstr "опције „-A“ и „-S“ не могу бити коришћене заједно" -#: src/parse_args.c:674 +#: src/parse_args.c:684 msgid "sudoedit is not supported on this platform" msgstr "„sudoedit“ није подржано на овој платформи" -#: src/parse_args.c:757 +#: src/parse_args.c:767 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:780 +msgid "Only one of the -K, -k or -N options may be specified" +msgstr "Само једна од опција „-K“, „-k“ или „-N“ може бити наведена" + +#: src/parse_args.c:796 #, c-format msgid "" "%s - edit files as another user\n" @@ -588,7 +591,7 @@ "%s — уредите датотеке као други корисник\n" "\n" -#: src/parse_args.c:775 +#: src/parse_args.c:798 #, c-format msgid "" "%s - execute a command as another user\n" @@ -597,7 +600,7 @@ "%s — извршите наредбу као други корисник\n" "\n" -#: src/parse_args.c:781 +#: src/parse_args.c:804 msgid "" "\n" "Options:\n" @@ -605,131 +608,131 @@ "\n" "Опције:\n" -#: src/parse_args.c:783 +#: src/parse_args.c:806 msgid "use a helper program for password prompting" msgstr "користи програм испомоћи за упит лозинке" -#: src/parse_args.c:786 +#: src/parse_args.c:809 msgid "use specified BSD authentication type" msgstr "користи наведену врсту БСД потврде идентитета" -#: src/parse_args.c:790 +#: src/parse_args.c:813 msgid "run command in the background" msgstr "покреће наредбу у позадини" -#: src/parse_args.c:793 +#: src/parse_args.c:816 msgid "ring bell when prompting" msgstr "звони приликом постављања упита" -#: src/parse_args.c:795 +#: src/parse_args.c:818 msgid "close all file descriptors >= num" msgstr "затвара све описнике датотеке >= fd" -#: src/parse_args.c:798 +#: src/parse_args.c:821 msgid "run command with the specified BSD login class" msgstr "покреће наредбу са наведеним разредом БСД пријаве" -#: src/parse_args.c:801 +#: src/parse_args.c:824 msgid "change the working directory before running command" msgstr "мења радни директоријум пре покретања наредбе" -#: src/parse_args.c:804 +#: src/parse_args.c:827 msgid "preserve user environment when running command" msgstr "чува корисничко окружење приликом покретања наредбе" -#: src/parse_args.c:806 +#: src/parse_args.c:829 msgid "preserve specific environment variables" msgstr "чува нарочите променљиве окружења" -#: src/parse_args.c:808 +#: src/parse_args.c:831 msgid "edit files instead of running a command" msgstr "уређује датотеке уместо да изврши наредбу" -#: src/parse_args.c:811 +#: src/parse_args.c:834 msgid "run command as the specified group name or ID" msgstr "извршава наредбу као наведени назив групе или ИБ" -#: src/parse_args.c:814 +#: src/parse_args.c:837 msgid "set HOME variable to target user's home dir" msgstr "подешава променљиву ЛИЧНО у циљну корисничку личну фасциклу" -#: src/parse_args.c:817 +#: src/parse_args.c:840 msgid "display help message and exit" msgstr "приказује поруку помоћи и излази" -#: src/parse_args.c:819 +#: src/parse_args.c:842 msgid "run command on host (if supported by plugin)" msgstr "покреће наредбу на домаћину (ако је подржано прикључком)" -#: src/parse_args.c:822 +#: src/parse_args.c:845 msgid "run login shell as the target user; a command may also be specified" msgstr "покреће љуску пријаве као крајњи корисник; наредба може такође бити наведена" -#: src/parse_args.c:824 +#: src/parse_args.c:847 msgid "remove timestamp file completely" msgstr "потпуно уклања датотеку записа датума и времена" -#: src/parse_args.c:827 +#: src/parse_args.c:850 msgid "invalidate timestamp file" msgstr "чини неисправном датотеку датума и времена" -#: src/parse_args.c:830 +#: src/parse_args.c:853 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "исписује привилегије корисника или проверава посебну наредбу; користи се двапута за дуже записе" -#: src/parse_args.c:833 +#: src/parse_args.c:856 msgid "non-interactive mode, no prompts are used" msgstr "немеђудејствени режим, не користи упите" -#: src/parse_args.c:836 +#: src/parse_args.c:859 msgid "preserve group vector instead of setting to target's" msgstr "чува вектор групе уместо да подеси на циљеве" -#: src/parse_args.c:839 +#: src/parse_args.c:862 msgid "use the specified password prompt" msgstr "користи упит наведене лозинке" -#: src/parse_args.c:841 +#: src/parse_args.c:864 msgid "change the root directory before running command" msgstr "мења корени директоријум пре покретања наредбе" -#: src/parse_args.c:844 +#: src/parse_args.c:867 msgid "create SELinux security context with specified role" msgstr "ствара СЕЛинукс сигурносни контекст са наведеном улогом" -#: src/parse_args.c:847 +#: src/parse_args.c:870 msgid "read password from standard input" msgstr "чита лозинку са стандардног улаза" -#: src/parse_args.c:850 +#: src/parse_args.c:873 msgid "run shell as the target user; a command may also be specified" msgstr "покреће љуску као крајњи корисник; наредба такође може бити наведена" -#: src/parse_args.c:854 +#: src/parse_args.c:877 msgid "create SELinux security context with specified type" msgstr "ствара СЕЛинукс сигурносни контекст са наведеном улогом" -#: src/parse_args.c:857 +#: src/parse_args.c:880 msgid "terminate command after the specified time limit" msgstr "окончава наредбу након наведеног временског ограничења" -#: src/parse_args.c:860 +#: src/parse_args.c:883 msgid "in list mode, display privileges for user" msgstr "у режиму списка, приказује привилегије за корисника" -#: src/parse_args.c:863 +#: src/parse_args.c:886 msgid "run command (or edit file) as specified user name or ID" msgstr "покреће наредбу (или уређује датотеку) као наведени корисник" -#: src/parse_args.c:865 +#: src/parse_args.c:888 msgid "display version information and exit" msgstr "приказује податке о издању и излази" -#: src/parse_args.c:868 +#: src/parse_args.c:891 msgid "update user's timestamp without running a command" msgstr "освежава кориснички запис датума и времена без покретања наредбе" -#: src/parse_args.c:871 +#: src/parse_args.c:894 msgid "stop processing command line arguments" msgstr "зауставља обрађивање аргумената линије наредби" @@ -829,37 +832,42 @@ msgid "unable to set key creation context to %s" msgstr "не могу да подесим контекст стварања кључа за %s" -#: src/sesh.c:72 -msgid "requires at least one argument" -msgstr "захтева барем један аргумент" +#: src/sesh.c:114 src/sesh.c:134 +msgid "Only one of the -c or -i options may be specified" +msgstr "Само једна од опција „-c“ или „-i“ може бити наведена" -#: src/sesh.c:104 +#: src/sesh.c:129 #, c-format msgid "invalid file descriptor number: %s" msgstr "неисправан број описника датотеке: %s" -#: src/sesh.c:118 +#: src/sesh.c:167 src/sesh.c:171 src/sesh.c:175 #, c-format -msgid "unable to run %s as a login shell" -msgstr "не могу да покренем „%s“ као шкољку пријављивања" +msgid "The -%c option may not be used in edit mode." +msgstr "Опција „-%c“ се не може користити у режиму уређивања." -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 +#: src/sesh.c:184 src/sesh.c:189 +#, c-format +msgid "The -%c option may only be used in edit mode." +msgstr "Опција „-%c“ може бити коришћена само у режиму уређивања." + +#: src/sesh.c:294 src/sesh.c:394 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s: уређивање симболичких веза није допуштено" -#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 +#: src/sesh.c:297 src/sesh.c:397 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: уређивање датотека у уписивом директоријуму није допуштено" -#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sesh.c:381 src/sesh.c:402 src/sesh.c:411 src/sesh.c:419 #: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" msgstr "садржај сесије уређивања је остао у %s" -#: src/sesh.c:416 src/sudo_edit.c:94 +#: src/sesh.c:476 src/sudo_edit.c:94 msgid "unable to get group list" msgstr "не могу да добавим списак групе" @@ -929,132 +937,136 @@ msgid "plugin did not return a command to execute" msgstr "прикључак није вратио наредбу за извршавање" -#: src/sudo.c:305 +#: src/sudo.c:306 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "неочекивани судо режим 0x%x" -#: src/sudo.c:553 +#: src/sudo.c:555 #, c-format msgid "you do not exist in the %s database" msgstr "не постојите у „%s“ бази података" -#: src/sudo.c:610 +#: src/sudo.c:612 msgid "unable to determine tty" msgstr "не могу да одредим конзолу" -#: src/sudo.c:925 +#: src/sudo.c:928 msgid "The \"no new privileges\" flag is set, which prevents sudo from running as root." msgstr "Опција „no new privileges“ је постављена, што спречава „sudo“-а да ради као администратор." -#: src/sudo.c:927 +#: src/sudo.c:930 msgid "If sudo is running in a container, you may need to adjust the container configuration to disable the flag." msgstr "Ако судо ради у садржаоцу, треба да прилагодите подешавање садржаоца да искључи опцију." -#: src/sudo.c:961 +#: src/sudo.c:964 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s мора бити власништвo уида %d и треба да има подешен бит „setuid“" -#: src/sudo.c:964 +#: src/sudo.c:967 #, 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, већ %s на систему датотека са подешеном опцијом „nosuid“ или је НФС систем датотека без администраторских привилегија?" -#: src/sudo.c:970 +#: src/sudo.c:973 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "стварни уид није %d, већ сетуид администратор инсталиран судоом?" -#: src/sudo.c:986 src/tgetpass.c:331 +#: src/sudo.c:989 src/tgetpass.c:331 msgid "unable to set supplementary group IDs" msgstr "не могу да подесим додатне ИБ-ове групе" -#: src/sudo.c:993 +#: src/sudo.c:996 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "не могу да подесим ефективан гид да се покрене_као гид %u" -#: src/sudo.c:999 +#: src/sudo.c:1002 #, c-format msgid "unable to set gid to runas gid %u" msgstr "не могу да подесим гид да се покрене као гид %u" -#: src/sudo.c:1042 +#: src/sudo.c:1032 +msgid "argv not set by the security policy" +msgstr "„argv“ није постављено политиком безбедности" + +#: src/sudo.c:1036 +msgid "envp not set by the security policy" +msgstr "„envp“ није постављено политиком безбедности" + +#: src/sudo.c:1058 #, c-format msgid "unexpected child termination condition: %d" msgstr "неочекивани услов завршетка потпроцеса: %d" -#: src/sudo.c:1149 +#: src/sudo.c:1171 msgid "unable to initialize policy plugin" msgstr "не могу да започнем прикључак сигурности" -#: src/sudo.c:1211 +#: src/sudo.c:1233 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "прикључак сигурности %s не садржи метод „check_policy“" -#: src/sudo.c:1257 +#: src/sudo.c:1279 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "прикључак сигурности %s не подржава привилегије исписивања" -#: src/sudo.c:1301 +#: src/sudo.c:1323 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "прикључак сигурности %s не подржава опцију -v" -#: src/sudo.c:1339 +#: src/sudo.c:1361 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "прикључак сигурности %s не подржава опције -k/-K" -#: src/sudo.c:1468 +#: src/sudo.c:1490 #, c-format msgid "error initializing I/O plugin %s" msgstr "грешка приликом покретања У/И прикључка %s" -#: src/sudo.c:1471 +#: src/sudo.c:1493 msgid "error initializing I/O plugin" msgstr "грешка приликом покретања У/И прикључка" -#: src/sudo.c:1620 +#: src/sudo.c:1642 #, c-format msgid "error initializing audit plugin %s" msgstr "грешка покретања аудит прикључка „%s“" -#: src/sudo.c:1699 +#: src/sudo.c:1721 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s: не могу да забележим догађај грешке%s%s" -#: src/sudo.c:1735 +#: src/sudo.c:1757 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: не могу да забележим догађај прихватања%s%s" -#: src/sudo.c:1740 src/sudo.c:1778 +#: src/sudo.c:1762 src/sudo.c:1800 msgid "audit plugin error" msgstr "грешка аудит прикључка" -#: src/sudo.c:1773 +#: src/sudo.c:1795 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: не могу да забележим догађај одбијања%s%s" -#: src/sudo.c:1833 +#: src/sudo.c:1855 #, c-format msgid "error initializing approval plugin %s" msgstr "грешка покретања прикључка одобравања „%s“" -#: src/sudo.c:1903 +#: src/sudo.c:1925 msgid "command rejected by approver" msgstr "наредбу је одбацио одобравач" -#: src/sudo.c:1913 -msgid "approval plugin error" -msgstr "грешка прикључка одобравања" - #: src/sudo_edit.c:113 msgid "no writable temporary directory found" msgstr "нисам нашао уписиви привремени директоријум" @@ -1064,7 +1076,7 @@ msgid "%s left unmodified" msgstr "%s је остао неизмењен" -#: src/sudo_edit.c:304 src/sudo_edit.c:571 +#: src/sudo_edit.c:304 src/sudo_edit.c:569 #, c-format msgid "%s unchanged" msgstr "%s је непромењен" @@ -1077,37 +1089,41 @@ msgid "sesh: unable to create temporary files" msgstr "sesh: не могу да направим привремене датотеке" -#: src/sudo_edit.c:485 src/sudo_edit.c:609 +#: src/sudo_edit.c:485 src/sudo_edit.c:604 msgid "sesh: killed by a signal" msgstr "sesh: убијено сигналом" -#: src/sudo_edit.c:487 src/sudo_edit.c:612 +#: src/sudo_edit.c:487 src/sudo_edit.c:607 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: непозната грешка „%d“" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:597 msgid "unable to copy temporary files back to their original location" msgstr "не могу да умножим привремене датотеке назад на њихова првобитна места" -#: src/sudo_edit.c:606 +#: src/sudo_edit.c:601 msgid "unable to copy some of the temporary files back to their original location" msgstr "не могу да умножим неке од привремених датотека назад на њихова првобитна места" -#: src/sudo_edit.c:649 +#: src/sudo_edit.c:646 #, c-format msgid "unable to change uid to root (%u)" msgstr "не могу да променим уид у администратора (%u)" -#: src/sudo_edit.c:670 +#: src/sudo_edit.c:660 +msgid "plugin error: invalid file list for sudoedit" +msgstr "грешка прикључка: неисправан списак датотеке за уређивање судоа" + +#: src/sudo_edit.c:681 msgid "plugin error: missing file list for sudoedit" msgstr "грешка прикључка: недостаје датотеа списка за уређивање судоа" -#: src/sudo_edit.c:713 src/sudo_edit.c:727 +#: src/sudo_edit.c:724 src/sudo_edit.c:739 msgid "unable to read the clock" msgstr "не могу да прочитам сат" -#: src/sudo_intercept_common.c:341 +#: src/sudo_intercept_common.c:365 msgid "intercept port not set" msgstr "прикључник пресретања није постављен" @@ -1158,6 +1174,24 @@ msgid "unable to restore stdin" msgstr "не могу да повратим стандардни улаз" +#~ msgid "insufficient space for execve arguments" +#~ msgstr "недовољно простора за „execve“ аргументе" + +#~ msgid "unable to read execve %s for process %d" +#~ msgstr "не могу да прочитам „execve %s“ за процес %d" + +#~ msgid "%s must be owned by uid %d" +#~ msgstr "%s мора бити у власништву уида %d" + +#~ msgid "%s must be only be writable by owner" +#~ msgstr "%s мора бити уписив само од стране власника" + +#~ msgid "requires at least one argument" +#~ msgstr "захтева барем један аргумент" + +#~ msgid "unable to run %s as a login shell" +#~ msgstr "не могу да покренем „%s“ као шкољку пријављивања" + #~ msgid "unable to dup intercept fd" #~ msgstr "не могу да дуп пресретнем описника датотека" diff -Nru sudo-1.9.13p3/po/sudo.pot sudo-1.9.14p2/po/sudo.pot --- sudo-1.9.13p3/po/sudo.pot 2023-02-16 18:46:30.000000000 +0000 +++ sudo-1.9.14p2/po/sudo.pot 2023-07-15 15:37:22.000000000 +0000 @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.13\n" +"Project-Id-Version: sudo 1.9.14\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -31,73 +31,76 @@ #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 #: lib/util/json.c:55 lib/util/json.c:197 lib/util/sudo_conf.c:215 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:80 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:205 src/exec_monitor.c:460 -#: src/exec_monitor.c:466 src/exec_monitor.c:474 src/exec_monitor.c:482 -#: src/exec_monitor.c:489 src/exec_monitor.c:496 src/exec_monitor.c:503 -#: src/exec_monitor.c:510 src/exec_monitor.c:517 src/exec_monitor.c:524 -#: src/exec_monitor.c:531 src/exec_nopty.c:231 src/exec_nopty.c:240 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:78 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:171 src/exec_monitor.c:418 +#: src/exec_monitor.c:424 src/exec_monitor.c:432 src/exec_monitor.c:440 +#: src/exec_monitor.c:447 src/exec_monitor.c:454 src/exec_monitor.c:461 +#: src/exec_monitor.c:468 src/exec_monitor.c:475 src/exec_monitor.c:482 +#: src/exec_monitor.c:489 src/exec_nopty.c:231 src/exec_nopty.c:240 #: 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:318 src/exec_nopty.c:326 -#: src/exec_nopty.c:736 src/exec_preload.c:343 src/exec_ptrace.c:475 -#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1095 -#: src/exec_ptrace.c:1270 src/exec_ptrace.c:1612 src/exec_ptrace.c:1639 -#: src/exec_pty.c:511 src/exec_pty.c:692 src/exec_pty.c:882 src/exec_pty.c:891 -#: src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 src/exec_pty.c:919 -#: src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 src/exec_pty.c:947 -#: src/exec_pty.c:954 src/exec_pty.c:962 src/load_plugins.c:98 -#: src/load_plugins.c:123 src/load_plugins.c:159 src/load_plugins.c:392 -#: src/load_plugins.c:398 src/parse_args.c:172 src/parse_args.c:193 -#: src/parse_args.c:267 src/parse_args.c:623 src/parse_args.c:645 -#: src/parse_args.c:670 src/preserve_fds.c:46 src/preserve_fds.c:131 -#: src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 src/selinux.c:489 -#: src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 src/sesh.c:246 -#: src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:641 src/sudo.c:706 -#: src/sudo.c:716 src/sudo.c:743 src/sudo.c:766 src/sudo.c:775 src/sudo.c:784 -#: src/sudo.c:801 src/sudo.c:842 src/sudo.c:851 src/sudo.c:861 src/sudo.c:894 -#: src/sudo.c:1122 src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 -#: src/sudo.c:1832 src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 -#: src/sudo_edit.c:429 src/sudo_edit.c:438 src/sudo_edit.c:538 -#: src/sudo_edit.c:545 src/sudo_edit.c:688 src/sudo_edit.c:708 -#: src/sudo_intercept_common.c:115 src/sudo_intercept_common.c:340 +#: src/exec_nopty.c:744 src/exec_preload.c:343 src/exec_ptrace.c:475 +#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1096 +#: src/exec_ptrace.c:1271 src/exec_ptrace.c:1624 src/exec_ptrace.c:1651 +#: src/exec_ptrace.c:1841 src/exec_pty.c:581 src/exec_pty.c:765 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:193 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 +#: src/sesh.c:246 src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:644 +#: src/sudo.c:709 src/sudo.c:719 src/sudo.c:746 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:787 src/sudo.c:805 src/sudo.c:846 src/sudo.c:855 src/sudo.c:865 +#: src/sudo.c:898 src/sudo.c:1127 src/sudo.c:1148 src/sudo.c:1441 +#: src/sudo.c:1610 src/sudo.c:1837 src/sudo.c:2171 src/sudo_edit.c:89 +#: src/sudo_edit.c:149 src/sudo_edit.c:430 src/sudo_edit.c:439 +#: src/sudo_edit.c:540 src/sudo_edit.c:547 src/sudo_edit.c:692 +#: src/sudo_edit.c:712 src/sudo_intercept_common.c:115 +#: src/sudo_intercept_common.c:340 #, c-format msgid "%s: %s" msgstr "" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:56 #: lib/util/json.c:198 lib/util/regex.c:173 lib/util/sudo_conf.c:216 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:81 src/exec_intercept.c:111 src/exec_intercept.c:344 -#: src/exec_intercept.c:518 src/exec_intercept.c:582 src/exec_intercept.c:706 -#: src/exec_intercept.c:830 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:460 src/exec_monitor.c:466 -#: src/exec_monitor.c:474 src/exec_monitor.c:482 src/exec_monitor.c:489 -#: src/exec_monitor.c:496 src/exec_monitor.c:503 src/exec_monitor.c:510 -#: src/exec_monitor.c:517 src/exec_monitor.c:524 src/exec_monitor.c:531 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:79 src/exec_intercept.c:111 src/exec_intercept.c:350 +#: src/exec_intercept.c:525 src/exec_intercept.c:589 src/exec_intercept.c:713 +#: src/exec_intercept.c:837 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:418 src/exec_monitor.c:424 +#: src/exec_monitor.c:432 src/exec_monitor.c:440 src/exec_monitor.c:447 +#: src/exec_monitor.c:454 src/exec_monitor.c:461 src/exec_monitor.c:468 +#: src/exec_monitor.c:475 src/exec_monitor.c:482 src/exec_monitor.c:489 #: src/exec_nopty.c:231 src/exec_nopty.c:240 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:318 src/exec_nopty.c:326 src/exec_preload.c:343 #: src/exec_ptrace.c:475 src/exec_ptrace.c:768 src/exec_ptrace.c:983 -#: src/exec_ptrace.c:1639 src/exec_pty.c:511 src/exec_pty.c:882 -#: src/exec_pty.c:891 src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 -#: src/exec_pty.c:919 src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 -#: src/exec_pty.c:947 src/exec_pty.c:954 src/exec_pty.c:962 -#: src/load_plugins.c:98 src/load_plugins.c:123 src/load_plugins.c:159 -#: src/load_plugins.c:392 src/load_plugins.c:398 src/parse_args.c:172 -#: src/parse_args.c:194 src/parse_args.c:267 src/parse_args.c:623 -#: src/parse_args.c:645 src/parse_args.c:670 src/preserve_fds.c:46 +#: src/exec_ptrace.c:1651 src/exec_ptrace.c:1842 src/exec_pty.c:581 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:194 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 #: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 #: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:471 -#: src/sudo.c:230 src/sudo.c:641 src/sudo.c:894 src/sudo.c:1122 src/sudo.c:1143 -#: src/sudo.c:1436 src/sudo.c:1605 src/sudo.c:1832 src/sudo.c:2166 -#: src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 -#: src/sudo_edit.c:438 src/sudo_edit.c:538 src/sudo_edit.c:545 -#: src/sudo_edit.c:688 src/sudo_edit.c:708 src/sudo_intercept_common.c:115 +#: src/sudo.c:228 src/sudo.c:644 src/sudo.c:898 src/sudo.c:1127 src/sudo.c:1148 +#: src/sudo.c:1441 src/sudo.c:1610 src/sudo.c:1837 src/sudo.c:2171 +#: src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:430 +#: src/sudo_edit.c:439 src/sudo_edit.c:540 src/sudo_edit.c:547 +#: src/sudo_edit.c:692 src/sudo_edit.c:712 src/sudo_intercept_common.c:115 #: src/sudo_intercept_common.c:340 msgid "unable to allocate memory" msgstr "" @@ -112,9 +115,9 @@ msgid "%.*s exists but is not a directory (0%o)" msgstr "" -#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:666 -#: lib/util/sudo_conf.c:696 lib/util/sudo_conf.c:703 src/selinux.c:235 -#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:494 src/sudo_edit.c:557 +#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:664 +#: lib/util/sudo_conf.c:683 lib/util/sudo_conf.c:710 src/selinux.c:235 +#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:495 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "" @@ -170,22 +173,22 @@ msgid "invalid max groups \"%s\" in %s, line %u" msgstr "" -#: lib/util/sudo_conf.c:669 +#: lib/util/sudo_conf.c:686 #, c-format msgid "%s is not a regular file" msgstr "" -#: lib/util/sudo_conf.c:672 src/copy_file.c:164 +#: lib/util/sudo_conf.c:689 src/copy_file.c:164 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:693 #, c-format msgid "%s is world writable" msgstr "" -#: lib/util/sudo_conf.c:679 +#: lib/util/sudo_conf.c:696 #, c-format msgid "%s is group writable" msgstr "" @@ -234,7 +237,7 @@ msgid "%s: bad file mode: 0%o" msgstr "" -#: src/edit_open.c:331 +#: src/edit_open.c:333 msgid "unable to restore current working directory" msgstr "" @@ -279,18 +282,18 @@ msgid "starting from %s" msgstr "" -#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:569 src/exec_monitor.c:571 -#: src/exec_pty.c:225 src/exec_pty.c:1026 src/exec_pty.c:1028 src/signal.c:144 -#: src/signal.c:151 src/signal.c:165 src/suspend_nopty.c:93 +#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:552 src/exec_monitor.c:554 +#: src/exec_pty.c:1122 src/exec_pty.c:1124 src/signal.c:144 src/signal.c:151 +#: src/signal.c:165 src/suspend_parent.c:143 #, c-format msgid "unable to set handler for signal %d" msgstr "" -#: src/exec.c:422 +#: src/exec.c:424 msgid "intercept mode is not supported with SELinux RBAC on this system" msgstr "" -#: src/exec.c:427 +#: src/exec.c:429 msgid "unable to log sub-commands with SELinux RBAC on this system" msgstr "" @@ -298,239 +301,257 @@ msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "" -#: src/exec_intercept.c:70 src/exec_iolog.c:165 src/exec_iolog.c:175 -#: src/exec_iolog.c:220 src/exec_iolog.c:227 src/exec_iolog.c:254 -#: src/exec_monitor.c:468 src/exec_monitor.c:476 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_monitor.c:533 src/exec_nopty.c:233 src/exec_nopty.c:242 +#: src/exec_intercept.c:70 src/exec_iolog.c:163 src/exec_iolog.c:173 +#: src/exec_iolog.c:218 src/exec_iolog.c:225 src/exec_iolog.c:252 +#: src/exec_monitor.c:426 src/exec_monitor.c:434 src/exec_monitor.c:442 +#: src/exec_monitor.c:449 src/exec_monitor.c:456 src/exec_monitor.c:463 +#: src/exec_monitor.c:470 src/exec_monitor.c:477 src/exec_monitor.c:484 +#: src/exec_monitor.c:491 src/exec_nopty.c:233 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:305 #: src/exec_nopty.c:312 src/exec_nopty.c:320 src/exec_nopty.c:328 -#: src/exec_nopty.c:387 src/exec_nopty.c:453 src/exec_pty.c:360 -#: src/exec_pty.c:462 src/exec_pty.c:517 src/exec_pty.c:884 src/exec_pty.c:893 -#: src/exec_pty.c:900 src/exec_pty.c:907 src/exec_pty.c:914 src/exec_pty.c:921 -#: src/exec_pty.c:928 src/exec_pty.c:935 src/exec_pty.c:942 src/exec_pty.c:949 -#: src/exec_pty.c:956 +#: src/exec_nopty.c:387 src/exec_nopty.c:457 src/exec_pty.c:432 +#: src/exec_pty.c:537 src/exec_pty.c:587 src/exec_pty.c:965 src/exec_pty.c:974 +#: src/exec_pty.c:981 src/exec_pty.c:988 src/exec_pty.c:995 src/exec_pty.c:1002 +#: src/exec_pty.c:1009 src/exec_pty.c:1016 src/exec_pty.c:1023 +#: src/exec_pty.c:1030 src/exec_pty.c:1037 src/exec_pty.c:1044 msgid "unable to add event to queue" msgstr "" -#: src/exec_intercept.c:317 src/sudo.c:1028 +#: src/exec_intercept.c:323 src/sudo.c:1033 msgid "command not set by the security policy" msgstr "" -#: src/exec_intercept.c:395 src/exec_intercept.c:435 src/sudo.c:1248 -#: src/sudo.c:1293 src/sudo.c:1337 +#: src/exec_intercept.c:401 src/exec_intercept.c:441 src/sudo.c:1253 +#: src/sudo.c:1298 src/sudo.c:1342 msgid "command rejected by policy" msgstr "" -#: src/exec_intercept.c:505 src/sudo.c:1935 +#: src/exec_intercept.c:512 src/sudo.c:1940 msgid "approval plugin error" msgstr "" -#: src/exec_intercept.c:530 src/sudo.c:1253 src/sudo.c:1298 src/sudo.c:1342 -#: src/sudo.c:1416 +#: src/exec_intercept.c:537 src/sudo.c:1258 src/sudo.c:1303 src/sudo.c:1347 +#: src/sudo.c:1421 msgid "policy plugin error" msgstr "" -#: src/exec_intercept.c:559 +#: src/exec_intercept.c:566 msgid "invalid PolicyCheckRequest" msgstr "" -#: src/exec_intercept.c:702 +#: src/exec_intercept.c:709 #, c-format msgid "client request too large: %zu" msgstr "" -#: src/exec_intercept.c:744 +#: src/exec_intercept.c:751 #, c-format msgid "unable to unpack %s size %zu" msgstr "" -#: src/exec_intercept.c:792 +#: src/exec_intercept.c:799 #, c-format msgid "unexpected type_case value %d in %s from %s" msgstr "" -#: src/exec_intercept.c:818 +#: src/exec_intercept.c:825 #, c-format msgid "server message too large: %zu" msgstr "" -#: src/exec_iolog.c:323 src/exec_iolog.c:363 src/exec_iolog.c:403 -#: src/exec_iolog.c:454 src/exec_iolog.c:505 +#: src/exec_iolog.c:321 src/exec_iolog.c:361 src/exec_iolog.c:401 +#: src/exec_iolog.c:452 src/exec_iolog.c:503 msgid "I/O plugin error" msgstr "" -#: src/exec_iolog.c:327 src/exec_iolog.c:367 src/exec_iolog.c:407 -#: src/exec_iolog.c:458 src/exec_iolog.c:509 +#: src/exec_iolog.c:325 src/exec_iolog.c:365 src/exec_iolog.c:405 +#: src/exec_iolog.c:456 src/exec_iolog.c:507 msgid "command rejected by I/O plugin" msgstr "" -#: src/exec_iolog.c:556 +#: src/exec_iolog.c:555 msgid "error logging suspend" msgstr "" -#: src/exec_iolog.c:591 +#: src/exec_iolog.c:590 msgid "error changing window size" msgstr "" -#: src/exec_monitor.c:362 +#: src/exec_monitor.c:328 msgid "error reading from socketpair" msgstr "" -#: src/exec_monitor.c:379 +#: src/exec_monitor.c:340 #, c-format msgid "unexpected reply type on backchannel: %d" msgstr "" -#: src/exec_monitor.c:587 +#: src/exec_monitor.c:566 msgid "unable to set controlling tty" msgstr "" -#: src/exec_monitor.c:595 src/exec_nopty.c:498 src/exec_nopty.c:508 -#: src/exec_nopty.c:518 src/exec_nopty.c:552 src/exec_pty.c:1097 -#: src/exec_pty.c:1118 src/exec_pty.c:1138 src/tgetpass.c:305 +#: src/exec_monitor.c:574 src/exec_nopty.c:504 src/exec_nopty.c:514 +#: src/exec_nopty.c:524 src/exec_nopty.c:560 src/exec_pty.c:1195 +#: src/exec_pty.c:1222 src/exec_pty.c:1242 src/exec_pty.c:1262 +#: src/tgetpass.c:306 msgid "unable to create pipe" msgstr "" -#: src/exec_monitor.c:605 +#: src/exec_monitor.c:584 msgid "unable to receive message from parent" msgstr "" -#: src/exec_monitor.c:621 src/exec_nopty.c:595 src/exec_pty.c:1176 -#: src/sudo_edit.c:361 src/tgetpass.c:309 +#: src/exec_monitor.c:600 src/exec_nopty.c:603 src/exec_pty.c:1303 +#: src/sudo_edit.c:361 src/tgetpass.c:310 msgid "unable to fork" msgstr "" -#: src/exec_monitor.c:625 src/exec_monitor.c:723 src/exec_nopty.c:700 +#: src/exec_monitor.c:604 src/exec_monitor.c:700 src/exec_nopty.c:708 msgid "unable to restore tty label" msgstr "" -#: src/exec_monitor.c:638 src/sesh.c:217 src/sudo.c:1199 +#: src/exec_monitor.c:615 src/sesh.c:217 src/sudo.c:1204 #, c-format msgid "unable to execute %s" msgstr "" -#: src/exec_nopty.c:546 src/exec_pty.c:1035 +#: src/exec_nopty.c:554 src/exec_pty.c:1131 msgid "policy plugin failed session initialization" msgstr "" -#: src/exec_nopty.c:561 src/exec_pty.c:1004 src/exec_pty.c:1013 +#: src/exec_nopty.c:569 src/exec_pty.c:1100 src/exec_pty.c:1109 msgid "unable to create sockets" msgstr "" -#: src/exec_nopty.c:688 src/exec_pty.c:1274 +#: src/exec_nopty.c:696 src/exec_pty.c:1406 msgid "error in event loop" msgstr "" #: src/exec_preload.c:167 src/net_ifs.c:206 src/net_ifs.c:372 src/net_ifs.c:433 -#: src/net_ifs.c:620 src/net_ifs.c:851 src/sudo.c:488 src/sudo_edit.c:398 +#: src/net_ifs.c:620 src/net_ifs.c:852 src/sudo.c:488 src/sudo_edit.c:398 #: src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "" -#: src/exec_ptrace.c:1079 src/exec_ptrace.c:1104 src/exec_ptrace.c:1900 +#: src/exec_ptrace.c:1080 src/exec_ptrace.c:1105 src/exec_ptrace.c:1925 #, c-format msgid "unable to set registers for process %d" msgstr "" -#: src/exec_ptrace.c:1099 src/exec_ptrace.c:1274 src/exec_ptrace.c:1616 +#: src/exec_ptrace.c:1100 src/exec_ptrace.c:1275 src/exec_ptrace.c:1628 #, c-format msgid "process %d exited unexpectedly" msgstr "" -#: src/exec_ptrace.c:1208 +#: src/exec_ptrace.c:1209 msgid "unable to set seccomp filter" msgstr "" -#: src/exec_ptrace.c:1405 +#: src/exec_ptrace.c:1406 #, c-format msgid "interpreter argument , expected \"%s\", got \"%s\"" msgstr "" -#: src/exec_ptrace.c:1504 +#: src/exec_ptrace.c:1505 #, c-format msgid "pathname mismatch, expected \"%s\", got \"%s\"" msgstr "" -#: src/exec_ptrace.c:1513 src/exec_ptrace.c:1520 src/exec_ptrace.c:1533 -#: src/exec_ptrace.c:1541 src/exec_ptrace.c:1547 src/exec_ptrace.c:1553 +#: src/exec_ptrace.c:1514 src/exec_ptrace.c:1521 src/exec_ptrace.c:1545 +#: src/exec_ptrace.c:1553 src/exec_ptrace.c:1559 src/exec_ptrace.c:1565 #, c-format msgid "%s[%d] mismatch, expected \"%s\", got \"%s\"" msgstr "" -#: src/exec_ptrace.c:1620 +#: src/exec_ptrace.c:1632 #, c-format msgid "process %d unexpected status 0x%x" msgstr "" -#: src/exec_ptrace.c:1711 +#: src/exec_ptrace.c:1723 #, c-format msgid "unable to get event message for process %d" msgstr "" -#: src/exec_ptrace.c:1718 +#: src/exec_ptrace.c:1730 #, c-format msgid "unable to get registers for process %d" msgstr "" -#: src/exec_pty.c:103 +#: src/exec_pty.c:84 msgid "unable to allocate pty" msgstr "" -#: src/exec_pty.c:268 src/signal.c:101 src/suspend_nopty.c:99 +#: src/exec_pty.c:131 src/exec_pty.c:284 src/tgetpass.c:251 +msgid "unable to restore terminal settings" +msgstr "" + +#: src/exec_pty.c:243 +msgid "unable to set handler for SIGCONT" +msgstr "" + +#: src/exec_pty.c:293 #, c-format -msgid "unable to restore handler for signal %d" +msgid "unable to set handler for SIG%s" +msgstr "" + +#: src/exec_pty.c:317 +#, c-format +msgid "unable to restore handler for SIG%s" msgstr "" -#: src/exec_pty.c:1222 +#: src/exec_pty.c:345 +msgid "unable to restore handler for SIGCONT" +msgstr "" + +#: src/exec_pty.c:1353 msgid "unable to send message to monitor process" msgstr "" -#: src/load_plugins.c:73 src/load_plugins.c:220 src/load_plugins.c:230 -#: src/load_plugins.c:240 src/load_plugins.c:287 +#: src/load_plugins.c:75 src/load_plugins.c:222 src/load_plugins.c:232 +#: src/load_plugins.c:242 src/load_plugins.c:289 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "" -#: src/load_plugins.c:184 src/load_plugins.c:255 +#: src/load_plugins.c:186 src/load_plugins.c:257 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "" -#: src/load_plugins.c:222 +#: src/load_plugins.c:224 #, c-format msgid "unable to load %s: %s" msgstr "" -#: src/load_plugins.c:232 +#: src/load_plugins.c:234 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "" -#: src/load_plugins.c:242 +#: src/load_plugins.c:244 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "" -#: src/load_plugins.c:260 +#: src/load_plugins.c:262 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "" -#: src/load_plugins.c:263 +#: src/load_plugins.c:265 msgid "only a single policy plugin may be specified" msgstr "" -#: src/load_plugins.c:289 +#: src/load_plugins.c:291 #, c-format msgid "unknown plugin type %d found in %s" msgstr "" -#: src/load_plugins.c:472 +#: src/load_plugins.c:474 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "" @@ -540,194 +561,194 @@ msgid "invalid environment variable name: %s" msgstr "" -#: src/parse_args.c:317 +#: src/parse_args.c:319 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "" -#: src/parse_args.c:554 +#: src/parse_args.c:556 msgid "you may not specify both the -i and -s options" msgstr "" -#: src/parse_args.c:559 +#: src/parse_args.c:561 msgid "you may not specify both the -i and -E options" msgstr "" -#: src/parse_args.c:569 +#: src/parse_args.c:571 msgid "the -E option is not valid in edit mode" msgstr "" -#: src/parse_args.c:572 +#: src/parse_args.c:574 msgid "you may not specify environment variables in edit mode" msgstr "" -#: src/parse_args.c:582 +#: src/parse_args.c:584 msgid "the -U option may only be used with the -l option" msgstr "" -#: src/parse_args.c:586 +#: src/parse_args.c:588 msgid "the -A and -S options may not be used together" msgstr "" -#: src/parse_args.c:684 +#: src/parse_args.c:686 msgid "sudoedit is not supported on this platform" msgstr "" -#: src/parse_args.c:767 +#: src/parse_args.c:744 msgid "" "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "" -#: src/parse_args.c:780 +#: src/parse_args.c:757 msgid "Only one of the -K, -k or -N options may be specified" msgstr "" -#: src/parse_args.c:796 +#: src/parse_args.c:778 #, c-format msgid "" "%s - edit files as another user\n" "\n" msgstr "" -#: src/parse_args.c:798 +#: src/parse_args.c:780 #, c-format msgid "" "%s - execute a command as another user\n" "\n" msgstr "" -#: src/parse_args.c:804 +#: src/parse_args.c:785 msgid "" "\n" "Options:\n" msgstr "" -#: src/parse_args.c:806 +#: src/parse_args.c:787 msgid "use a helper program for password prompting" msgstr "" -#: src/parse_args.c:809 +#: src/parse_args.c:790 msgid "use specified BSD authentication type" msgstr "" -#: src/parse_args.c:813 +#: src/parse_args.c:794 msgid "run command in the background" msgstr "" -#: src/parse_args.c:816 +#: src/parse_args.c:797 msgid "ring bell when prompting" msgstr "" -#: src/parse_args.c:818 +#: src/parse_args.c:799 msgid "close all file descriptors >= num" msgstr "" -#: src/parse_args.c:821 +#: src/parse_args.c:802 msgid "run command with the specified BSD login class" msgstr "" -#: src/parse_args.c:824 +#: src/parse_args.c:805 msgid "change the working directory before running command" msgstr "" -#: src/parse_args.c:827 +#: src/parse_args.c:808 msgid "preserve user environment when running command" msgstr "" -#: src/parse_args.c:829 +#: src/parse_args.c:810 msgid "preserve specific environment variables" msgstr "" -#: src/parse_args.c:831 +#: src/parse_args.c:812 msgid "edit files instead of running a command" msgstr "" -#: src/parse_args.c:834 +#: src/parse_args.c:815 msgid "run command as the specified group name or ID" msgstr "" -#: src/parse_args.c:837 +#: src/parse_args.c:818 msgid "set HOME variable to target user's home dir" msgstr "" -#: src/parse_args.c:840 +#: src/parse_args.c:821 msgid "display help message and exit" msgstr "" -#: src/parse_args.c:842 +#: src/parse_args.c:823 msgid "run command on host (if supported by plugin)" msgstr "" -#: src/parse_args.c:845 +#: src/parse_args.c:826 msgid "run login shell as the target user; a command may also be specified" msgstr "" -#: src/parse_args.c:847 +#: src/parse_args.c:828 msgid "remove timestamp file completely" msgstr "" -#: src/parse_args.c:850 +#: src/parse_args.c:831 msgid "invalidate timestamp file" msgstr "" -#: src/parse_args.c:853 +#: src/parse_args.c:834 msgid "" "list user's privileges or check a specific command; use twice for longer " "format" msgstr "" -#: src/parse_args.c:856 +#: src/parse_args.c:837 msgid "non-interactive mode, no prompts are used" msgstr "" -#: src/parse_args.c:859 +#: src/parse_args.c:840 msgid "preserve group vector instead of setting to target's" msgstr "" -#: src/parse_args.c:862 +#: src/parse_args.c:843 msgid "use the specified password prompt" msgstr "" -#: src/parse_args.c:864 +#: src/parse_args.c:845 msgid "change the root directory before running command" msgstr "" -#: src/parse_args.c:867 +#: src/parse_args.c:848 msgid "create SELinux security context with specified role" msgstr "" -#: src/parse_args.c:870 +#: src/parse_args.c:851 msgid "read password from standard input" msgstr "" -#: src/parse_args.c:873 +#: src/parse_args.c:854 msgid "run shell as the target user; a command may also be specified" msgstr "" -#: src/parse_args.c:877 +#: src/parse_args.c:858 msgid "create SELinux security context with specified type" msgstr "" -#: src/parse_args.c:880 +#: src/parse_args.c:861 msgid "terminate command after the specified time limit" msgstr "" -#: src/parse_args.c:883 +#: src/parse_args.c:864 msgid "in list mode, display privileges for user" msgstr "" -#: src/parse_args.c:886 +#: src/parse_args.c:867 msgid "run command (or edit file) as specified user name or ID" msgstr "" -#: src/parse_args.c:888 +#: src/parse_args.c:869 msgid "display version information and exit" msgstr "" -#: src/parse_args.c:891 +#: src/parse_args.c:872 msgid "update user's timestamp without running a command" msgstr "" -#: src/parse_args.c:894 +#: src/parse_args.c:875 msgid "stop processing command line arguments" msgstr "" @@ -871,6 +892,11 @@ msgid "unable to save handler for signal %d" msgstr "" +#: src/signal.c:101 src/suspend_parent.c:149 +#, c-format +msgid "unable to restore handler for signal %d" +msgstr "" + #: src/solaris.c:72 msgid "resource control limit has been reached" msgstr "" @@ -914,21 +940,21 @@ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "" -#: src/sudo.c:216 +#: src/sudo.c:214 #, c-format msgid "Sudo version %s\n" msgstr "" -#: src/sudo.c:218 +#: src/sudo.c:216 #, c-format msgid "Configure options: %s\n" msgstr "" -#: src/sudo.c:226 +#: src/sudo.c:224 msgid "fatal error, unable to load plugins" msgstr "" -#: src/sudo.c:272 +#: src/sudo.c:270 msgid "plugin did not return a command to execute" msgstr "" @@ -937,134 +963,134 @@ msgid "unexpected sudo mode 0x%x" msgstr "" -#: src/sudo.c:555 +#: src/sudo.c:559 #, c-format msgid "you do not exist in the %s database" msgstr "" -#: src/sudo.c:612 +#: src/sudo.c:616 msgid "unable to determine tty" msgstr "" -#: src/sudo.c:928 +#: src/sudo.c:932 msgid "" "The \"no new privileges\" flag is set, which prevents sudo from running as " "root." msgstr "" -#: src/sudo.c:930 +#: src/sudo.c:934 msgid "" "If sudo is running in a container, you may need to adjust the container " "configuration to disable the flag." msgstr "" -#: src/sudo.c:964 +#: src/sudo.c:968 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "" -#: src/sudo.c:967 +#: src/sudo.c:971 #, 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:973 +#: src/sudo.c:977 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "" -#: src/sudo.c:989 src/tgetpass.c:331 +#: src/sudo.c:993 src/tgetpass.c:332 msgid "unable to set supplementary group IDs" msgstr "" -#: src/sudo.c:996 +#: src/sudo.c:1000 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "" -#: src/sudo.c:1002 +#: src/sudo.c:1006 #, c-format msgid "unable to set gid to runas gid %u" msgstr "" -#: src/sudo.c:1032 +#: src/sudo.c:1037 msgid "argv not set by the security policy" msgstr "" -#: src/sudo.c:1036 +#: src/sudo.c:1041 msgid "envp not set by the security policy" msgstr "" -#: src/sudo.c:1058 +#: src/sudo.c:1063 #, c-format msgid "unexpected child termination condition: %d" msgstr "" -#: src/sudo.c:1171 +#: src/sudo.c:1176 msgid "unable to initialize policy plugin" msgstr "" -#: src/sudo.c:1233 +#: src/sudo.c:1238 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "" -#: src/sudo.c:1279 +#: src/sudo.c:1284 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "" -#: src/sudo.c:1323 +#: src/sudo.c:1328 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "" -#: src/sudo.c:1361 +#: src/sudo.c:1366 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "" -#: src/sudo.c:1490 +#: src/sudo.c:1495 #, c-format msgid "error initializing I/O plugin %s" msgstr "" -#: src/sudo.c:1493 +#: src/sudo.c:1498 msgid "error initializing I/O plugin" msgstr "" -#: src/sudo.c:1642 +#: src/sudo.c:1647 #, c-format msgid "error initializing audit plugin %s" msgstr "" -#: src/sudo.c:1721 +#: src/sudo.c:1726 #, c-format msgid "%s: unable to log error event%s%s" msgstr "" -#: src/sudo.c:1757 +#: src/sudo.c:1762 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "" -#: src/sudo.c:1762 src/sudo.c:1800 +#: src/sudo.c:1767 src/sudo.c:1805 msgid "audit plugin error" msgstr "" -#: src/sudo.c:1795 +#: src/sudo.c:1800 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "" -#: src/sudo.c:1855 +#: src/sudo.c:1860 #, c-format msgid "error initializing approval plugin %s" msgstr "" -#: src/sudo.c:1925 +#: src/sudo.c:1930 msgid "command rejected by approver" msgstr "" @@ -1072,56 +1098,56 @@ msgid "no writable temporary directory found" msgstr "" -#: src/sudo_edit.c:291 +#: src/sudo_edit.c:292 #, c-format msgid "%s left unmodified" msgstr "" -#: src/sudo_edit.c:304 src/sudo_edit.c:569 +#: src/sudo_edit.c:305 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "" -#: src/sudo_edit.c:481 +#: src/sudo_edit.c:482 msgid "sesh: internal error: odd number of paths" msgstr "" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:484 msgid "sesh: unable to create temporary files" msgstr "" -#: src/sudo_edit.c:485 src/sudo_edit.c:604 +#: src/sudo_edit.c:486 src/sudo_edit.c:606 msgid "sesh: killed by a signal" msgstr "" -#: src/sudo_edit.c:487 src/sudo_edit.c:607 +#: src/sudo_edit.c:488 src/sudo_edit.c:609 #, c-format msgid "sesh: unknown error %d" msgstr "" -#: src/sudo_edit.c:597 +#: src/sudo_edit.c:599 msgid "unable to copy temporary files back to their original location" msgstr "" -#: src/sudo_edit.c:601 +#: src/sudo_edit.c:603 msgid "" "unable to copy some of the temporary files back to their original location" msgstr "" -#: src/sudo_edit.c:646 +#: src/sudo_edit.c:650 #, c-format msgid "unable to change uid to root (%u)" msgstr "" -#: src/sudo_edit.c:660 +#: src/sudo_edit.c:664 msgid "plugin error: invalid file list for sudoedit" msgstr "" -#: src/sudo_edit.c:681 +#: src/sudo_edit.c:685 msgid "plugin error: missing file list for sudoedit" msgstr "" -#: src/sudo_edit.c:724 src/sudo_edit.c:739 +#: src/sudo_edit.c:728 src/sudo_edit.c:743 msgid "unable to read the clock" msgstr "" @@ -1151,29 +1177,29 @@ msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "" -#: src/tgetpass.c:326 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" msgstr "" -#: src/tgetpass.c:336 +#: src/tgetpass.c:337 #, c-format msgid "unable to set uid to %u" msgstr "" -#: src/tgetpass.c:341 +#: src/tgetpass.c:342 #, c-format msgid "unable to run %s" msgstr "" -#: src/utmp.c:288 +#: src/utmp.c:283 msgid "unable to save stdin" msgstr "" -#: src/utmp.c:290 +#: src/utmp.c:285 msgid "unable to dup2 stdin" msgstr "" -#: src/utmp.c:293 +#: src/utmp.c:288 msgid "unable to restore stdin" msgstr "" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/po/uk.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/po/uk.mo differ diff -Nru sudo-1.9.13p3/po/uk.po sudo-1.9.14p2/po/uk.po --- sudo-1.9.13p3/po/uk.po 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/po/uk.po 2023-07-15 15:37:22.000000000 +0000 @@ -4,10 +4,10 @@ # Yuri Chornoivan , 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023. msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.13b2\n" +"Project-Id-Version: sudo 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2023-01-24 13:11-0700\n" -"PO-Revision-Date: 2023-01-26 20:58+0200\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-08 19:29+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -33,73 +33,76 @@ #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76 #: lib/util/json.c:55 lib/util/json.c:197 lib/util/sudo_conf.c:215 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:80 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:205 src/exec_monitor.c:460 -#: src/exec_monitor.c:466 src/exec_monitor.c:474 src/exec_monitor.c:482 -#: src/exec_monitor.c:489 src/exec_monitor.c:496 src/exec_monitor.c:503 -#: src/exec_monitor.c:510 src/exec_monitor.c:517 src/exec_monitor.c:524 -#: src/exec_monitor.c:531 src/exec_nopty.c:231 src/exec_nopty.c:240 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:78 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:171 src/exec_monitor.c:418 +#: src/exec_monitor.c:424 src/exec_monitor.c:432 src/exec_monitor.c:440 +#: src/exec_monitor.c:447 src/exec_monitor.c:454 src/exec_monitor.c:461 +#: src/exec_monitor.c:468 src/exec_monitor.c:475 src/exec_monitor.c:482 +#: src/exec_monitor.c:489 src/exec_nopty.c:231 src/exec_nopty.c:240 #: 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:318 src/exec_nopty.c:326 -#: src/exec_nopty.c:736 src/exec_preload.c:343 src/exec_ptrace.c:475 -#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1095 -#: src/exec_ptrace.c:1270 src/exec_ptrace.c:1612 src/exec_ptrace.c:1639 -#: src/exec_pty.c:511 src/exec_pty.c:692 src/exec_pty.c:882 src/exec_pty.c:891 -#: src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 src/exec_pty.c:919 -#: src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 src/exec_pty.c:947 -#: src/exec_pty.c:954 src/exec_pty.c:962 src/load_plugins.c:98 -#: src/load_plugins.c:123 src/load_plugins.c:159 src/load_plugins.c:392 -#: src/load_plugins.c:398 src/parse_args.c:172 src/parse_args.c:193 -#: src/parse_args.c:267 src/parse_args.c:623 src/parse_args.c:645 -#: src/parse_args.c:670 src/preserve_fds.c:46 src/preserve_fds.c:131 -#: src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 src/selinux.c:489 -#: src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 src/sesh.c:246 -#: src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:641 src/sudo.c:706 -#: src/sudo.c:716 src/sudo.c:743 src/sudo.c:766 src/sudo.c:775 src/sudo.c:784 -#: src/sudo.c:801 src/sudo.c:842 src/sudo.c:851 src/sudo.c:861 src/sudo.c:894 -#: src/sudo.c:1122 src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 -#: src/sudo.c:1832 src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 -#: src/sudo_edit.c:429 src/sudo_edit.c:438 src/sudo_edit.c:538 -#: src/sudo_edit.c:545 src/sudo_edit.c:688 src/sudo_edit.c:708 -#: src/sudo_intercept_common.c:115 src/sudo_intercept_common.c:340 +#: src/exec_nopty.c:744 src/exec_preload.c:343 src/exec_ptrace.c:475 +#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1096 +#: src/exec_ptrace.c:1271 src/exec_ptrace.c:1624 src/exec_ptrace.c:1651 +#: src/exec_ptrace.c:1841 src/exec_pty.c:581 src/exec_pty.c:765 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:193 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 +#: src/sesh.c:246 src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:644 +#: src/sudo.c:709 src/sudo.c:719 src/sudo.c:746 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:787 src/sudo.c:805 src/sudo.c:846 src/sudo.c:855 src/sudo.c:865 +#: src/sudo.c:898 src/sudo.c:1127 src/sudo.c:1148 src/sudo.c:1441 +#: src/sudo.c:1610 src/sudo.c:1837 src/sudo.c:2171 src/sudo_edit.c:89 +#: src/sudo_edit.c:149 src/sudo_edit.c:430 src/sudo_edit.c:439 +#: src/sudo_edit.c:540 src/sudo_edit.c:547 src/sudo_edit.c:692 +#: src/sudo_edit.c:712 src/sudo_intercept_common.c:115 +#: src/sudo_intercept_common.c:340 #, c-format msgid "%s: %s" msgstr "%s: %s" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:56 #: lib/util/json.c:198 lib/util/regex.c:173 lib/util/sudo_conf.c:216 -#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:646 -#: src/conversation.c:81 src/exec_intercept.c:111 src/exec_intercept.c:344 -#: src/exec_intercept.c:518 src/exec_intercept.c:582 src/exec_intercept.c:706 -#: src/exec_intercept.c:830 src/exec_iolog.c:124 src/exec_iolog.c:135 -#: src/exec_iolog.c:212 src/exec_monitor.c:460 src/exec_monitor.c:466 -#: src/exec_monitor.c:474 src/exec_monitor.c:482 src/exec_monitor.c:489 -#: src/exec_monitor.c:496 src/exec_monitor.c:503 src/exec_monitor.c:510 -#: src/exec_monitor.c:517 src/exec_monitor.c:524 src/exec_monitor.c:531 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:79 src/exec_intercept.c:111 src/exec_intercept.c:350 +#: src/exec_intercept.c:525 src/exec_intercept.c:589 src/exec_intercept.c:713 +#: src/exec_intercept.c:837 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:418 src/exec_monitor.c:424 +#: src/exec_monitor.c:432 src/exec_monitor.c:440 src/exec_monitor.c:447 +#: src/exec_monitor.c:454 src/exec_monitor.c:461 src/exec_monitor.c:468 +#: src/exec_monitor.c:475 src/exec_monitor.c:482 src/exec_monitor.c:489 #: src/exec_nopty.c:231 src/exec_nopty.c:240 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:318 src/exec_nopty.c:326 src/exec_preload.c:343 #: src/exec_ptrace.c:475 src/exec_ptrace.c:768 src/exec_ptrace.c:983 -#: src/exec_ptrace.c:1639 src/exec_pty.c:511 src/exec_pty.c:882 -#: src/exec_pty.c:891 src/exec_pty.c:898 src/exec_pty.c:905 src/exec_pty.c:912 -#: src/exec_pty.c:919 src/exec_pty.c:926 src/exec_pty.c:933 src/exec_pty.c:940 -#: src/exec_pty.c:947 src/exec_pty.c:954 src/exec_pty.c:962 -#: src/load_plugins.c:98 src/load_plugins.c:123 src/load_plugins.c:159 -#: src/load_plugins.c:392 src/load_plugins.c:398 src/parse_args.c:172 -#: src/parse_args.c:194 src/parse_args.c:267 src/parse_args.c:623 -#: src/parse_args.c:645 src/parse_args.c:670 src/preserve_fds.c:46 +#: src/exec_ptrace.c:1651 src/exec_ptrace.c:1842 src/exec_pty.c:581 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:194 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 #: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 #: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:471 -#: src/sudo.c:230 src/sudo.c:641 src/sudo.c:894 src/sudo.c:1122 -#: src/sudo.c:1143 src/sudo.c:1436 src/sudo.c:1605 src/sudo.c:1832 -#: src/sudo.c:2166 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:429 -#: src/sudo_edit.c:438 src/sudo_edit.c:538 src/sudo_edit.c:545 -#: src/sudo_edit.c:688 src/sudo_edit.c:708 src/sudo_intercept_common.c:115 +#: src/sudo.c:228 src/sudo.c:644 src/sudo.c:898 src/sudo.c:1127 +#: src/sudo.c:1148 src/sudo.c:1441 src/sudo.c:1610 src/sudo.c:1837 +#: src/sudo.c:2171 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:430 +#: src/sudo_edit.c:439 src/sudo_edit.c:540 src/sudo_edit.c:547 +#: src/sudo_edit.c:692 src/sudo_edit.c:712 src/sudo_intercept_common.c:115 #: src/sudo_intercept_common.c:340 msgid "unable to allocate memory" msgstr "не вдалося отримати потрібний об’єм пам’яті" @@ -114,9 +117,9 @@ msgid "%.*s exists but is not a directory (0%o)" msgstr "%.*s існує, але не є каталогом (0%o)" -#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:666 -#: lib/util/sudo_conf.c:696 lib/util/sudo_conf.c:703 src/selinux.c:235 -#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:494 src/sudo_edit.c:557 +#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:664 +#: lib/util/sudo_conf.c:683 lib/util/sudo_conf.c:710 src/selinux.c:235 +#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:495 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "не вдалося відкрити %s" @@ -172,22 +175,22 @@ msgid "invalid max groups \"%s\" in %s, line %u" msgstr "некоректна максимальна кількість груп, «%s», у %s, рядок %u" -#: lib/util/sudo_conf.c:669 +#: lib/util/sudo_conf.c:686 #, c-format msgid "%s is not a regular file" msgstr "%s не є звичайним файлом" -#: lib/util/sudo_conf.c:672 src/copy_file.c:164 +#: lib/util/sudo_conf.c:689 src/copy_file.c:164 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s належить uid %u, має належати %u" -#: lib/util/sudo_conf.c:676 +#: lib/util/sudo_conf.c:693 #, c-format msgid "%s is world writable" msgstr "Запис до «%s» можливий для довільного користувача" -#: lib/util/sudo_conf.c:679 +#: lib/util/sudo_conf.c:696 #, c-format msgid "%s is group writable" msgstr "Запис до «%s» може здійснювати будь-який користувач з групи" @@ -236,7 +239,7 @@ msgid "%s: bad file mode: 0%o" msgstr "%s: помилковий режим доступу до файла: 0%o" -#: src/edit_open.c:331 +#: src/edit_open.c:333 msgid "unable to restore current working directory" msgstr "не вдалося відновити поточний робочий каталог" @@ -281,18 +284,18 @@ msgid "starting from %s" msgstr "починаючи з %s" -#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:569 src/exec_monitor.c:571 -#: src/exec_pty.c:225 src/exec_pty.c:1026 src/exec_pty.c:1028 src/signal.c:144 -#: src/signal.c:151 src/signal.c:165 src/suspend_nopty.c:93 +#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:552 src/exec_monitor.c:554 +#: src/exec_pty.c:1122 src/exec_pty.c:1124 src/signal.c:144 src/signal.c:151 +#: src/signal.c:165 src/suspend_parent.c:143 #, c-format msgid "unable to set handler for signal %d" msgstr "не вдалося встановити обробник для сигналу %d" -#: src/exec.c:422 +#: src/exec.c:424 msgid "intercept mode is not supported with SELinux RBAC on this system" msgstr "у цій системі з RBAC SELinux не передбачено підтримки режиму перехоплення" -#: src/exec.c:427 +#: src/exec.c:429 msgid "unable to log sub-commands with SELinux RBAC on this system" msgstr "у цій системі неможливо записувати до журналу підкоманди з RBAC SELinux" @@ -300,239 +303,258 @@ msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "не вдалося вилучити PRIV_PROC_EXEC з PRIV_LIMIT" -#: src/exec_intercept.c:70 src/exec_iolog.c:165 src/exec_iolog.c:175 -#: src/exec_iolog.c:220 src/exec_iolog.c:227 src/exec_iolog.c:254 -#: src/exec_monitor.c:468 src/exec_monitor.c:476 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_monitor.c:533 src/exec_nopty.c:233 src/exec_nopty.c:242 +#: src/exec_intercept.c:70 src/exec_iolog.c:163 src/exec_iolog.c:173 +#: src/exec_iolog.c:218 src/exec_iolog.c:225 src/exec_iolog.c:252 +#: src/exec_monitor.c:426 src/exec_monitor.c:434 src/exec_monitor.c:442 +#: src/exec_monitor.c:449 src/exec_monitor.c:456 src/exec_monitor.c:463 +#: src/exec_monitor.c:470 src/exec_monitor.c:477 src/exec_monitor.c:484 +#: src/exec_monitor.c:491 src/exec_nopty.c:233 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:305 #: src/exec_nopty.c:312 src/exec_nopty.c:320 src/exec_nopty.c:328 -#: src/exec_nopty.c:387 src/exec_nopty.c:453 src/exec_pty.c:360 -#: src/exec_pty.c:462 src/exec_pty.c:517 src/exec_pty.c:884 src/exec_pty.c:893 -#: src/exec_pty.c:900 src/exec_pty.c:907 src/exec_pty.c:914 src/exec_pty.c:921 -#: src/exec_pty.c:928 src/exec_pty.c:935 src/exec_pty.c:942 src/exec_pty.c:949 -#: src/exec_pty.c:956 +#: src/exec_nopty.c:387 src/exec_nopty.c:457 src/exec_pty.c:432 +#: src/exec_pty.c:537 src/exec_pty.c:587 src/exec_pty.c:965 src/exec_pty.c:974 +#: src/exec_pty.c:981 src/exec_pty.c:988 src/exec_pty.c:995 +#: src/exec_pty.c:1002 src/exec_pty.c:1009 src/exec_pty.c:1016 +#: src/exec_pty.c:1023 src/exec_pty.c:1030 src/exec_pty.c:1037 +#: src/exec_pty.c:1044 msgid "unable to add event to queue" msgstr "не вдалося додати подію до черги обробки" -#: src/exec_intercept.c:317 src/sudo.c:1028 +#: src/exec_intercept.c:323 src/sudo.c:1033 msgid "command not set by the security policy" msgstr "команду не встановлено правилами захисту" -#: src/exec_intercept.c:395 src/exec_intercept.c:435 src/sudo.c:1248 -#: src/sudo.c:1293 src/sudo.c:1337 +#: src/exec_intercept.c:401 src/exec_intercept.c:441 src/sudo.c:1253 +#: src/sudo.c:1298 src/sudo.c:1342 msgid "command rejected by policy" msgstr "у виконанні команди відмовлено згідно правил" -#: src/exec_intercept.c:505 src/sudo.c:1935 +#: src/exec_intercept.c:512 src/sudo.c:1940 msgid "approval plugin error" msgstr "помилка у додатку підтвердження" -#: src/exec_intercept.c:530 src/sudo.c:1253 src/sudo.c:1298 src/sudo.c:1342 -#: src/sudo.c:1416 +#: src/exec_intercept.c:537 src/sudo.c:1258 src/sudo.c:1303 src/sudo.c:1347 +#: src/sudo.c:1421 msgid "policy plugin error" msgstr "помилка у додатку правил" -#: src/exec_intercept.c:559 +#: src/exec_intercept.c:566 msgid "invalid PolicyCheckRequest" msgstr "некоректне значення PolicyCheckRequest" -#: src/exec_intercept.c:702 +#: src/exec_intercept.c:709 #, c-format msgid "client request too large: %zu" msgstr "надто великий запит клієнта: %zu" -#: src/exec_intercept.c:744 +#: src/exec_intercept.c:751 #, c-format msgid "unable to unpack %s size %zu" msgstr "не вдалося розпакувати %s, розмір %zu" -#: src/exec_intercept.c:792 +#: src/exec_intercept.c:799 #, c-format msgid "unexpected type_case value %d in %s from %s" msgstr "неочікуване значення type_case %d у %s від %s" -#: src/exec_intercept.c:818 +#: src/exec_intercept.c:825 #, c-format msgid "server message too large: %zu" msgstr "надто велике повідомлення сервера: %zu" -#: src/exec_iolog.c:323 src/exec_iolog.c:363 src/exec_iolog.c:403 -#: src/exec_iolog.c:454 src/exec_iolog.c:505 +#: src/exec_iolog.c:321 src/exec_iolog.c:361 src/exec_iolog.c:401 +#: src/exec_iolog.c:452 src/exec_iolog.c:503 msgid "I/O plugin error" msgstr "Помилка у додатку введення-виведення" -#: src/exec_iolog.c:327 src/exec_iolog.c:367 src/exec_iolog.c:407 -#: src/exec_iolog.c:458 src/exec_iolog.c:509 +#: src/exec_iolog.c:325 src/exec_iolog.c:365 src/exec_iolog.c:405 +#: src/exec_iolog.c:456 src/exec_iolog.c:507 msgid "command rejected by I/O plugin" msgstr "відмова у виконання команди від додатка введення-виведення" -#: src/exec_iolog.c:556 +#: src/exec_iolog.c:555 msgid "error logging suspend" msgstr "помилка під час призупинення ведення журналу" -#: src/exec_iolog.c:591 +#: src/exec_iolog.c:590 msgid "error changing window size" msgstr "помилка під час зміни розмірів вікна" -#: src/exec_monitor.c:362 +#: src/exec_monitor.c:328 msgid "error reading from socketpair" msgstr "помилка під час спроби читання з пари сокетів" -#: src/exec_monitor.c:379 +#: src/exec_monitor.c:340 #, c-format msgid "unexpected reply type on backchannel: %d" msgstr "неочікуваний тип відповіді на зворотному каналі: %d" -#: src/exec_monitor.c:587 +#: src/exec_monitor.c:566 msgid "unable to set controlling tty" msgstr "не вдалося встановити tty для керування" -#: src/exec_monitor.c:595 src/exec_nopty.c:498 src/exec_nopty.c:508 -#: src/exec_nopty.c:518 src/exec_nopty.c:552 src/exec_pty.c:1097 -#: src/exec_pty.c:1118 src/exec_pty.c:1138 src/tgetpass.c:305 +#: src/exec_monitor.c:574 src/exec_nopty.c:504 src/exec_nopty.c:514 +#: src/exec_nopty.c:524 src/exec_nopty.c:560 src/exec_pty.c:1195 +#: src/exec_pty.c:1222 src/exec_pty.c:1242 src/exec_pty.c:1262 +#: src/tgetpass.c:306 msgid "unable to create pipe" msgstr "не вдалося створити канал" -#: src/exec_monitor.c:605 +#: src/exec_monitor.c:584 msgid "unable to receive message from parent" msgstr "не вдалося отримати повідомлення від батьківського процесу" -#: src/exec_monitor.c:621 src/exec_nopty.c:595 src/exec_pty.c:1176 -#: src/sudo_edit.c:361 src/tgetpass.c:309 +#: src/exec_monitor.c:600 src/exec_nopty.c:603 src/exec_pty.c:1303 +#: src/sudo_edit.c:361 src/tgetpass.c:310 msgid "unable to fork" msgstr "не вдалося створити відгалуження" -#: src/exec_monitor.c:625 src/exec_monitor.c:723 src/exec_nopty.c:700 +#: src/exec_monitor.c:604 src/exec_monitor.c:700 src/exec_nopty.c:708 msgid "unable to restore tty label" msgstr "не вдалося відновити позначку tty" -#: src/exec_monitor.c:638 src/sesh.c:217 src/sudo.c:1199 +#: src/exec_monitor.c:615 src/sesh.c:217 src/sudo.c:1204 #, c-format msgid "unable to execute %s" msgstr "не вдалося виконати %s" -#: src/exec_nopty.c:546 src/exec_pty.c:1035 +#: src/exec_nopty.c:554 src/exec_pty.c:1131 msgid "policy plugin failed session initialization" msgstr "не вдалося виконати ініціалізацію сеансу через додаток правил" -#: src/exec_nopty.c:561 src/exec_pty.c:1004 src/exec_pty.c:1013 +#: src/exec_nopty.c:569 src/exec_pty.c:1100 src/exec_pty.c:1109 msgid "unable to create sockets" msgstr "не вдалося створити сокети" -#: src/exec_nopty.c:688 src/exec_pty.c:1274 +#: src/exec_nopty.c:696 src/exec_pty.c:1406 msgid "error in event loop" msgstr "помилка у циклі обробки подій" #: src/exec_preload.c:167 src/net_ifs.c:206 src/net_ifs.c:372 -#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:851 src/sudo.c:488 +#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:852 src/sudo.c:488 #: src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format msgid "internal error, %s overflow" msgstr "внутрішня помилка, переповнення %s" -#: src/exec_ptrace.c:1079 src/exec_ptrace.c:1104 src/exec_ptrace.c:1900 +#: src/exec_ptrace.c:1080 src/exec_ptrace.c:1105 src/exec_ptrace.c:1925 #, c-format msgid "unable to set registers for process %d" msgstr "не вдалося встановити регістри для процесу %d" -#: src/exec_ptrace.c:1099 src/exec_ptrace.c:1274 src/exec_ptrace.c:1616 +#: src/exec_ptrace.c:1100 src/exec_ptrace.c:1275 src/exec_ptrace.c:1628 #, c-format msgid "process %d exited unexpectedly" msgstr "процес %d неочікувано завершив роботу" -#: src/exec_ptrace.c:1208 +#: src/exec_ptrace.c:1209 msgid "unable to set seccomp filter" msgstr "не вдалося встановити фільтр seccomp" -#: src/exec_ptrace.c:1405 +#: src/exec_ptrace.c:1406 #, c-format msgid "interpreter argument , expected \"%s\", got \"%s\"" msgstr "аргумент інтерпретатора , мало бути «%s», маємо «%s»" -#: src/exec_ptrace.c:1504 +#: src/exec_ptrace.c:1505 #, c-format msgid "pathname mismatch, expected \"%s\", got \"%s\"" msgstr "невідповідність шляхів: мало бути «%s», маємо «%s»" -#: src/exec_ptrace.c:1513 src/exec_ptrace.c:1520 src/exec_ptrace.c:1533 -#: src/exec_ptrace.c:1541 src/exec_ptrace.c:1547 src/exec_ptrace.c:1553 +#: src/exec_ptrace.c:1514 src/exec_ptrace.c:1521 src/exec_ptrace.c:1545 +#: src/exec_ptrace.c:1553 src/exec_ptrace.c:1559 src/exec_ptrace.c:1565 #, c-format msgid "%s[%d] mismatch, expected \"%s\", got \"%s\"" msgstr "невідповідність %s[%d]: мало бути «%s», маємо «%s»" -#: src/exec_ptrace.c:1620 +#: src/exec_ptrace.c:1632 #, c-format msgid "process %d unexpected status 0x%x" msgstr "неочікуваний стан процесу %d: 0x%x" -#: src/exec_ptrace.c:1711 +#: src/exec_ptrace.c:1723 #, c-format msgid "unable to get event message for process %d" msgstr "не вдалося отримати повідомлення події для процесу %d" -#: src/exec_ptrace.c:1718 +#: src/exec_ptrace.c:1730 #, c-format msgid "unable to get registers for process %d" msgstr "не вдалося отримати регістри для процесу %d" -#: src/exec_pty.c:103 +#: src/exec_pty.c:84 msgid "unable to allocate pty" msgstr "не вдалося розмістити pty" -#: src/exec_pty.c:268 src/signal.c:101 src/suspend_nopty.c:99 +#: src/exec_pty.c:131 src/exec_pty.c:284 src/tgetpass.c:251 +msgid "unable to restore terminal settings" +msgstr "не вдалося відновити параметри термінала" + +#: src/exec_pty.c:243 +msgid "unable to set handler for SIGCONT" +msgstr "не вдалося встановити обробник для SIGCONT" + +#: src/exec_pty.c:293 #, c-format -msgid "unable to restore handler for signal %d" -msgstr "не вдалося відновити обробник для сигналу %d" +msgid "unable to set handler for SIG%s" +msgstr "не вдалося встановити обробник для SIG%s" + +#: src/exec_pty.c:317 +#, c-format +msgid "unable to restore handler for SIG%s" +msgstr "не вдалося відновити обробник для SIG%s" -#: src/exec_pty.c:1222 +#: src/exec_pty.c:345 +msgid "unable to restore handler for SIGCONT" +msgstr "не вдалося відновити обробник для SIGCONT" + +#: src/exec_pty.c:1353 msgid "unable to send message to monitor process" msgstr "не вдалося надіслати повідомлення до процесу аудиту" -#: src/load_plugins.c:73 src/load_plugins.c:220 src/load_plugins.c:230 -#: src/load_plugins.c:240 src/load_plugins.c:287 +#: src/load_plugins.c:75 src/load_plugins.c:222 src/load_plugins.c:232 +#: src/load_plugins.c:242 src/load_plugins.c:289 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "помилка у %s, рядок %d під час спроби завантаження додатка «%s»" -#: src/load_plugins.c:184 src/load_plugins.c:255 +#: src/load_plugins.c:186 src/load_plugins.c:257 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "ігноруємо повторний запис додатка, «%s», у %s, рядок %d" -#: src/load_plugins.c:222 +#: src/load_plugins.c:224 #, c-format msgid "unable to load %s: %s" msgstr "не вдалося завантажити %s: %s" -#: src/load_plugins.c:232 +#: src/load_plugins.c:234 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "не вдалося знайти символ «%s» у %s" -#: src/load_plugins.c:242 +#: src/load_plugins.c:244 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "несумісна основна версія додатка, %d, (мало бути %d) у %s" -#: src/load_plugins.c:260 +#: src/load_plugins.c:262 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "ігноруємо додаток правил, «%s», у %s, рядок %d" -#: src/load_plugins.c:263 +#: src/load_plugins.c:265 msgid "only a single policy plugin may be specified" msgstr "можна визначати лише один додаток обробки правил" -#: src/load_plugins.c:289 +#: src/load_plugins.c:291 #, c-format msgid "unknown plugin type %d found in %s" msgstr "у %2$s виявлено невідомий тип додатка, %1$d" -#: src/load_plugins.c:472 +#: src/load_plugins.c:474 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "до додатка правил %s не включено метод check_policy" @@ -542,47 +564,47 @@ msgid "invalid environment variable name: %s" msgstr "некоректна назва змінної середовища: %s" -#: src/parse_args.c:317 +#: src/parse_args.c:319 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "аргументом параметра -C mмає бути число не менше за 3" -#: src/parse_args.c:554 +#: src/parse_args.c:556 msgid "you may not specify both the -i and -s options" msgstr "не можна одночасно вказувати параметри -i і -s" -#: src/parse_args.c:559 +#: src/parse_args.c:561 msgid "you may not specify both the -i and -E options" msgstr "не можна одночасно вказувати параметри -i і -E" -#: src/parse_args.c:569 +#: src/parse_args.c:571 msgid "the -E option is not valid in edit mode" msgstr "не можна використовувати -E у режимі редагування" -#: src/parse_args.c:572 +#: src/parse_args.c:574 msgid "you may not specify environment variables in edit mode" msgstr "не можна вказувати змінні середовища у режимі редагування" -#: src/parse_args.c:582 +#: src/parse_args.c:584 msgid "the -U option may only be used with the -l option" msgstr "параметр -U можна використовувати лише разом з параметром -l" -#: src/parse_args.c:586 +#: src/parse_args.c:588 msgid "the -A and -S options may not be used together" msgstr "параметри -A і -S не можна використовувати одночасно" -#: src/parse_args.c:684 +#: src/parse_args.c:686 msgid "sudoedit is not supported on this platform" msgstr "підтримки sudoedit для цієї платформи не передбачено" -#: src/parse_args.c:767 +#: src/parse_args.c:744 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:780 +#: src/parse_args.c:757 msgid "Only one of the -K, -k or -N options may be specified" msgstr "Може бути вказано лише один параметр з набору -K, -k і -N" -#: src/parse_args.c:796 +#: src/parse_args.c:778 #, c-format msgid "" "%s - edit files as another user\n" @@ -591,7 +613,7 @@ "%s — редагувати файли від імені іншого користувача\n" "\n" -#: src/parse_args.c:798 +#: src/parse_args.c:780 #, c-format msgid "" "%s - execute a command as another user\n" @@ -600,7 +622,7 @@ "%s — виконати команду від імені іншого користувача\n" "\n" -#: src/parse_args.c:804 +#: src/parse_args.c:785 msgid "" "\n" "Options:\n" @@ -608,131 +630,131 @@ "\n" "Параметри:\n" -#: src/parse_args.c:806 +#: src/parse_args.c:787 msgid "use a helper program for password prompting" msgstr "використовувати допоміжну програму для запитів щодо пароля" -#: src/parse_args.c:809 +#: src/parse_args.c:790 msgid "use specified BSD authentication type" msgstr "використовувати вказаний тип розпізнавання BSD" -#: src/parse_args.c:813 +#: src/parse_args.c:794 msgid "run command in the background" msgstr "виконати команду у фоновому режимі" -#: src/parse_args.c:816 +#: src/parse_args.c:797 msgid "ring bell when prompting" msgstr "звук дзвінка під час запиту" -#: src/parse_args.c:818 +#: src/parse_args.c:799 msgid "close all file descriptors >= num" msgstr "закрити всі дескриптори файлів >= num" -#: src/parse_args.c:821 +#: src/parse_args.c:802 msgid "run command with the specified BSD login class" msgstr "виконати команду з вказаним класом доступу BSD" -#: src/parse_args.c:824 +#: src/parse_args.c:805 msgid "change the working directory before running command" msgstr "змінити робочий каталог перед виконанням команди" -#: src/parse_args.c:827 +#: src/parse_args.c:808 msgid "preserve user environment when running command" msgstr "зберегти середовище користувача на час виконання команди" -#: src/parse_args.c:829 +#: src/parse_args.c:810 msgid "preserve specific environment variables" msgstr "зберегти вказані змінні середовища" -#: src/parse_args.c:831 +#: src/parse_args.c:812 msgid "edit files instead of running a command" msgstr "редагувати файли замість виконання команди" -#: src/parse_args.c:834 +#: src/parse_args.c:815 msgid "run command as the specified group name or ID" msgstr "виконати команду від імені групи користувачів, вказаної за назвою або ідентифікатором" -#: src/parse_args.c:837 +#: src/parse_args.c:818 msgid "set HOME variable to target user's home dir" msgstr "встановити для змінної HOME значення домашнього каталогу вказаного користувача." -#: src/parse_args.c:840 +#: src/parse_args.c:821 msgid "display help message and exit" msgstr "показати довідкове повідомлення і завершити роботу" -#: src/parse_args.c:842 +#: src/parse_args.c:823 msgid "run command on host (if supported by plugin)" msgstr "виконати команду на комп’ютері (якщо підтримується додатком)" -#: src/parse_args.c:845 +#: src/parse_args.c:826 msgid "run login shell as the target user; a command may also be specified" msgstr "запустити оболонку для входу до системи від імені вказаного користувача; слід вказати команду запуску" -#: src/parse_args.c:847 +#: src/parse_args.c:828 msgid "remove timestamp file completely" msgstr "повністю вилучити файл часової позначки" -#: src/parse_args.c:850 +#: src/parse_args.c:831 msgid "invalidate timestamp file" msgstr "позбавити чинності файл часової позначки" -#: src/parse_args.c:853 +#: src/parse_args.c:834 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "показати список прав доступу користувача або перевірити певну команду; подвоєння параметра призводить до виведення додаткових даних" -#: src/parse_args.c:856 +#: src/parse_args.c:837 msgid "non-interactive mode, no prompts are used" msgstr "неінтерактивний режим, не просити користувача відповідати на питання" -#: src/parse_args.c:859 +#: src/parse_args.c:840 msgid "preserve group vector instead of setting to target's" msgstr "зберегти вектор групи, не встановлювати вектор вказаного користувача" -#: src/parse_args.c:862 +#: src/parse_args.c:843 msgid "use the specified password prompt" msgstr "використовувати вказаний інструмент отримання паролів" -#: src/parse_args.c:864 +#: src/parse_args.c:845 msgid "change the root directory before running command" msgstr "змінити кореневий каталог перед виконанням команди" -#: src/parse_args.c:867 +#: src/parse_args.c:848 msgid "create SELinux security context with specified role" msgstr "створити контекст захисту SELinux з вказаною роллю" -#: src/parse_args.c:870 +#: src/parse_args.c:851 msgid "read password from standard input" msgstr "прочитати пароль зі стандартного джерела вхідних даних" -#: src/parse_args.c:873 +#: src/parse_args.c:854 msgid "run shell as the target user; a command may also be specified" msgstr "виконати командну оболонку від імені вказаного користувача; слід також вказати команду" -#: src/parse_args.c:877 +#: src/parse_args.c:858 msgid "create SELinux security context with specified type" msgstr "створити контекст захисту SELinux вказаного типу" -#: src/parse_args.c:880 +#: src/parse_args.c:861 msgid "terminate command after the specified time limit" msgstr "перервати виконання команди щойно буде перевищено вказане обмеження за часом" -#: src/parse_args.c:883 +#: src/parse_args.c:864 msgid "in list mode, display privileges for user" msgstr "у режимі списку, показати права доступу користувача" -#: src/parse_args.c:886 +#: src/parse_args.c:867 msgid "run command (or edit file) as specified user name or ID" msgstr "виконати команду (або редагувати файл) від імені користувача, вказаного за іменем або ідентифікатором" -#: src/parse_args.c:888 +#: src/parse_args.c:869 msgid "display version information and exit" msgstr "показати дані щодо версії і завершити роботу" -#: src/parse_args.c:891 +#: src/parse_args.c:872 msgid "update user's timestamp without running a command" msgstr "оновити штамп часу користувача без виконання команди" -#: src/parse_args.c:894 +#: src/parse_args.c:875 msgid "stop processing command line arguments" msgstr "зупинити обробку аргументів командного рядка" @@ -876,6 +898,11 @@ msgid "unable to save handler for signal %d" msgstr "не вдалося зберегти обробник для сигналу %d" +#: src/signal.c:101 src/suspend_parent.c:149 +#, c-format +msgid "unable to restore handler for signal %d" +msgstr "не вдалося відновити обробник для сигналу %d" + #: src/solaris.c:72 msgid "resource control limit has been reached" msgstr "перевищено обмеження керування ресурсами" @@ -919,21 +946,21 @@ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "попередження, помилка призначення керування ресурсами проекту «%s»" -#: src/sudo.c:216 +#: src/sudo.c:214 #, c-format msgid "Sudo version %s\n" msgstr "Версія sudo %s\n" -#: src/sudo.c:218 +#: src/sudo.c:216 #, c-format msgid "Configure options: %s\n" msgstr "Параметри налаштування: %s\n" -#: src/sudo.c:226 +#: src/sudo.c:224 msgid "fatal error, unable to load plugins" msgstr "критична помилка, не вдалося завантажити додатки" -#: src/sudo.c:272 +#: src/sudo.c:270 msgid "plugin did not return a command to execute" msgstr "додатком не повернуто команди, яку слід виконати" @@ -942,128 +969,128 @@ msgid "unexpected sudo mode 0x%x" msgstr "неочікуваний режим sudo 0x%x" -#: src/sudo.c:555 +#: src/sudo.c:559 #, c-format msgid "you do not exist in the %s database" msgstr "вас немає у базі даних %s" -#: src/sudo.c:612 +#: src/sudo.c:616 msgid "unable to determine tty" msgstr "не вдалося визначити tty" -#: src/sudo.c:928 +#: src/sudo.c:932 msgid "The \"no new privileges\" flag is set, which prevents sudo from running as root." msgstr "Встановлено прапорець «без нових привілеїв», який забороняє запуск sudo від імені користувача root." -#: src/sudo.c:930 +#: src/sudo.c:934 msgid "If sudo is running in a container, you may need to adjust the container configuration to disable the flag." msgstr "Якщо sudo запущено у контейнері, вам, можливо, слід скоригувати налаштування контейнера, щоб вимкнути цей прапорець." -#: src/sudo.c:964 +#: src/sudo.c:968 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s має належати користувачеві з uid %d, крім того, має бути встановлено біт setuid" -#: src/sudo.c:967 +#: src/sudo.c:971 #, 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:973 +#: src/sudo.c:977 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "поточним uid не є %d, sudo встановлено з ідентифікатором користувача root?" -#: src/sudo.c:989 src/tgetpass.c:331 +#: src/sudo.c:993 src/tgetpass.c:332 msgid "unable to set supplementary group IDs" msgstr "не вдалося встановити ідентифікатори додаткових груп" -#: src/sudo.c:996 +#: src/sudo.c:1000 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "не вдалося встановити ефективний ідентифікатор групи для ідентифікатора групи запуску %u" -#: src/sudo.c:1002 +#: src/sudo.c:1006 #, c-format msgid "unable to set gid to runas gid %u" msgstr "не вдалося встановити ідентифікатор групи для ідентифікатора групи запуску %u" -#: src/sudo.c:1032 +#: src/sudo.c:1037 msgid "argv not set by the security policy" msgstr "argv не встановлено правилами захисту" -#: src/sudo.c:1036 +#: src/sudo.c:1041 msgid "envp not set by the security policy" msgstr "envp не встановлено правилами захисту" -#: src/sudo.c:1058 +#: src/sudo.c:1063 #, c-format msgid "unexpected child termination condition: %d" msgstr "неочікувана умова переривання дочірнього процесу: %d" -#: src/sudo.c:1171 +#: src/sudo.c:1176 msgid "unable to initialize policy plugin" msgstr "не вдалося ініціалізувати додаток правил" -#: src/sudo.c:1233 +#: src/sudo.c:1238 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "до додатка правил %s не включено метод check_policy" -#: src/sudo.c:1279 +#: src/sudo.c:1284 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "у додатку правил %s не передбачено підтримки побудови списку прав доступу" -#: src/sudo.c:1323 +#: src/sudo.c:1328 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "у додатку правил %s не передбачено підтримки параметра -v" -#: src/sudo.c:1361 +#: src/sudo.c:1366 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "у додатку правил %s не передбачено підтримки параметрів -k/-K" -#: src/sudo.c:1490 +#: src/sudo.c:1495 #, c-format msgid "error initializing I/O plugin %s" msgstr "помилка під час спроби ініціалізації додатка введення/виведення даних %s" -#: src/sudo.c:1493 +#: src/sudo.c:1498 msgid "error initializing I/O plugin" msgstr "помилка під час спроби ініціалізації додатка введення/виведення даних" -#: src/sudo.c:1642 +#: src/sudo.c:1647 #, c-format msgid "error initializing audit plugin %s" msgstr "помилка під час спроби ініціалізації додатка аудиту %s" -#: src/sudo.c:1721 +#: src/sudo.c:1726 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s: не вдалося записати до журналу подію помилки%s%s" -#: src/sudo.c:1757 +#: src/sudo.c:1762 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: не вдалося записати до журналу подію прийняття%s%s" -#: src/sudo.c:1762 src/sudo.c:1800 +#: src/sudo.c:1767 src/sudo.c:1805 msgid "audit plugin error" msgstr "помилка у додатку аудиту" -#: src/sudo.c:1795 +#: src/sudo.c:1800 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: не вдалося записати до журналу подію відмови%s%s" -#: src/sudo.c:1855 +#: src/sudo.c:1860 #, c-format msgid "error initializing approval plugin %s" msgstr "помилка під час спроби ініціалізації додатка підтвердження %s" -#: src/sudo.c:1925 +#: src/sudo.c:1930 msgid "command rejected by approver" msgstr "у виконанні команди відмовлено засобом підтвердження" @@ -1071,55 +1098,55 @@ msgid "no writable temporary directory found" msgstr "не знайдено придатного до запису тимчасового каталогу" -#: src/sudo_edit.c:291 +#: src/sudo_edit.c:292 #, c-format msgid "%s left unmodified" msgstr "%s залишено без змін" -#: src/sudo_edit.c:304 src/sudo_edit.c:569 +#: src/sudo_edit.c:305 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s не змінено" -#: src/sudo_edit.c:481 +#: src/sudo_edit.c:482 msgid "sesh: internal error: odd number of paths" msgstr "sesh: внутрішня помилка: непарна кількість шляхів" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:484 msgid "sesh: unable to create temporary files" msgstr "sesh: не вдалося створити тимчасові файли" -#: src/sudo_edit.c:485 src/sudo_edit.c:604 +#: src/sudo_edit.c:486 src/sudo_edit.c:606 msgid "sesh: killed by a signal" msgstr "sesh: завершено надсиланням сигналу" -#: src/sudo_edit.c:487 src/sudo_edit.c:607 +#: src/sudo_edit.c:488 src/sudo_edit.c:609 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: невідома помилка %d" -#: src/sudo_edit.c:597 +#: src/sudo_edit.c:599 msgid "unable to copy temporary files back to their original location" msgstr "не вдалося скопіювати тимчасові файли назад до початкового місця зберігання" -#: src/sudo_edit.c:601 +#: src/sudo_edit.c:603 msgid "unable to copy some of the temporary files back to their original location" msgstr "не вдалося скопіювати деякі з тимчасових файлів назад до початкового місця зберігання" -#: src/sudo_edit.c:646 +#: src/sudo_edit.c:650 #, c-format msgid "unable to change uid to root (%u)" msgstr "не вдалося змінити значення uid на значення root (%u)" -#: src/sudo_edit.c:660 +#: src/sudo_edit.c:664 msgid "plugin error: invalid file list for sudoedit" msgstr "помилка додатка: некоректний список файлів для sudoedit" -#: src/sudo_edit.c:681 +#: src/sudo_edit.c:685 msgid "plugin error: missing file list for sudoedit" msgstr "помилка додатка: не вистачає списку файлів для sudoedit" -#: src/sudo_edit.c:724 src/sudo_edit.c:739 +#: src/sudo_edit.c:728 src/sudo_edit.c:743 msgid "unable to read the clock" msgstr "не вдалося прочитати час на годиннику" @@ -1147,30 +1174,30 @@ msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "не вказано програми askpass, спробуйте встановити значення змінної SUDO_ASKPASS" -#: src/tgetpass.c:326 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" msgstr "не вдалося встановити gid у значення %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:337 #, c-format msgid "unable to set uid to %u" msgstr "не вдалося встановити uid у значення %u" -#: src/tgetpass.c:341 +#: src/tgetpass.c:342 #, c-format msgid "unable to run %s" msgstr "не вдалося виконати %s" -#: src/utmp.c:288 +#: src/utmp.c:283 msgid "unable to save stdin" msgstr "не вдалося зберегти stdin" -#: src/utmp.c:290 +#: src/utmp.c:285 msgid "unable to dup2 stdin" msgstr "не вдалося виконати dup2 для stdin" -#: src/utmp.c:293 +#: src/utmp.c:288 msgid "unable to restore stdin" msgstr "не вдалося відновити stdin" Binary files /tmp/tmp4lql6rr1/zSAB4fi4Ch/sudo-1.9.13p3/po/vi.mo and /tmp/tmp4lql6rr1/ssZ2I20JnJ/sudo-1.9.14p2/po/vi.mo differ diff -Nru sudo-1.9.13p3/po/vi.po sudo-1.9.14p2/po/vi.po --- sudo-1.9.13p3/po/vi.po 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/po/vi.po 2023-07-15 15:37:22.000000000 +0000 @@ -1,23 +1,22 @@ # Vietnamese translation for sudo. # Bản dịch tiếng Việt dành cho sudo. # This file is put in the public domain. -# Trần Ngọc Quân , 2012-2018, 2020, 2022. +# Trần Ngọc Quân , 2012-2018, 2020, 2022-2023. # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.11b1\n" +"Project-Id-Version: sudo 1.9.14b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2022-05-27 08:39-0600\n" -"PO-Revision-Date: 2022-06-02 07:15+0700\n" +"POT-Creation-Date: 2023-06-07 13:27-0600\n" +"PO-Revision-Date: 2023-06-10 10:22+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" "Language: vi\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Gtranslator 3.38.0\n" #: lib/util/aix.c:89 lib/util/aix.c:169 msgid "unable to open userdb" @@ -33,76 +32,78 @@ msgstr "không thể phục hồi sổ đăng ký" #: 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: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:205 src/exec_monitor.c:458 -#: 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:224 src/exec_nopty.c:233 -#: src/exec_nopty.c:240 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:311 src/exec_nopty.c:549 -#: src/exec_preload.c:143 src/exec_preload.c:204 src/exec_ptrace.c:632 -#: src/exec_ptrace.c:730 src/exec_ptrace.c:895 src/exec_pty.c:845 -#: src/exec_pty.c:854 src/exec_pty.c:911 src/exec_pty.c:1075 -#: src/exec_pty.c:1265 src/exec_pty.c:1274 src/exec_pty.c:1281 -#: src/exec_pty.c:1288 src/exec_pty.c:1295 src/exec_pty.c:1302 -#: src/exec_pty.c:1309 src/exec_pty.c:1316 src/exec_pty.c:1323 -#: src/exec_pty.c:1330 src/exec_pty.c:1337 src/exec_pty.c:1345 -#: src/exec_pty.c:1811 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:169 src/parse_args.c:190 src/parse_args.c:264 -#: src/parse_args.c:613 src/parse_args.c:635 src/parse_args.c:660 -#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:89 -#: src/selinux.c:362 src/selinux.c:474 src/selinux.c:485 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:639 src/sudo.c:712 src/sudo.c:722 src/sudo.c:748 src/sudo.c:771 -#: src/sudo.c:780 src/sudo.c:789 src/sudo.c:806 src/sudo.c:848 src/sudo.c:858 -#: src/sudo.c:891 src/sudo.c:1100 src/sudo.c:1121 src/sudo.c:1414 -#: src/sudo.c:1583 src/sudo.c:1810 src/sudo.c:2144 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:677 -#: src/sudo_edit.c:697 src/sudo_intercept_common.c:113 -#: src/sudo_intercept_common.c:317 +#: lib/util/json.c:55 lib/util/json.c:197 lib/util/sudo_conf.c:215 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:78 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:171 src/exec_monitor.c:418 +#: src/exec_monitor.c:424 src/exec_monitor.c:432 src/exec_monitor.c:440 +#: src/exec_monitor.c:447 src/exec_monitor.c:454 src/exec_monitor.c:461 +#: src/exec_monitor.c:468 src/exec_monitor.c:475 src/exec_monitor.c:482 +#: src/exec_monitor.c:489 src/exec_nopty.c:231 src/exec_nopty.c:240 +#: 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:318 src/exec_nopty.c:326 +#: src/exec_nopty.c:744 src/exec_preload.c:343 src/exec_ptrace.c:475 +#: src/exec_ptrace.c:768 src/exec_ptrace.c:983 src/exec_ptrace.c:1096 +#: src/exec_ptrace.c:1271 src/exec_ptrace.c:1624 src/exec_ptrace.c:1651 +#: src/exec_ptrace.c:1841 src/exec_pty.c:581 src/exec_pty.c:765 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:193 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:240 +#: src/sesh.c:246 src/sesh.c:253 src/sesh.c:259 src/sesh.c:470 src/sudo.c:644 +#: src/sudo.c:709 src/sudo.c:719 src/sudo.c:746 src/sudo.c:769 src/sudo.c:778 +#: src/sudo.c:787 src/sudo.c:805 src/sudo.c:846 src/sudo.c:855 src/sudo.c:865 +#: src/sudo.c:898 src/sudo.c:1127 src/sudo.c:1148 src/sudo.c:1441 +#: src/sudo.c:1610 src/sudo.c:1837 src/sudo.c:2171 src/sudo_edit.c:89 +#: src/sudo_edit.c:149 src/sudo_edit.c:430 src/sudo_edit.c:439 +#: src/sudo_edit.c:540 src/sudo_edit.c:547 src/sudo_edit.c:692 +#: src/sudo_edit.c:712 src/sudo_intercept_common.c:115 +#: src/sudo_intercept_common.c:340 #, 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/regex.c:113 lib/util/regex.c:121 -#: 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:68 -#: src/exec_intercept.c:336 src/exec_intercept.c:359 src/exec_intercept.c:367 -#: src/exec_intercept.c:392 src/exec_intercept.c:398 src/exec_intercept.c:407 -#: src/exec_intercept.c:413 src/exec_intercept.c:478 src/exec_intercept.c:588 -#: src/exec_intercept.c:707 src/exec_monitor.c:458 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:224 src/exec_nopty.c:233 src/exec_nopty.c:240 -#: 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:311 src/exec_preload.c:143 src/exec_preload.c:204 -#: src/exec_ptrace.c:632 src/exec_pty.c:845 src/exec_pty.c:854 -#: src/exec_pty.c:911 src/exec_pty.c:1265 src/exec_pty.c:1274 -#: src/exec_pty.c:1281 src/exec_pty.c:1288 src/exec_pty.c:1295 -#: src/exec_pty.c:1302 src/exec_pty.c:1309 src/exec_pty.c:1316 -#: src/exec_pty.c:1323 src/exec_pty.c:1330 src/exec_pty.c:1337 -#: src/exec_pty.c:1345 src/exec_pty.c:1811 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:169 src/parse_args.c:191 -#: src/parse_args.c:264 src/parse_args.c:613 src/parse_args.c:635 -#: src/parse_args.c:660 src/preserve_fds.c:46 src/preserve_fds.c:131 -#: src/selinux.c:89 src/selinux.c:362 src/selinux.c:474 src/selinux.c:485 -#: src/sesh.c:113 src/sesh.c:411 src/sudo.c:230 src/sudo.c:639 src/sudo.c:891 -#: src/sudo.c:1100 src/sudo.c:1121 src/sudo.c:1414 src/sudo.c:1583 -#: src/sudo.c:1810 src/sudo.c:2144 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:677 src/sudo_edit.c:697 -#: src/sudo_intercept_common.c:113 src/sudo_intercept_common.c:317 +#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:56 +#: lib/util/json.c:198 lib/util/regex.c:173 lib/util/sudo_conf.c:216 +#: lib/util/sudo_conf.c:301 lib/util/sudo_conf.c:378 lib/util/sudo_conf.c:647 +#: src/conversation.c:79 src/exec_intercept.c:111 src/exec_intercept.c:350 +#: src/exec_intercept.c:525 src/exec_intercept.c:589 src/exec_intercept.c:713 +#: src/exec_intercept.c:837 src/exec_iolog.c:122 src/exec_iolog.c:133 +#: src/exec_iolog.c:210 src/exec_monitor.c:418 src/exec_monitor.c:424 +#: src/exec_monitor.c:432 src/exec_monitor.c:440 src/exec_monitor.c:447 +#: src/exec_monitor.c:454 src/exec_monitor.c:461 src/exec_monitor.c:468 +#: src/exec_monitor.c:475 src/exec_monitor.c:482 src/exec_monitor.c:489 +#: src/exec_nopty.c:231 src/exec_nopty.c:240 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:318 src/exec_nopty.c:326 src/exec_preload.c:343 +#: src/exec_ptrace.c:475 src/exec_ptrace.c:768 src/exec_ptrace.c:983 +#: src/exec_ptrace.c:1651 src/exec_ptrace.c:1842 src/exec_pty.c:581 +#: src/exec_pty.c:963 src/exec_pty.c:972 src/exec_pty.c:979 src/exec_pty.c:986 +#: src/exec_pty.c:993 src/exec_pty.c:1000 src/exec_pty.c:1007 +#: src/exec_pty.c:1014 src/exec_pty.c:1021 src/exec_pty.c:1028 +#: src/exec_pty.c:1035 src/exec_pty.c:1042 src/exec_pty.c:1050 +#: src/load_plugins.c:100 src/load_plugins.c:125 src/load_plugins.c:161 +#: src/load_plugins.c:394 src/load_plugins.c:400 src/parse_args.c:172 +#: src/parse_args.c:194 src/parse_args.c:269 src/parse_args.c:625 +#: src/parse_args.c:647 src/parse_args.c:672 src/preserve_fds.c:46 +#: src/preserve_fds.c:131 src/selinux.c:89 src/selinux.c:362 src/selinux.c:472 +#: src/selinux.c:489 src/selinux.c:496 src/sesh.c:206 src/sesh.c:471 +#: src/sudo.c:228 src/sudo.c:644 src/sudo.c:898 src/sudo.c:1127 +#: src/sudo.c:1148 src/sudo.c:1441 src/sudo.c:1610 src/sudo.c:1837 +#: src/sudo.c:2171 src/sudo_edit.c:89 src/sudo_edit.c:149 src/sudo_edit.c:430 +#: src/sudo_edit.c:439 src/sudo_edit.c:540 src/sudo_edit.c:547 +#: src/sudo_edit.c:692 src/sudo_edit.c:712 src/sudo_intercept_common.c:115 +#: src/sudo_intercept_common.c:340 msgid "unable to allocate memory" msgstr "không thể cấp phát bộ nhớ" @@ -116,24 +117,24 @@ msgid "%.*s exists but is not a directory (0%o)" msgstr "%.*s có tồn tại nhưng nó không phải là một thư mục (0%o)" -#: lib/util/mkdir_parents.c:102 lib/util/sudo_conf.c:704 src/selinux.c:235 -#: src/selinux.c:265 src/sudo.c:371 src/sudo_edit.c:494 src/sudo_edit.c:559 +#: lib/util/mkdir_parents.c:103 lib/util/sudo_conf.c:664 +#: lib/util/sudo_conf.c:683 lib/util/sudo_conf.c:710 src/selinux.c:235 +#: src/selinux.c:265 src/sudo.c:373 src/sudo_edit.c:495 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "không thể mở “%s”" -#: lib/util/mkdir_parents.c:119 lib/util/mkdir_parents.c:127 -#: lib/util/mkdir_parents.c:136 -#, c-format -msgid "unable to open %.*s" -msgstr "không thể mở “%.*s”" - -#: lib/util/mkdir_parents.c:157 +#: lib/util/mkdir_parents.c:120 lib/util/mkdir_parents.c:160 #, c-format msgid "unable to mkdir %.*s" msgstr "không thể tạo thư mục %.*s" -#: lib/util/regex.c:103 +#: lib/util/mkdir_parents.c:130 lib/util/mkdir_parents.c:139 +#, c-format +msgid "unable to open %.*s" +msgstr "không thể mở “%.*s”" + +#: lib/util/regex.c:163 msgid "regular expression too large" msgstr "biểu thức chính quy quá lớn" @@ -141,8 +142,8 @@ msgid "Unknown signal" msgstr "Không hiểu tín hiệu" -#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 src/sesh.c:146 src/sesh.c:159 +#: lib/util/strtoid.c:84 lib/util/strtomode.c:52 lib/util/strtonum.c:148 +#: lib/util/strtonum.c:187 src/sesh.c:240 src/sesh.c:253 msgid "invalid value" msgstr "giá trị không hợp lệ" @@ -154,148 +155,147 @@ msgid "value too small" msgstr "giá trị quá nhỏ" -#: lib/util/sudo_conf.c:237 +#: lib/util/sudo_conf.c:234 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "đường dẫn không hợp lệ “%s” trong %s, dòng %u" -#: lib/util/sudo_conf.c:403 lib/util/sudo_conf.c:419 lib/util/sudo_conf.c:472 +#: lib/util/sudo_conf.c:400 lib/util/sudo_conf.c:453 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "giá trị không hợp lệ cho %s “%s” trong %s, dòng %u" -#: lib/util/sudo_conf.c:440 +#: lib/util/sudo_conf.c:421 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "nguồn nhóm không được hỗ trợ “%s” trong %s, dòng %u" -#: lib/util/sudo_conf.c:456 +#: lib/util/sudo_conf.c:437 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "nhóm tối đa không hợp lệ “%s” trong %s, dòng %u" -#: lib/util/sudo_conf.c:681 src/copy_file.c:150 -#, c-format -msgid "unable to stat %s" -msgstr "không thể lấy thống kê về %s" - -#: lib/util/sudo_conf.c:684 +#: lib/util/sudo_conf.c:686 #, c-format msgid "%s is not a regular file" msgstr "%s không phải tập tin thường" -#: lib/util/sudo_conf.c:687 src/copy_file.c:163 +#: lib/util/sudo_conf.c:689 src/copy_file.c:164 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s được sở hữu bởi uid %u, nên là %u" -#: lib/util/sudo_conf.c:691 +#: lib/util/sudo_conf.c:693 #, c-format msgid "%s is world writable" msgstr "%s là ai ghi cũng được" -#: lib/util/sudo_conf.c:694 +#: lib/util/sudo_conf.c:696 #, c-format msgid "%s is group writable" msgstr "%s là nhóm có thể ghi" -#: src/apparmor.c:79 +#: src/apparmor.c:85 msgid "failed to determine AppArmor confinement" msgstr "gặp lỗi khi xác định hạn chế AppArmor" -#: src/apparmor.c:87 +#: src/apparmor.c:93 #, c-format msgid "unable to change AppArmor profile to %s" msgstr "không thể thay đổi hồ sơ AppArmor thành %s" -#: src/copy_file.c:93 +#: src/copy_file.c:94 #, c-format msgid "%s: truncate %s to zero bytes? (y/n) [n] " msgstr "%s: cắt cụt %s thành không byte? (y/n) [n] " -#: src/copy_file.c:97 +#: src/copy_file.c:98 #, c-format msgid "not overwriting %s" msgstr "không ghi đè lên “%s”" -#: src/copy_file.c:119 +#: src/copy_file.c:120 #, c-format msgid "unable to read from %s" msgstr "không thể đọc từ “%s”" -#: src/copy_file.c:136 src/sudo_edit.c:320 +#: src/copy_file.c:137 src/sudo_edit.c:320 #, c-format msgid "unable to write to %s" msgstr "không thể ghi vào %s" -#: src/copy_file.c:154 src/sesh.c:218 src/sudo_edit.c:197 +#: src/copy_file.c:151 +#, c-format +msgid "unable to stat %s" +msgstr "không thể lấy thống kê về %s" + +#: src/copy_file.c:155 src/sesh.c:312 src/sudo_edit.c:197 #, c-format msgid "%s: not a regular file" msgstr "%s: không phải là tập tin thường" -#: src/copy_file.c:158 +#: src/copy_file.c:159 #, c-format msgid "%s: bad file mode: 0%o" msgstr "%s: sai chế độ tập tin: 0%o" -#: src/edit_open.c:331 +#: src/edit_open.c:333 msgid "unable to restore current working directory" msgstr "không thể phục hồi thư mục làm việc hiện tại" -#: src/exec.c:103 +#: src/exec.c:111 msgid "unable to set privileges" msgstr "không thể đặt đặc quyền" -#: src/exec.c:109 src/exec.c:114 +#: src/exec.c:117 src/exec.c:122 msgid "unable to set limit privileges" msgstr "không thể đặt giới hạn đặc quyền" -#: src/exec.c:137 +#: src/exec.c:145 #, c-format msgid "unknown login class %s" msgstr "không hiểu lớp đăng nhập %s" -#: src/exec.c:149 +#: src/exec.c:157 msgid "unable to set user context" msgstr "không thể đặt ngữ cảnh người dùng" -#: src/exec.c:165 +#: src/exec.c:173 msgid "unable to set process priority" msgstr "không thể đặt ưu tiên cho quá trình" -#: src/exec.c:182 +#: src/exec.c:190 #, c-format msgid "unable to change root to %s" msgstr "không thể chuyển đổi thư mục gốc thành %s" -#: src/exec.c:195 src/exec.c:201 src/exec.c:208 +#: src/exec.c:203 src/exec.c:209 src/exec.c:216 #, c-format msgid "unable to change to runas uid (%u, %u)" msgstr "không thể thay đổi thành chạy như là mã người dùng này (%u, %u)" -#: src/exec.c:226 +#: src/exec.c:238 src/sesh.c:199 #, c-format msgid "unable to change directory to %s" msgstr "không thể thay đổi thư mục thành %s" -#: src/exec.c:230 +#: src/exec.c:243 #, c-format msgid "starting from %s" msgstr "đang bắt đầu từ %s" -#: src/exec.c:312 src/exec_monitor.c:575 src/exec_monitor.c:577 -#: src/exec_monitor.c:648 src/exec_nopty.c:439 src/exec_pty.c:586 -#: src/exec_pty.c:1447 src/exec_pty.c:1449 src/signal.c:144 src/signal.c:151 -#: src/signal.c:165 src/suspend_nopty.c:89 +#: src/exec.c:278 src/exec.c:351 src/exec_monitor.c:552 src/exec_monitor.c:554 +#: src/exec_pty.c:1122 src/exec_pty.c:1124 src/signal.c:144 src/signal.c:151 +#: src/signal.c:165 src/suspend_parent.c:143 #, c-format msgid "unable to set handler for signal %d" msgstr "không thể đặt bộ tiếp hợp cho tín hiệu %d" -#: src/exec.c:391 +#: src/exec.c:424 msgid "intercept mode is not supported with SELinux RBAC on this system" msgstr "chế độ chặn không được hỗ trợ với SELinux RBAC trên hệ thống này" -#: src/exec.c:396 +#: src/exec.c:429 msgid "unable to log sub-commands with SELinux RBAC on this system" msgstr "không thể ghi nhật ký lệnh con với SELinux RBAC trên hệ thống này" @@ -303,285 +303,308 @@ msgid "unable to remove PRIV_PROC_EXEC from PRIV_LIMIT" msgstr "không thể xóa bỏ PRIV_PROC_EXEC từ PRIV_LIMIT" -#: src/exec_intercept.c:95 src/exec_intercept.c:674 src/exec_intercept.c:864 -#: src/exec_intercept.c:876 src/exec_monitor.c:466 src/exec_monitor.c:474 -#: src/exec_monitor.c:482 src/exec_monitor.c:489 src/exec_monitor.c:496 -#: src/exec_monitor.c:503 src/exec_monitor.c:510 src/exec_monitor.c:517 -#: src/exec_monitor.c:524 src/exec_monitor.c:531 src/exec_nopty.c:226 -#: 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:305 src/exec_nopty.c:313 -#: src/exec_pty.c:711 src/exec_pty.c:716 src/exec_pty.c:813 src/exec_pty.c:820 -#: src/exec_pty.c:917 src/exec_pty.c:1267 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297 -#: src/exec_pty.c:1304 src/exec_pty.c:1311 src/exec_pty.c:1318 -#: src/exec_pty.c:1325 src/exec_pty.c:1332 src/exec_pty.c:1339 -#: src/exec_pty.c:1764 src/exec_pty.c:1774 src/exec_pty.c:1819 -#: src/exec_pty.c:1826 src/exec_pty.c:1853 +#: src/exec_intercept.c:70 src/exec_iolog.c:163 src/exec_iolog.c:173 +#: src/exec_iolog.c:218 src/exec_iolog.c:225 src/exec_iolog.c:252 +#: src/exec_monitor.c:426 src/exec_monitor.c:434 src/exec_monitor.c:442 +#: src/exec_monitor.c:449 src/exec_monitor.c:456 src/exec_monitor.c:463 +#: src/exec_monitor.c:470 src/exec_monitor.c:477 src/exec_monitor.c:484 +#: src/exec_monitor.c:491 src/exec_nopty.c:233 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:305 +#: src/exec_nopty.c:312 src/exec_nopty.c:320 src/exec_nopty.c:328 +#: src/exec_nopty.c:387 src/exec_nopty.c:457 src/exec_pty.c:432 +#: src/exec_pty.c:537 src/exec_pty.c:587 src/exec_pty.c:965 src/exec_pty.c:974 +#: src/exec_pty.c:981 src/exec_pty.c:988 src/exec_pty.c:995 +#: src/exec_pty.c:1002 src/exec_pty.c:1009 src/exec_pty.c:1016 +#: src/exec_pty.c:1023 src/exec_pty.c:1030 src/exec_pty.c:1037 +#: src/exec_pty.c:1044 msgid "unable to add event to queue" msgstr "không thể thêm sự kiện vào hàng đợi" -#: src/exec_intercept.c:344 src/sudo.c:1226 src/sudo.c:1271 src/sudo.c:1315 +#: src/exec_intercept.c:323 src/sudo.c:1033 +msgid "command not set by the security policy" +msgstr "lệnh bị từ chối do chính sách an ninh" + +#: src/exec_intercept.c:401 src/exec_intercept.c:441 src/sudo.c:1253 +#: src/sudo.c:1298 src/sudo.c:1342 msgid "command rejected by policy" msgstr "lệnh bị từ chối do chính sách" -#: src/exec_intercept.c:437 src/sudo.c:1231 src/sudo.c:1276 src/sudo.c:1320 -#: src/sudo.c:1394 +#: src/exec_intercept.c:512 src/sudo.c:1940 +msgid "approval plugin error" +msgstr "lỗi trình cắm chấp thuận" + +#: src/exec_intercept.c:537 src/sudo.c:1258 src/sudo.c:1303 src/sudo.c:1347 +#: src/sudo.c:1421 msgid "policy plugin error" msgstr "lỗi trình cắm chính sách" -#: src/exec_intercept.c:462 +#: src/exec_intercept.c:566 msgid "invalid PolicyCheckRequest" msgstr "PolicyCheckRequest không hợp lệ" -#: src/exec_intercept.c:584 +#: src/exec_intercept.c:709 #, c-format msgid "client request too large: %zu" msgstr "yêu cầu từ máy khách là quá lớn: %zu" -#: src/exec_intercept.c:622 +#: src/exec_intercept.c:751 #, c-format msgid "unable to unpack %s size %zu" msgstr "không thể giải nén %s kích cỡ %zu" -#: src/exec_intercept.c:665 +#: src/exec_intercept.c:799 #, c-format msgid "unexpected type_case value %d in %s from %s" msgstr "gặp giá trị type_case không cần %d trong %s từ %s" -#: src/exec_intercept.c:695 +#: src/exec_intercept.c:825 #, c-format msgid "server message too large: %zu" msgstr "thông điệp từ máy chủ là quá lớn: %zu" -#: src/exec_monitor.c:360 +#: src/exec_iolog.c:321 src/exec_iolog.c:361 src/exec_iolog.c:401 +#: src/exec_iolog.c:452 src/exec_iolog.c:503 +msgid "I/O plugin error" +msgstr "Lỗi trình cắm V/R" + +#: src/exec_iolog.c:325 src/exec_iolog.c:365 src/exec_iolog.c:405 +#: src/exec_iolog.c:456 src/exec_iolog.c:507 +msgid "command rejected by I/O plugin" +msgstr "lệnh bị từ chối bởi trình cắm V/R" + +#: src/exec_iolog.c:555 +msgid "error logging suspend" +msgstr "lỗi cấm ghi nhật ký" + +#: src/exec_iolog.c:590 +msgid "error changing window size" +msgstr "gặp lỗi khi thay đổi cỡ của cửa sổ" + +#: src/exec_monitor.c:328 msgid "error reading from socketpair" msgstr "gặp lỗi khi đọc từ socketpair" -#: src/exec_monitor.c:377 +#: src/exec_monitor.c:340 #, c-format msgid "unexpected reply type on backchannel: %d" msgstr "kiểu trả về không như mong đợi từ backchannel: %d" -#: src/exec_monitor.c:593 +#: src/exec_monitor.c:566 msgid "unable to set controlling tty" msgstr "không thể đặt điều khiển cho tty" -#: src/exec_monitor.c:601 src/exec_nopty.c:382 src/exec_pty.c:1526 -#: src/exec_pty.c:1547 src/exec_pty.c:1567 src/tgetpass.c:305 +#: src/exec_monitor.c:574 src/exec_nopty.c:504 src/exec_nopty.c:514 +#: src/exec_nopty.c:524 src/exec_nopty.c:560 src/exec_pty.c:1195 +#: src/exec_pty.c:1222 src/exec_pty.c:1242 src/exec_pty.c:1262 +#: src/tgetpass.c:306 msgid "unable to create pipe" msgstr "không tạo được đường ống pipe" -#: src/exec_monitor.c:611 +#: src/exec_monitor.c:584 msgid "unable to receive message from parent" msgstr "không thể nhận tin nhắn từ cha mẹ" -#: src/exec_monitor.c:627 src/exec_nopty.c:422 src/exec_pty.c:1605 -#: src/sudo_edit.c:361 src/tgetpass.c:309 +#: src/exec_monitor.c:600 src/exec_nopty.c:603 src/exec_pty.c:1303 +#: src/sudo_edit.c:361 src/tgetpass.c:310 msgid "unable to fork" msgstr "không thể tạo tiến trình con" -#: src/exec_monitor.c:631 src/exec_monitor.c:749 src/exec_nopty.c:518 +#: src/exec_monitor.c:604 src/exec_monitor.c:700 src/exec_nopty.c:708 msgid "unable to restore tty label" msgstr "không thể phục hồi nhãn cho tty" -#: src/exec_monitor.c:664 src/sesh.c:123 src/sudo.c:1177 +#: src/exec_monitor.c:615 src/sesh.c:217 src/sudo.c:1204 #, c-format msgid "unable to execute %s" msgstr "không thể thực thi %s" -#: src/exec_nopty.c:376 src/exec_pty.c:1456 +#: src/exec_nopty.c:554 src/exec_pty.c:1131 msgid "policy plugin failed session initialization" msgstr "phần bổ sung chính sách gặp lỗi khi khởi tạo phiên" -#: src/exec_nopty.c:391 src/exec_pty.c:1425 src/exec_pty.c:1434 +#: src/exec_nopty.c:569 src/exec_pty.c:1100 src/exec_pty.c:1109 msgid "unable to create sockets" msgstr "không thể tạo các ổ cắm mạng" -#: src/exec_nopty.c:506 src/exec_pty.c:1703 +#: src/exec_nopty.c:696 src/exec_pty.c:1406 msgid "error in event loop" msgstr "có lỗi trong vòng lặp sự kiện" -#: src/exec_ptrace.c:647 -msgid "insufficient space for execve arguments" -msgstr "không gian thiếu cho các tham số execve" - -#: src/exec_ptrace.c:658 src/exec_ptrace.c:668 src/exec_ptrace.c:678 +#: src/exec_preload.c:167 src/net_ifs.c:206 src/net_ifs.c:372 +#: src/net_ifs.c:433 src/net_ifs.c:620 src/net_ifs.c:852 src/sudo.c:488 +#: src/sudo_edit.c:398 src/sudo_edit.c:406 #, c-format -msgid "unable to read execve %s for process %d" -msgstr "không thể đọc execve %s cho tiến trình %d" +msgid "internal error, %s overflow" +msgstr "lỗi nội bộ, %s bị tràn" -#: src/exec_ptrace.c:714 src/exec_ptrace.c:739 src/exec_ptrace.c:1194 +#: src/exec_ptrace.c:1080 src/exec_ptrace.c:1105 src/exec_ptrace.c:1925 #, c-format msgid "unable to set registers for process %d" msgstr "không thể đặt đăng ký cho tiến trình %d" -#: src/exec_ptrace.c:734 src/exec_ptrace.c:899 +#: src/exec_ptrace.c:1100 src/exec_ptrace.c:1275 src/exec_ptrace.c:1628 #, c-format msgid "process %d exited unexpectedly" msgstr "tiến trình %d đã thoát bất thường" -#: src/exec_ptrace.c:843 +#: src/exec_ptrace.c:1209 msgid "unable to set seccomp filter" msgstr "không thể đặt bộ lọc seccomp" -#: src/exec_ptrace.c:934 +#: src/exec_ptrace.c:1406 +#, c-format +msgid "interpreter argument , expected \"%s\", got \"%s\"" +msgstr "đối số bộ phiên dịch, cần \"%s\", nhưng lại nhận được \"%s\"" + +#: src/exec_ptrace.c:1505 #, c-format msgid "pathname mismatch, expected \"%s\", got \"%s\"" msgstr "tên đường dẫn không khớp, cần \"%s\", nhưng lại nhận được \"%s\"" -#: src/exec_ptrace.c:942 src/exec_ptrace.c:948 src/exec_ptrace.c:954 -#: src/exec_ptrace.c:962 src/exec_ptrace.c:968 src/exec_ptrace.c:974 +#: src/exec_ptrace.c:1514 src/exec_ptrace.c:1521 src/exec_ptrace.c:1545 +#: src/exec_ptrace.c:1553 src/exec_ptrace.c:1559 src/exec_ptrace.c:1565 #, c-format msgid "%s[%d] mismatch, expected \"%s\", got \"%s\"" msgstr "%s[%d] không khớp, cần \"%s\", nhưng lại nhận được \"%s\"" -#: src/exec_ptrace.c:1013 +#: src/exec_ptrace.c:1632 +#, c-format +msgid "process %d unexpected status 0x%x" +msgstr "tiến trình %d có trạng thái thoát bất thường 0x%x" + +#: src/exec_ptrace.c:1723 #, c-format msgid "unable to get event message for process %d" msgstr "không thể lấy tin nhắn sự kiện cho tiến trình %d" -#: src/exec_ptrace.c:1019 +#: src/exec_ptrace.c:1730 #, c-format msgid "unable to get registers for process %d" msgstr "không thể lấy đăng ký cho tiến trình %d" -#: src/exec_pty.c:163 +#: src/exec_pty.c:84 msgid "unable to allocate pty" msgstr "không thể phân bổ pty" -#: src/exec_pty.c:227 src/exec_pty.c:267 src/exec_pty.c:307 src/exec_pty.c:358 -#: src/exec_pty.c:409 -msgid "I/O plugin error" -msgstr "Lỗi trình cắm V/R" - -#: src/exec_pty.c:231 src/exec_pty.c:271 src/exec_pty.c:311 src/exec_pty.c:362 -#: src/exec_pty.c:413 -msgid "command rejected by I/O plugin" -msgstr "lệnh bị từ chối bởi trình cắm V/R" +#: src/exec_pty.c:131 src/exec_pty.c:284 src/tgetpass.c:251 +msgid "unable to restore terminal settings" +msgstr "không thể phục hồi các cài đặt thiết bị đầu cuối" -#: src/exec_pty.c:460 -msgid "error logging suspend" -msgstr "lỗi cấm ghi nhật ký" +#: src/exec_pty.c:243 +msgid "unable to set handler for SIGCONT" +msgstr "không thể đặt bộ xử lý cho tín hiệu SIGCONT" -#: src/exec_pty.c:494 -msgid "error changing window size" -msgstr "gặp lỗi khi thay đổi cỡ của cửa sổ" +#: src/exec_pty.c:293 +#, c-format +msgid "unable to set handler for SIG%s" +msgstr "không thể đặt bộ xử lý cho tín hiệu SIG%s" -#: src/exec_pty.c:624 src/signal.c:101 src/suspend_nopty.c:95 +#: src/exec_pty.c:317 #, c-format -msgid "unable to restore handler for signal %d" -msgstr "không thể phục hồi bộ tiếp hợp cho tín hiệu %d" +msgid "unable to restore handler for SIG%s" +msgstr "không thể phục hồi bộ xử lý cho tín hiệu SIG%s" -#: src/exec_pty.c:1651 +#: src/exec_pty.c:345 +msgid "unable to restore handler for SIGCONT" +msgstr "không thể khôi phục trình xử lý cho tín hiệu SIGCONT" + +#: src/exec_pty.c:1353 msgid "unable to send message to monitor process" msgstr "không thể gửi tin đến tiến trình theo dõi" -#: 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 +#: src/load_plugins.c:75 src/load_plugins.c:222 src/load_plugins.c:232 +#: src/load_plugins.c:242 src/load_plugins.c:289 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "lỗi trong %s, dòng %d, trong khi tải phần bổ sung “%s”" -#: src/load_plugins.c:124 -#, c-format -msgid "%s must be owned by uid %d" -msgstr "%s phải được sở hữu bởi uid %d" - -#: src/load_plugins.c:130 -#, c-format -msgid "%s must be only be writable by owner" -msgstr "%s phải là những thứ chỉ có thể ghi bởi chủ sở hữu" - -#: src/load_plugins.c:241 src/load_plugins.c:312 +#: src/load_plugins.c:186 src/load_plugins.c:257 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "bỏ qua phần bổ sung trùng lặp “%s” trong %s, dòng %d" -#: src/load_plugins.c:279 +#: src/load_plugins.c:224 #, c-format msgid "unable to load %s: %s" msgstr "không thể tải %s: %s" -#: src/load_plugins.c:289 +#: src/load_plugins.c:234 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "không tìm thấy ký hiệu “%s” trong %s" -#: src/load_plugins.c:299 +#: src/load_plugins.c:244 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "không tương thích số hiệu phiên bản lớn %d (cần %d) tìm thấy trong %s" -#: src/load_plugins.c:317 +#: src/load_plugins.c:262 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "lờ đi phần bổ sung chính sách “%s” trong %s, dòng %d" -#: src/load_plugins.c:320 +#: src/load_plugins.c:265 msgid "only a single policy plugin may be specified" msgstr "chỉ được phép chỉ định một phần bổ sung chính sách" -#: src/load_plugins.c:346 +#: src/load_plugins.c:291 #, c-format msgid "unknown plugin type %d found in %s" msgstr "không hiểu kiểu trình cắm %d tìm thấy trong %s" -#: src/load_plugins.c:529 +#: src/load_plugins.c:474 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "phần bổ sung chính sách %s không bao gồm phương thức kiểm tra chính sách" -#: 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:486 src/sudo_edit.c:398 src/sudo_edit.c:406 -#, c-format -msgid "internal error, %s overflow" -msgstr "lỗi nội bộ, %s bị tràn" - -#: src/parse_args.c:211 +#: src/parse_args.c:214 #, c-format msgid "invalid environment variable name: %s" msgstr "tên biến môi trường không hợp lệ: %s" -#: src/parse_args.c:314 +#: src/parse_args.c:319 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "đối số cho -C phải là một số lớn hơn hoặc bằng 3" -#: src/parse_args.c:545 +#: src/parse_args.c:556 msgid "you may not specify both the -i and -s options" msgstr "bạn không nên chỉ định đồng thời cả hai tùy chọn “-i” và “-s”" -#: src/parse_args.c:550 +#: src/parse_args.c:561 msgid "you may not specify both the -i and -E options" msgstr "bạn không nên chỉ định cả hai tùy chọn “-i” và “-E”" -#: src/parse_args.c:560 +#: src/parse_args.c:571 msgid "the -E option is not valid in edit mode" msgstr "tùy chọn “-E” không hợp lệ trong chế độ chỉnh sửa" -#: src/parse_args.c:563 +#: src/parse_args.c:574 msgid "you may not specify environment variables in edit mode" msgstr "bạn có lẽ không được chỉ định biến môi trường trong chế độ soạn thảo" -#: src/parse_args.c:573 +#: src/parse_args.c:584 msgid "the -U option may only be used with the -l option" msgstr "tùy chọn “-U” chỉ nên sử dụng cùng với tùy chọn “-l”" -#: src/parse_args.c:577 +#: src/parse_args.c:588 msgid "the -A and -S options may not be used together" msgstr "tùy chọn “-A” và “-S” không nên dùng cùng một lúc với nhau" -#: src/parse_args.c:674 +#: src/parse_args.c:686 msgid "sudoedit is not supported on this platform" msgstr "sudoedit không được hỗ trợ trên nền tảng này" -#: src/parse_args.c:757 +#: src/parse_args.c:744 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "Chỉ được phép chỉ định một trong số các tùy chọn -e, -h, -i, -K, -l, -s, -v hay -V" -#: src/parse_args.c:773 +#: src/parse_args.c:757 +msgid "Only one of the -K, -k or -N options may be specified" +msgstr "Chỉ được phép chỉ định một trong số các tùy chọn -K, -k, hay -N" + +#: src/parse_args.c:778 #, c-format msgid "" "%s - edit files as another user\n" @@ -590,7 +613,7 @@ "%s - sửa chữa các tập tin trên danh nghĩa người dùng khác\n" "\n" -#: src/parse_args.c:775 +#: src/parse_args.c:780 #, c-format msgid "" "%s - execute a command as another user\n" @@ -599,7 +622,7 @@ "%s - thực hiện câu lệnh trên danh nghĩa người dùng khác\n" "\n" -#: src/parse_args.c:781 +#: src/parse_args.c:785 msgid "" "\n" "Options:\n" @@ -607,131 +630,131 @@ "\n" "Tùy chọn:\n" -#: src/parse_args.c:783 +#: src/parse_args.c:787 msgid "use a helper program for password prompting" msgstr "sử dụng chương trình trợ giúp cho hỏi đáp mật khẩu" -#: src/parse_args.c:786 +#: src/parse_args.c:790 msgid "use specified BSD authentication type" msgstr "sử dụng kiểu xác thực BSD được chỉ ra" -#: src/parse_args.c:790 +#: src/parse_args.c:794 msgid "run command in the background" msgstr "chạy lệnh ở chế độ nền" -#: src/parse_args.c:793 +#: src/parse_args.c:797 msgid "ring bell when prompting" msgstr "reo chuông khi nhắc" -#: src/parse_args.c:795 +#: src/parse_args.c:799 msgid "close all file descriptors >= num" msgstr "đóng tất cả các mô tả của tập tin >= số" -#: src/parse_args.c:798 +#: src/parse_args.c:802 msgid "run command with the specified BSD login class" msgstr "chạy lệnh với một lớp đăng nhập BSD được chỉ ra" -#: src/parse_args.c:801 +#: src/parse_args.c:805 msgid "change the working directory before running command" msgstr "thay đổi thư mục làm việc trước khi chạy lệnh" -#: src/parse_args.c:804 +#: src/parse_args.c:808 msgid "preserve user environment when running command" msgstr "bảo tồn môi trường người dùng khi thi hành lệnh" -#: src/parse_args.c:806 +#: src/parse_args.c:810 msgid "preserve specific environment variables" msgstr "bảo tôn các biến môi trường chuyên biệt" -#: src/parse_args.c:808 +#: src/parse_args.c:812 msgid "edit files instead of running a command" msgstr "chỉnh sửa các tập tin thay vì chạy lệnh" -#: src/parse_args.c:811 +#: src/parse_args.c:815 msgid "run command as the specified group name or ID" msgstr "thực hiện câu lệnh với tư cách là tên hay ID của nhóm được chỉ định" -#: src/parse_args.c:814 +#: src/parse_args.c:818 msgid "set HOME variable to target user's home dir" msgstr "đặt biến HOME cho thư mục riêng của người dùng đích" -#: src/parse_args.c:817 +#: src/parse_args.c:821 msgid "display help message and exit" msgstr "hiển thị trợ giúp này rồi thoát" -#: src/parse_args.c:819 +#: src/parse_args.c:823 msgid "run command on host (if supported by plugin)" msgstr "chạy câu lệnh trên máy chủ (nếu được hỗ trợ bởi phần bổ sung)" -#: src/parse_args.c:822 +#: src/parse_args.c:826 msgid "run login shell as the target user; a command may also be specified" msgstr "chạy shell đăng nhập như là người dùng đích; có thể đồng thời chỉ định một câu lệnh" -#: src/parse_args.c:824 +#: src/parse_args.c:828 msgid "remove timestamp file completely" msgstr "gỡ bỏ hoàn toàn dấu vết thời gian của tập tin" -#: src/parse_args.c:827 +#: src/parse_args.c:831 msgid "invalidate timestamp file" msgstr "làm mất hiệu lực dấu vết thời gian (timestamp) của tập tin" -#: src/parse_args.c:830 +#: src/parse_args.c:834 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "liệt kê đặc quyền của người dùng hay kiểm tra câu lệnh xác định; dùng hai lần cho định dạng dài" -#: src/parse_args.c:833 +#: src/parse_args.c:837 msgid "non-interactive mode, no prompts are used" msgstr "chế độ không-tương-tác, sẽ không hỏi tên người dùng" -#: src/parse_args.c:836 +#: src/parse_args.c:840 msgid "preserve group vector instead of setting to target's" msgstr "bảo tồn véc-tơ nhóm thay vì các cài đặt cho đích" -#: src/parse_args.c:839 +#: src/parse_args.c:843 msgid "use the specified password prompt" msgstr "sử dụng nhắc nhập mật khẩu đã chỉ ra" -#: src/parse_args.c:841 +#: src/parse_args.c:845 msgid "change the root directory before running command" msgstr "thay đổi thư mục gốc trước khi chạy lệnh" -#: src/parse_args.c:844 +#: src/parse_args.c:848 msgid "create SELinux security context with specified role" msgstr "tạo ngữ cảnh an ninh SELinux với vai trò đã chỉ ra" -#: src/parse_args.c:847 +#: src/parse_args.c:851 msgid "read password from standard input" msgstr "đọc mật khẩu từ đầu vào tiêu chuẩn" -#: src/parse_args.c:850 +#: src/parse_args.c:854 msgid "run shell as the target user; a command may also be specified" msgstr "chạy hệ vỏ dưới danh nghĩa người dùng đích; cũng có thể chỉ định thêm câu lệnh" -#: src/parse_args.c:854 +#: src/parse_args.c:858 msgid "create SELinux security context with specified type" msgstr "tạo ngữ cảnh an ninh SELinux với kiểu đã chỉ ra" -#: src/parse_args.c:857 +#: src/parse_args.c:861 msgid "terminate command after the specified time limit" msgstr "chấm dứt lệnh sau một thời hạn giới hạn được chỉ định" -#: src/parse_args.c:860 +#: src/parse_args.c:864 msgid "in list mode, display privileges for user" msgstr "ở chế độ liệt kê, hiển thị đặc quyền cho người dùng" -#: src/parse_args.c:863 +#: src/parse_args.c:867 msgid "run command (or edit file) as specified user name or ID" msgstr "chạy lệnh (hay sửa chữa tập tin) trên tư cách của người dùng hay ID đã chỉ ra" -#: src/parse_args.c:865 +#: src/parse_args.c:869 msgid "display version information and exit" msgstr "hiển thị thông tin phiên bản rồi thoát" -#: src/parse_args.c:868 +#: src/parse_args.c:872 msgid "update user's timestamp without running a command" msgstr "cập nhật dấu vết thời gian (timestamp) của người dùng mà không chạy một lệnh" -#: src/parse_args.c:871 +#: src/parse_args.c:875 msgid "stop processing command line arguments" msgstr "dừng việc xử lý đối số dòng lệnh" @@ -831,37 +854,42 @@ msgid "unable to set key creation context to %s" msgstr "không thể đặt ngữ cảnh tạo khóa thành %s" -#: src/sesh.c:72 -msgid "requires at least one argument" -msgstr "cần thiết ít nhất một đối số" +#: src/sesh.c:114 src/sesh.c:134 +msgid "Only one of the -c or -i options may be specified" +msgstr "Chỉ được phép chỉ định một trong số các tùy chọn -c, hay -i" -#: src/sesh.c:104 +#: src/sesh.c:129 #, c-format msgid "invalid file descriptor number: %s" msgstr "số mô tả của tập tin không hợp lệ: %s" -#: src/sesh.c:118 +#: src/sesh.c:167 src/sesh.c:171 src/sesh.c:175 #, c-format -msgid "unable to run %s as a login shell" -msgstr "không thể chạy %s như là hệ vỏ đăng nhập" +msgid "The -%c option may not be used in edit mode." +msgstr "Tùy chọn “-%c” không hợp lệ trong chế độ chỉnh sửa." -#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:204 +#: src/sesh.c:184 src/sesh.c:189 +#, c-format +msgid "The -%c option may only be used in edit mode." +msgstr "Tùy chọn “-%c” chỉ có thể sử dụng trong chế độ chỉnh sửa." + +#: src/sesh.c:294 src/sesh.c:394 src/sudo_edit.c:204 #, c-format msgid "%s: editing symbolic links is not permitted" msgstr "%s: sửa các liên kết mềm là không được phép" -#: src/sesh.c:203 src/sesh.c:303 src/sudo_edit.c:207 +#: src/sesh.c:297 src/sesh.c:397 src/sudo_edit.c:207 #, c-format msgid "%s: editing files in a writable directory is not permitted" msgstr "%s: sửa các tập tin trong thư mục ghi được là là không được phép" -#: src/sesh.c:287 src/sesh.c:308 src/sesh.c:317 src/sesh.c:325 +#: src/sesh.c:381 src/sesh.c:402 src/sesh.c:411 src/sesh.c:419 #: src/sudo_edit.c:331 #, c-format msgid "contents of edit session left in %s" msgstr "nội dung của phiên chỉnh sửa chỉ còn %s" -#: src/sesh.c:416 src/sudo_edit.c:94 +#: src/sesh.c:476 src/sudo_edit.c:94 msgid "unable to get group list" msgstr "không thể lấy danh sách nhóm" @@ -870,6 +898,11 @@ msgid "unable to save handler for signal %d" msgstr "không thể ghi lại bộ tiếp hợp cho tín hiệu %d" +#: src/signal.c:101 src/suspend_parent.c:149 +#, c-format +msgid "unable to restore handler for signal %d" +msgstr "không thể phục hồi bộ tiếp hợp cho tín hiệu %d" + #: src/solaris.c:72 msgid "resource control limit has been reached" msgstr "giới hạn điều khiển tài nguyên đã tới hạn" @@ -913,203 +946,211 @@ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "cảnh báo, nguồn điều khiển gán gặp lỗi cho dự án “%s”" -#: src/sudo.c:216 +#: src/sudo.c:214 #, c-format msgid "Sudo version %s\n" msgstr "Sudo phiên bản %s\n" -#: src/sudo.c:218 +#: src/sudo.c:216 #, c-format msgid "Configure options: %s\n" msgstr "Các tùy chọn cấu hình: %s\n" -#: src/sudo.c:226 +#: src/sudo.c:224 msgid "fatal error, unable to load plugins" msgstr "lỗi nghiêm trọng, không thể tải các phần bổ sung" -#: src/sudo.c:272 +#: src/sudo.c:270 msgid "plugin did not return a command to execute" msgstr "phần bổ sung không trả về một lệnh để thực thi" -#: src/sudo.c:305 +#: src/sudo.c:306 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "không mong đợi chế độ sudo 0x%x" -#: src/sudo.c:553 +#: src/sudo.c:559 #, c-format msgid "you do not exist in the %s database" msgstr "bạn không tồn tại trong cơ sở dữ liệu %s" -#: src/sudo.c:610 +#: src/sudo.c:616 msgid "unable to determine tty" msgstr "không thể dò tìm tty" -#: src/sudo.c:925 +#: src/sudo.c:932 msgid "The \"no new privileges\" flag is set, which prevents sudo from running as root." msgstr "Chưa đặt cờ \"đặc quyền mới\" nào, việc này sẽ ngăn cản sudo chạy với tư cách root." -#: src/sudo.c:927 +#: src/sudo.c:934 msgid "If sudo is running in a container, you may need to adjust the container configuration to disable the flag." msgstr "Nếu sudo được chạy trong một container, bạn có lẽ cần chỉnh cấu hình container để tắt cờ." -#: src/sudo.c:961 +#: src/sudo.c:968 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s phải được sở hữu bởi uid %d và bít setuid phải được đặt" -#: src/sudo.c:964 +#: src/sudo.c:971 #, 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 chịu tác động hiện tại không phải là %d, có phải là %s trên hệ thống tập tin với tùy chọn “nosuid” được đặt, hay một hệ thống tập tin NFS không có đặc quyền của root không?" -#: src/sudo.c:970 +#: src/sudo.c:977 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "uid chịu tác động hiện tại không phải là %d, chương trình sudo có được cài với setuid root không?" -#: src/sudo.c:986 src/tgetpass.c:331 +#: src/sudo.c:993 src/tgetpass.c:332 msgid "unable to set supplementary group IDs" msgstr "không thể đặt nhóm phụ IDs" -#: src/sudo.c:993 +#: src/sudo.c:1000 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "không thể đặt hiệu ứng gid chạy như là gid %u" -#: src/sudo.c:999 +#: src/sudo.c:1006 #, c-format msgid "unable to set gid to runas gid %u" msgstr "không thể thay đổi gid thành runas gid %u" -#: src/sudo.c:1042 +#: src/sudo.c:1037 +msgid "argv not set by the security policy" +msgstr "argv không được đặt bởi chính sách an ninh" + +#: src/sudo.c:1041 +msgid "envp not set by the security policy" +msgstr "envp không được đặt bởi chính sách an ninh" + +#: src/sudo.c:1063 #, c-format msgid "unexpected child termination condition: %d" msgstr "biểu thức điều kiện con kết thúc không như mong đợi: %d" -#: src/sudo.c:1149 +#: src/sudo.c:1176 msgid "unable to initialize policy plugin" msgstr "không thể khởi tạo phần bổ sung chính sách" -#: src/sudo.c:1211 +#: src/sudo.c:1238 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "phần bổ sung chính sách %s bị thiếu phương thức kiểm tra chính sách “check_policy”" -#: src/sudo.c:1257 +#: src/sudo.c:1284 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "phần bổ sung chính sách %s không hỗ trợ liệt kê đặc quyền" -#: src/sudo.c:1301 +#: src/sudo.c:1328 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "phần bổ sung chính sách %s không hỗ trợ tùy chọn -v" -#: src/sudo.c:1339 +#: src/sudo.c:1366 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "phần bổ sung chính sách %s không hỗ trợ tùy chọn -k/-K" -#: src/sudo.c:1468 +#: src/sudo.c:1495 #, c-format msgid "error initializing I/O plugin %s" msgstr "gặp lỗi khi khởi tạo phần bổ sung I/O %s" -#: src/sudo.c:1471 +#: src/sudo.c:1498 msgid "error initializing I/O plugin" msgstr "gặp lỗi khi khởi tạo phần bổ sung V/R" -#: src/sudo.c:1620 +#: src/sudo.c:1647 #, c-format msgid "error initializing audit plugin %s" msgstr "gặp lỗi khi khởi tạo phần bổ sung audit %s" -#: src/sudo.c:1699 +#: src/sudo.c:1726 #, c-format msgid "%s: unable to log error event%s%s" msgstr "%s: không thể ghi nhật ký sự kiện lỗi%s%s" -#: src/sudo.c:1735 +#: src/sudo.c:1762 #, c-format msgid "%s: unable to log accept event%s%s" msgstr "%s: không thể ghi nhật ký sự kiện chấp thuận%s%s" -#: src/sudo.c:1740 src/sudo.c:1778 +#: src/sudo.c:1767 src/sudo.c:1805 msgid "audit plugin error" msgstr "lỗi trình cắm audit" -#: src/sudo.c:1773 +#: src/sudo.c:1800 #, c-format msgid "%s: unable to log reject event%s%s" msgstr "%s: không thể ghi nhật ký sự kiện từ chối%s%s" -#: src/sudo.c:1833 +#: src/sudo.c:1860 #, c-format msgid "error initializing approval plugin %s" msgstr "gặp lỗi khi khởi tạo phần bổ sung chấp thuận %s" -#: src/sudo.c:1903 +#: src/sudo.c:1930 msgid "command rejected by approver" msgstr "lệnh bị từ chối do bộ chấp thuận" -#: src/sudo.c:1913 -msgid "approval plugin error" -msgstr "lỗi trình cắm chấp thuận" - #: src/sudo_edit.c:113 msgid "no writable temporary directory found" msgstr "không thể tìm thấy thư mục tạm ghi được nào" -#: src/sudo_edit.c:291 +#: src/sudo_edit.c:292 #, c-format msgid "%s left unmodified" msgstr "%s còn lại chưa thay đổi" -#: src/sudo_edit.c:304 src/sudo_edit.c:571 +#: src/sudo_edit.c:305 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "%s không thay đổi" -#: src/sudo_edit.c:481 +#: src/sudo_edit.c:482 msgid "sesh: internal error: odd number of paths" msgstr "sesh: lỗi nội tại: số cũ của đường dẫn" -#: src/sudo_edit.c:483 +#: src/sudo_edit.c:484 msgid "sesh: unable to create temporary files" msgstr "sesh: không thể tạo tập tin tạm thời" -#: src/sudo_edit.c:485 src/sudo_edit.c:609 +#: src/sudo_edit.c:486 src/sudo_edit.c:606 msgid "sesh: killed by a signal" msgstr "sesh: bị giết bởi một tín hiệu" -#: src/sudo_edit.c:487 src/sudo_edit.c:612 +#: src/sudo_edit.c:488 src/sudo_edit.c:609 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: không hiểu lỗi %d" -#: src/sudo_edit.c:602 +#: src/sudo_edit.c:599 msgid "unable to copy temporary files back to their original location" msgstr "không thể chép các tập tin tạm trở lại vị trí gốc của chúng" -#: src/sudo_edit.c:606 +#: src/sudo_edit.c:603 msgid "unable to copy some of the temporary files back to their original location" msgstr "không thể chép một số tập tin tạm trở lại vị trí gốc của chúng" -#: src/sudo_edit.c:649 +#: src/sudo_edit.c:650 #, c-format msgid "unable to change uid to root (%u)" msgstr "không thể thay đổi uid thành root (%u)" -#: src/sudo_edit.c:670 +#: src/sudo_edit.c:664 +msgid "plugin error: invalid file list for sudoedit" +msgstr "lỗi phần bổ sung: danh sách tập tin không hợp lệ cho sudoedit" + +#: src/sudo_edit.c:685 msgid "plugin error: missing file list for sudoedit" msgstr "lỗi phần bổ sung: thiếu danh sách tập tin cho sudoedit" -#: src/sudo_edit.c:713 src/sudo_edit.c:727 +#: src/sudo_edit.c:728 src/sudo_edit.c:743 msgid "unable to read the clock" msgstr "không thể đọc khóa" -#: src/sudo_intercept_common.c:341 +#: src/sudo_intercept_common.c:365 msgid "intercept port not set" msgstr "chưa đặt cổng chắn" @@ -1133,33 +1174,51 @@ msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "không có chương trình hỏi mật khẩu nào được chỉ ra, hãy thử đặt SUDO_ASKPASS" -#: src/tgetpass.c:326 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" msgstr "không thể đặt mã số nhóm thành %u" -#: src/tgetpass.c:336 +#: src/tgetpass.c:337 #, c-format msgid "unable to set uid to %u" msgstr "không thể đặt mã số người dùng thành %u" -#: src/tgetpass.c:341 +#: src/tgetpass.c:342 #, c-format msgid "unable to run %s" msgstr "không thể chạy %s" -#: src/utmp.c:288 +#: src/utmp.c:283 msgid "unable to save stdin" msgstr "không thể ghi lại đầu vào tiêu chuẩn" -#: src/utmp.c:290 +#: src/utmp.c:285 msgid "unable to dup2 stdin" msgstr "không thể dup2 (nhân đôi) đầu vào tiêu chuẩn" -#: src/utmp.c:293 +#: src/utmp.c:288 msgid "unable to restore stdin" msgstr "không thể phục hồi đầu vào tiêu chuẩn" +#~ msgid "insufficient space for execve arguments" +#~ msgstr "không gian thiếu cho các tham số execve" + +#~ msgid "unable to read execve %s for process %d" +#~ msgstr "không thể đọc execve %s cho tiến trình %d" + +#~ msgid "%s must be owned by uid %d" +#~ msgstr "%s phải được sở hữu bởi uid %d" + +#~ msgid "%s must be only be writable by owner" +#~ msgstr "%s phải là những thứ chỉ có thể ghi bởi chủ sở hữu" + +#~ msgid "requires at least one argument" +#~ msgstr "cần thiết ít nhất một đối số" + +#~ msgid "unable to run %s as a login shell" +#~ msgstr "không thể chạy %s như là hệ vỏ đăng nhập" + #~ msgid "%s%s: %s" #~ msgstr "%s%s: %s" @@ -1242,7 +1301,7 @@ #~ msgstr "lỗi nội bộ, erealloc3() bị tràn" #~ msgid "%s: at least one policy plugin must be specified" -#~ msgstr "%s: phải xác định ít nhất một phần bổ xung chính sách" +#~ msgstr "%s: phải xác định ít nhất một phần bổ sung chính sách" #~ msgid "must be setuid root" #~ msgstr "phải được đặt setuid của root" diff -Nru sudo-1.9.13p3/scripts/config.sub sudo-1.9.14p2/scripts/config.sub --- sudo-1.9.13p3/scripts/config.sub 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/scripts/config.sub 2023-07-15 15:37:22.000000000 +0000 @@ -4,7 +4,7 @@ # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2023-01-01' +timestamp='2023-01-21' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -1075,7 +1075,7 @@ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) cpu=i586 ;; - pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) + pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) cpu=i686 ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) diff -Nru sudo-1.9.13p3/scripts/mkdep.pl sudo-1.9.14p2/scripts/mkdep.pl --- sudo-1.9.13p3/scripts/mkdep.pl 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/scripts/mkdep.pl 2023-07-15 15:37:22.000000000 +0000 @@ -116,11 +116,11 @@ $makefile =~ s:\@DEV\@::g; $makefile =~ s:\@COMMON_OBJS\@:aix.lo event_poll.lo event_select.lo:; $makefile =~ s:\@SUDO_OBJS\@:intercept.pb-c.o openbsd.o preload.o apparmor.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:; + $makefile =~ s:\@SUDOERS_OBJS\@:bsm_audit.lo linux_audit.lo ldap.lo ldap_util.lo ldap_conf.lo ldap_innetgr.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_buf.lo arc4random_uniform.lo cfmakeraw.lo closefrom.lo dup3.lo explicit_bzero.lo fchmodat.lo fchownat.lo freezero.lo fstatat.lo fnmatch.lo getaddrinfo.lo getcwd.lo getentropy.lo getgrouplist.lo getdelim.lo getopt_long.lo getusershell.lo glob.lo gmtime_r.lo inet_ntop_lo inet_pton.lo isblank.lo localtime_r.lo memrchr.lo mkdirat.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 timegm.lo unlinkat.lo utimens.lo:; + $makefile =~ s:\@LTLIBOBJS\@:arc4random.lo arc4random_buf.lo arc4random_uniform.lo cfmakeraw.lo closefrom.lo dup3.lo explicit_bzero.lo fchmodat.lo fchownat.lo freezero.lo fstatat.lo fnmatch.lo getaddrinfo.lo getentropy.lo getgrouplist.lo getdelim.lo getopt_long.lo getusershell.lo glob.lo gmtime_r.lo inet_ntop_lo inet_pton.lo isblank.lo localtime_r.lo memrchr.lo mkdirat.lo mksiglist.lo mksigname.lo mktemp.lo nanosleep.lo openat.lo pipe2.lo pread.lo pwrite.lo pw_dup.lo reallocarray.lo realpath.lo sha2.lo sig2str.lo siglist.lo signame.lo snprintf.lo str2sig.lo strlcat.lo strlcpy.lo strndup.lo strnlen.lo strsignal.lo timegm.lo unlinkat.lo utimens.lo:; # Parse OBJS lines my %objs; diff -Nru sudo-1.9.13p3/src/conversation.c sudo-1.9.14p2/src/conversation.c --- sudo-1.9.13p3/src/conversation.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/src/conversation.c 2023-07-15 15:37:23.000000000 +0000 @@ -38,8 +38,6 @@ #include "sudo_plugin.h" #include "sudo_plugin_int.h" -extern int tgetpass_flags; /* XXX */ - /* * Sudo conversation function. */ @@ -94,7 +92,7 @@ bool raw_tty = false; if (ISSET(msg->msg_type, SUDO_CONV_PREFER_TTY) && - !ISSET(tgetpass_flags, TGP_STDIN)) { + !ISSET(flags, TGP_STDIN)) { ttyfd = open(_PATH_TTY, O_WRONLY); raw_tty = sudo_term_is_raw(ttyfd); } else { diff -Nru sudo-1.9.13p3/src/edit_open.c sudo-1.9.14p2/src/edit_open.c --- sudo-1.9.13p3/src/edit_open.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/src/edit_open.c 2023-07-15 15:37:23.000000000 +0000 @@ -100,7 +100,7 @@ } static bool -group_matches(gid_t target, struct sudo_cred *cred) +group_matches(gid_t target, const struct sudo_cred *cred) { int i; debug_decl(group_matches, SUDO_DEBUG_EDIT); @@ -123,7 +123,7 @@ } static bool -is_writable(struct sudo_cred *user_cred, struct stat *sb) +is_writable(const struct sudo_cred *user_cred, struct stat *sb) { debug_decl(is_writable, SUDO_DEBUG_EDIT); @@ -153,7 +153,8 @@ * Returns true if writable, false if not, or -1 on error. */ int -dir_is_writable(int dfd, struct sudo_cred *user_cred, struct sudo_cred *cur_cred) +dir_is_writable(int dfd, const struct sudo_cred *user_cred, + const struct sudo_cred *cur_cred) { struct stat sb; int rc; @@ -215,7 +216,8 @@ * Returns true if writable, false if not, or -1 on error. */ int -dir_is_writable(int dfd, struct sudo_cred *user_cred, struct sudo_cred *cur_cred) +dir_is_writable(int dfd, const struct sudo_cred *user_cred, + const struct sudo_cred *cur_cred) { struct stat sb; debug_decl(dir_is_writable, SUDO_DEBUG_EDIT); @@ -338,7 +340,7 @@ static int sudo_edit_open_nonwritable(char *path, int oflags, mode_t mode, - struct sudo_cred *user_cred, struct sudo_cred *cur_cred) + const struct sudo_cred *user_cred, const struct sudo_cred *cur_cred) { const int dflags = DIR_OPEN_FLAGS; int dfd, fd, writable; @@ -405,7 +407,7 @@ #ifdef O_NOFOLLOW int sudo_edit_open(char *path, int oflags, mode_t mode, int sflags, - struct sudo_cred *user_cred, struct sudo_cred *cur_cred) + const struct sudo_cred *user_cred, const struct sudo_cred *cur_cred) { int fd; debug_decl(sudo_edit_open, SUDO_DEBUG_EDIT); @@ -434,7 +436,7 @@ #else int sudo_edit_open(char *path, int oflags, mode_t mode, int sflags, - struct sudo_cred *user_cred, struct sudo_cred *cur_cred) + const struct sudo_cred *user_cred, const struct sudo_cred *cur_cred) { struct stat sb; int fd; @@ -486,8 +488,8 @@ * Does not modify the value of errno. */ bool -sudo_edit_parent_valid(char *path, int sflags, struct sudo_cred *user_cred, - struct sudo_cred *cur_cred) +sudo_edit_parent_valid(char *path, int sflags, + const struct sudo_cred *user_cred, const struct sudo_cred *cur_cred) { const int serrno = errno; struct stat sb; diff -Nru sudo-1.9.13p3/src/exec.c sudo-1.9.14p2/src/exec.c --- sudo-1.9.13p3/src/exec.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/src/exec.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2009-2022 Todd C. Miller + * Copyright (c) 2009-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -226,17 +226,17 @@ * Only change cwd if we have chroot()ed or the policy modules * specifies a different cwd. Must be done after uid change. */ - if (details->cwd != NULL) { - if (details->chroot != NULL || user_details.cwd == NULL || - strcmp(details->cwd, user_details.cwd) != 0) { + if (details->runcwd != NULL) { + if (details->chroot != NULL || details->submitcwd == NULL || + strcmp(details->runcwd, details->submitcwd) != 0) { if (ISSET(details->flags, CD_RBAC_ENABLED)) { /* For SELinux, chdir(2) in sesh after the context change. */ SET(details->flags, CD_RBAC_SET_CWD); } else { - /* Note: cwd is relative to the new root, if any. */ - if (chdir(details->cwd) == -1) { + /* Note: runcwd is relative to the new root, if any. */ + if (chdir(details->runcwd) == -1) { sudo_warn(U_("unable to change directory to %s"), - details->cwd); + details->runcwd); if (!ISSET(details->flags, CD_CWD_OPTIONAL)) goto done; if (details->chroot != NULL) @@ -294,7 +294,7 @@ #ifdef HAVE_SELINUX if (ISSET(details->flags, CD_RBAC_ENABLED)) { selinux_execve(details->execfd, details->command, details->argv, - details->envp, details->cwd, details->flags); + details->envp, details->runcwd, details->flags); } else #endif { @@ -361,7 +361,7 @@ } static bool -sudo_needs_pty(struct command_details *details) +sudo_needs_pty(const struct command_details *details) { struct plugin_container *plugin; @@ -382,7 +382,7 @@ * sudo can exec the command directly (and not wait). */ static bool -direct_exec_allowed(struct command_details *details) +direct_exec_allowed(const struct command_details *details) { struct plugin_container *plugin; debug_decl(direct_exec_allowed, SUDO_DEBUG_EXEC); @@ -407,7 +407,9 @@ * we fact that we have two different controlling terminals to deal with. */ int -sudo_execute(struct command_details *details, struct command_status *cstat) +sudo_execute(struct command_details *details, + const struct user_details *user_details, + struct sudo_event_base *evbase, struct command_status *cstat) { debug_decl(sudo_execute, SUDO_DEBUG_EXEC); @@ -438,7 +440,11 @@ cstat->val = errno; debug_return_int(-1); case 0: - /* child continues without controlling terminal */ + /* + * Child continues in an orphaned process group. + * Reads from the terminal fail with EIO. + * Writes succeed unless tostop is set on the terminal. + */ (void)setpgid(0, 0); break; default: @@ -461,7 +467,7 @@ * is configured, this returns false and we run the command without a pty. */ if (sudo_needs_pty(details)) { - if (exec_pty(details, cstat)) + if (exec_pty(details, user_details, evbase, cstat)) goto done; } @@ -481,7 +487,7 @@ /* * Run the command in the existing tty (if any) and wait for it to finish. */ - exec_nopty(details, cstat); + exec_nopty(details, user_details, evbase, cstat); done: /* The caller will run any plugin close functions. */ @@ -533,7 +539,7 @@ debug_decl(free_exec_closure, SUDO_DEBUG_EXEC); /* Free any remaining intercept resources. */ - intercept_cleanup(); + intercept_cleanup(ec); sudo_ev_base_free(ec->evbase); sudo_ev_free(ec->backchannel_event); @@ -551,6 +557,7 @@ sudo_ev_free(ec->sigcont_event); sudo_ev_free(ec->siginfo_event); sudo_ev_free(ec->sigwinch_event); + free(ec->ptyname); debug_return; } diff -Nru sudo-1.9.13p3/src/exec_intercept.c sudo-1.9.14p2/src/exec_intercept.c --- sudo-1.9.13p3/src/exec_intercept.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/src/exec_intercept.c 2023-07-15 15:37:23.000000000 +0000 @@ -98,7 +98,7 @@ */ void * intercept_setup(int fd, struct sudo_event_base *evbase, - struct command_details *details) + const struct command_details *details) { struct intercept_closure *closure; debug_decl(intercept_setup, SUDO_DEBUG_EXEC); @@ -199,13 +199,19 @@ } void -intercept_cleanup(void) +intercept_cleanup(struct exec_closure *ec) { debug_decl(intercept_cleanup, SUDO_DEBUG_EXEC); if (accept_closure != NULL) { + /* DSO-based intercept. */ intercept_connection_close(accept_closure); accept_closure = NULL; + } else if (ec->intercept != NULL) { + /* ptrace-based intercept. */ + intercept_closure_reset(ec->intercept); + free(ec->intercept); + ec->intercept = NULL; } debug_return; @@ -450,10 +456,11 @@ goto oom; /* Rebuild command_info[] with new command and runcwd. */ - command_info = update_command_info(closure->details->info, + command_info_copy = update_command_info(closure->details->info, command, runcwd, NULL, closure); - if (command_info == NULL) + if (command_info_copy == NULL) goto oom; + command_info = command_info_copy; closure->state = POLICY_ACCEPT; run_argv = argv; } @@ -1079,7 +1086,7 @@ #else /* _PATH_SUDO_INTERCEPT */ void * intercept_setup(int fd, struct sudo_event_base *evbase, - struct command_details *details) + const struct command_details *details) { debug_decl(intercept_setup, SUDO_DEBUG_EXEC); @@ -1089,7 +1096,7 @@ } void -intercept_cleanup(void) +intercept_cleanup(struct exec_closure *ec) { debug_decl(intercept_cleanup, SUDO_DEBUG_EXEC); diff -Nru sudo-1.9.13p3/src/exec_intercept.h sudo-1.9.14p2/src/exec_intercept.h --- sudo-1.9.13p3/src/exec_intercept.h 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/src/exec_intercept.h 2023-07-15 15:37:22.000000000 +0000 @@ -35,7 +35,7 @@ /* Closure for intercept_cb() */ struct intercept_closure { union sudo_token_un token; - struct command_details *details; + const struct command_details *details; struct sudo_event ev; const char *errstr; char *command; /* dynamically allocated */ diff -Nru sudo-1.9.13p3/src/exec_iolog.c sudo-1.9.14p2/src/exec_iolog.c --- sudo-1.9.13p3/src/exec_iolog.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/src/exec_iolog.c 2023-07-15 15:37:22.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2009-2022 Todd C. Miller + * Copyright (c) 2009-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -36,12 +36,11 @@ #include "sudo_plugin.h" #include "sudo_plugin_int.h" -sigset_t ttyblock; -int ttymode = TERM_COOKED; +int io_fds[6] = { -1, -1, -1, -1, -1, -1 }; -struct io_buffer_list iobufs = SLIST_HEAD_INITIALIZER(&iobufs); +static struct io_buffer_list iobufs = SLIST_HEAD_INITIALIZER(&iobufs); -int io_fds[6] = { -1, -1, -1, -1, -1, -1 }; +static sigset_t ttyblock; /* * Remove and free any events associated with the specified @@ -104,8 +103,7 @@ io_buf_new(int rfd, int wfd, bool (*action)(const char *, unsigned int, struct io_buffer *), void (*read_cb)(int fd, int what, void *v), - void (*write_cb)(int fd, int what, void *v), - struct exec_closure *ec, struct io_buffer_list *head) + void (*write_cb)(int fd, int what, void *v), struct exec_closure *ec) { int n; struct io_buffer *iob; @@ -133,7 +131,7 @@ iob->buf[0] = '\0'; if (iob->revent == NULL || iob->wevent == NULL) sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - SLIST_INSERT_HEAD(head, iob, entries); + SLIST_INSERT_HEAD(&iobufs, iob, entries); debug_return; } @@ -143,7 +141,7 @@ * resuming from suspend. */ void -add_io_events(struct sudo_event_base *evbase) +add_io_events(struct exec_closure *ec) { struct io_buffer *iob; debug_decl(add_io_events, SUDO_DEBUG_EXEC); @@ -156,12 +154,12 @@ SLIST_FOREACH(iob, &iobufs, entries) { /* Don't read from /dev/tty if we are not in the foreground. */ if (iob->revent != NULL && - (ttymode == TERM_RAW || !USERTTY_EVENT(iob->revent))) { + (ec->term_raw || !USERTTY_EVENT(iob->revent))) { if (iob->len != sizeof(iob->buf)) { sudo_debug_printf(SUDO_DEBUG_INFO, "added I/O revent %p, fd %d, events %d", iob->revent, iob->revent->fd, iob->revent->events); - if (sudo_ev_add(evbase, iob->revent, NULL, false) == -1) + if (sudo_ev_add(ec->evbase, iob->revent, NULL, false) == -1) sudo_fatal("%s", U_("unable to add event to queue")); } } @@ -171,7 +169,7 @@ sudo_debug_printf(SUDO_DEBUG_INFO, "added I/O wevent %p, fd %d, events %d", iob->wevent, iob->wevent->fd, iob->wevent->events); - if (sudo_ev_add(evbase, iob->wevent, NULL, false) == -1) + if (sudo_ev_add(ec->evbase, iob->wevent, NULL, false) == -1) sudo_fatal("%s", U_("unable to add event to queue")); } } @@ -533,8 +531,9 @@ /* Call I/O plugin suspend log method. */ void -log_suspend(struct exec_closure *ec, int signo) +log_suspend(void *v, int signo) { + struct exec_closure *ec = v; struct plugin_container *plugin; const char *errstr = NULL; sigset_t omask; diff -Nru sudo-1.9.13p3/src/exec_monitor.c sudo-1.9.14p2/src/exec_monitor.c --- sudo-1.9.13p3/src/exec_monitor.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/src/exec_monitor.c 2023-07-15 15:39:34.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2009-2022 Todd C. Miller + * Copyright (c) 2009-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -24,9 +24,9 @@ #include #include -#include #include #include +#include #include #include #include @@ -35,7 +35,6 @@ #include #include #include -#include #include "sudo.h" #include "sudo_exec.h" @@ -43,7 +42,7 @@ #include "sudo_plugin_int.h" struct monitor_closure { - struct command_details *details; + const struct command_details *details; struct sudo_event_base *evbase; struct sudo_event *errpipe_event; struct sudo_event *backchannel_event; @@ -62,8 +61,6 @@ int backchannel; }; -static bool tty_initialized; - /* * Deliver a signal to the running command. * The signal was either forwarded to us by the parent sudo process @@ -75,23 +72,25 @@ static void deliver_signal(struct monitor_closure *mc, int signo, bool from_parent) { - char signame[SIG2STR_MAX]; debug_decl(deliver_signal, SUDO_DEBUG_EXEC); /* Avoid killing more than a single process or process group. */ if (mc->cmnd_pid <= 0) debug_return; - if (signo == SIGCONT_FG) - (void)strlcpy(signame, "CONT_FG", sizeof(signame)); - else if (signo == SIGCONT_BG) - (void)strlcpy(signame, "CONT_BG", sizeof(signame)); - else if (sig2str(signo, signame) == -1) - (void)snprintf(signame, sizeof(signame), "%d", signo); + if (sudo_debug_needed(SUDO_DEBUG_INFO)) { + char signame[SIG2STR_MAX]; + if (signo == SIGCONT_FG) + (void)strlcpy(signame, "CONT_FG", sizeof(signame)); + else if (signo == SIGCONT_BG) + (void)strlcpy(signame, "CONT_BG", sizeof(signame)); + else if (sig2str(signo, signame) == -1) + (void)snprintf(signame, sizeof(signame), "%d", signo); + sudo_debug_printf(SUDO_DEBUG_INFO, "received SIG%s%s", + signame, from_parent ? " from parent" : ""); + } /* Handle signal from parent or monitor. */ - sudo_debug_printf(SUDO_DEBUG_INFO, "received SIG%s%s", - signame, from_parent ? " from parent" : ""); switch (signo) { case SIGALRM: terminate_command(mc->cmnd_pid, true); @@ -103,11 +102,6 @@ "%s: unable to set foreground pgrp to %d (command)", __func__, (int)mc->cmnd_pgrp); } - /* Lazily initialize the pty if needed. */ - if (!tty_initialized) { - if (sudo_term_copy(io_fds[SFD_USERTTY], io_fds[SFD_FOLLOWER])) - tty_initialized = true; - } killpg(mc->cmnd_pid, SIGCONT); break; case SIGCONT_BG: @@ -131,34 +125,6 @@ } /* - * Unpack rows and cols from a CMD_TTYWINCH value, set the new window - * size on the pty follower and inform the command of the change. - */ -static void -handle_winch(struct monitor_closure *mc, unsigned int wsize_packed) -{ - struct winsize wsize, owsize; - debug_decl(handle_winch, SUDO_DEBUG_EXEC); - - /* Rows and columns are stored as two shorts packed into a single int. */ - wsize.ws_row = wsize_packed & 0xffff; - wsize.ws_col = (wsize_packed >> 16) & 0xffff; - - if (ioctl(io_fds[SFD_FOLLOWER], TIOCGWINSZ, &owsize) == 0 && - (wsize.ws_row != owsize.ws_row || wsize.ws_col != owsize.ws_col)) { - - sudo_debug_printf(SUDO_DEBUG_INFO, - "window size change %dx%d -> %dx%d", - owsize.ws_col, owsize.ws_row, wsize.ws_col, wsize.ws_row); - - (void)ioctl(io_fds[SFD_FOLLOWER], TIOCSWINSZ, &wsize); - deliver_signal(mc, SIGWINCH, true); - } - - debug_return; -} - -/* * Send status to parent over socketpair. * Return value is the same as send(2). */ @@ -368,16 +334,11 @@ mc->cstat->val = n ? EIO : ECONNRESET; sudo_ev_loopbreak(mc->evbase); } else { - switch (cstmp.type) { - case CMD_TTYWINCH: - handle_winch(mc, cstmp.val); - break; - case CMD_SIGNO: + if (cstmp.type == CMD_SIGNO) { deliver_signal(mc, cstmp.val, true); - break; - default: - sudo_warnx(U_("unexpected reply type on backchannel: %d"), cstmp.type); - break; + } else { + sudo_warnx(U_("unexpected reply type on backchannel: %d"), + cstmp.type); } } debug_return; @@ -394,9 +355,6 @@ volatile pid_t self = getpid(); debug_decl(exec_cmnd_pty, SUDO_DEBUG_EXEC); - /* Register cleanup function */ - sudo_fatal_callback_register(pty_cleanup); - /* Set command process group here too to avoid a race. */ setpgid(0, self); @@ -415,7 +373,7 @@ close(io_fds[SFD_STDERR]); /* Wait for parent to grant us the tty if we are foreground. */ - if (foreground && !ISSET(details->flags, CD_EXEC_BG)) { + if (foreground) { struct timespec ts = { 0, 1000 }; /* 1us */ sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s: waiting for controlling tty", __func__); @@ -443,7 +401,7 @@ */ static void fill_exec_closure_monitor(struct monitor_closure *mc, - struct command_details *details, struct command_status *cstat, + const struct command_details *details, struct command_status *cstat, int errfd, int backchannel) { debug_decl(fill_exec_closure_monitor, SUDO_DEBUG_EXEC); @@ -539,6 +497,29 @@ } /* + * Make the tty follower the controlling tty. + */ +static bool +pty_make_controlling(const char *follower) +{ + debug_decl(pty_make_controlling, SUDO_DEBUG_EXEC); + + if (io_fds[SFD_FOLLOWER] != -1) { +#ifdef TIOCSCTTY + if (ioctl(io_fds[SFD_FOLLOWER], TIOCSCTTY, NULL) != 0) + debug_return_bool(false); +#else + /* Set controlling tty by reopening pty follower. */ + int fd = open(follower, O_RDWR); + if (fd == -1) + debug_return_bool(false); + close(fd); +#endif + } + debug_return_bool(true); +} + +/* * Monitor process that creates a new session with the controlling tty, * resets signal handlers and forks a child to call exec_cmnd_pty(). * Waits for status changes from the command and relays them to the @@ -556,9 +537,11 @@ int errpipe[2]; debug_decl(exec_monitor, SUDO_DEBUG_EXEC); - /* The pty leader is not used by the monitor. */ + /* Close fds the monitor doesn't use. */ if (io_fds[SFD_LEADER] != -1) close(io_fds[SFD_LEADER]); + if (io_fds[SFD_USERTTY] != -1) + close(io_fds[SFD_USERTTY]); /* Ignore any SIGTTIN or SIGTTOU we receive (shouldn't be possible). */ memset(&sa, 0, sizeof(sa)); @@ -570,10 +553,6 @@ if (sudo_sigaction(SIGTTOU, &sa, NULL) != 0) sudo_warn(U_("unable to set handler for signal %d"), SIGTTOU); - /* If we are starting in the foreground, the pty was already initialized. */ - if (foreground) - tty_initialized = true; - /* * Start a new session with the parent as the session leader * and the follower device as the controlling terminal. @@ -583,7 +562,7 @@ sudo_warn("setsid"); goto bad; } - if (pty_make_controlling() == -1) { + if (!pty_make_controlling(details->tty)) { sudo_warn("%s", U_("unable to set controlling tty")); goto bad; } @@ -630,8 +609,6 @@ /* child */ close(backchannel); close(errpipe[0]); - if (io_fds[SFD_USERTTY] != -1) - close(io_fds[SFD_USERTTY]); /* setup tty and exec command */ exec_cmnd_pty(details, oset, foreground, intercept_fd, errpipe[1]); if (write(errpipe[1], &errno, sizeof(int)) == -1) @@ -675,7 +652,7 @@ setpgid(mc.cmnd_pid, mc.cmnd_pgrp); /* Make the command the foreground process for the pty follower. */ - if (foreground && !ISSET(details->flags, CD_EXEC_BG)) { + if (foreground) { if (tcsetpgrp(io_fds[SFD_FOLLOWER], mc.cmnd_pgrp) == -1) { sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO, "%s: unable to set foreground pgrp to %d (command)", diff -Nru sudo-1.9.13p3/src/exec_nopty.c sudo-1.9.14p2/src/exec_nopty.c --- sudo-1.9.13p3/src/exec_nopty.c 2023-03-04 15:50:12.000000000 +0000 +++ sudo-1.9.14p2/src/exec_nopty.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2009-2022 Todd C. Miller + * Copyright (c) 2009-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -207,8 +207,9 @@ * Allocates events for the signal pipe and error pipe. */ static void -fill_exec_closure(struct exec_closure *ec, - struct command_status *cstat, struct command_details *details, int errfd) +fill_exec_closure(struct exec_closure *ec, struct command_status *cstat, + struct command_details *details, const struct user_details *user_details, + struct sudo_event_base *evbase, int errfd) { debug_decl(fill_exec_closure, SUDO_DEBUG_EXEC); @@ -217,12 +218,11 @@ ec->ppgrp = getpgrp(); ec->cstat = cstat; ec->details = details; - ec->rows = user_details.ts_rows; - ec->cols = user_details.ts_cols; + ec->rows = user_details->ts_rows; + ec->cols = user_details->ts_cols; /* Setup event base and events. */ - ec->evbase = details->evbase; - details->evbase = NULL; + ec->evbase = evbase; /* Event for command status via errfd. */ ec->backchannel_event = sudo_ev_alloc(errfd, @@ -472,6 +472,7 @@ bool interpose[3] = { false, false, false }; struct plugin_container *plugin; bool want_winch = false; + struct stat sb; debug_decl(interpose_pipes, SUDO_DEBUG_EXEC); /* @@ -496,33 +497,33 @@ * use a pipe to interpose ourselves. */ if (interpose[STDIN_FILENO]) { - if (!isatty(STDIN_FILENO)) { + if (!sudo_isatty(STDIN_FILENO, &sb)) { sudo_debug_printf(SUDO_DEBUG_INFO, "stdin not a tty, creating a pipe"); if (pipe2(io_pipe[STDIN_FILENO], O_CLOEXEC) != 0) sudo_fatal("%s", U_("unable to create pipe")); io_buf_new(STDIN_FILENO, io_pipe[STDIN_FILENO][1], - log_stdin, read_callback, write_callback, ec, &iobufs); + log_stdin, read_callback, write_callback, ec); } } if (interpose[STDOUT_FILENO]) { - if (!isatty(STDOUT_FILENO)) { + if (!sudo_isatty(STDOUT_FILENO, &sb)) { sudo_debug_printf(SUDO_DEBUG_INFO, "stdout not a tty, creating a pipe"); if (pipe2(io_pipe[STDOUT_FILENO], O_CLOEXEC) != 0) sudo_fatal("%s", U_("unable to create pipe")); io_buf_new(io_pipe[STDOUT_FILENO][0], STDOUT_FILENO, - log_stdout, read_callback, write_callback, ec, &iobufs); + log_stdout, read_callback, write_callback, ec); } } if (interpose[STDERR_FILENO]) { - if (!isatty(STDERR_FILENO)) { + if (!sudo_isatty(STDERR_FILENO, &sb)) { sudo_debug_printf(SUDO_DEBUG_INFO, "stderr not a tty, creating a pipe"); if (pipe2(io_pipe[STDERR_FILENO], O_CLOEXEC) != 0) sudo_fatal("%s", U_("unable to create pipe")); io_buf_new(io_pipe[STDERR_FILENO][0], STDERR_FILENO, - log_stderr, read_callback, write_callback, ec, &iobufs); + log_stderr, read_callback, write_callback, ec); } } if (want_winch) { @@ -535,7 +536,9 @@ * Execute a command and wait for it to finish. */ void -exec_nopty(struct command_details *details, struct command_status *cstat) +exec_nopty(struct command_details *details, + const struct user_details *user_details, + struct sudo_event_base *evbase, struct command_status *cstat) { int io_pipe[3][2] = { { -1, -1 }, { -1, -1 }, { -1, -1 } }; int errpipe[2], intercept_sv[2] = { -1, -1 }; @@ -658,7 +661,7 @@ * Fill in exec closure, allocate event base, signal events and * the error pipe event. */ - fill_exec_closure(&ec, cstat, details, errpipe[0]); + fill_exec_closure(&ec, cstat, details, user_details, evbase, errpipe[0]); if (ISSET(details->flags, CD_INTERCEPT|CD_LOG_SUBCMDS)) { int rc = 1; @@ -680,7 +683,7 @@ } /* Enable any I/O log events. */ - add_io_events(ec.evbase); + add_io_events(&ec); /* Restore signal mask now that signal handlers are setup. */ sigprocmask(SIG_SETMASK, &oset, NULL); @@ -763,8 +766,8 @@ /* If the main command is suspended, suspend sudo too. */ if (pid == ec->cmnd_pid) { - suspend_sudo_nopty(ec, signo, ec->sudo_pid, ec->ppgrp, - ec->cmnd_pid); + sudo_suspend_parent(signo, ec->sudo_pid, ec->ppgrp, + ec->cmnd_pid, ec, log_suspend); } } else { if (WIFSIGNALED(status)) { diff -Nru sudo-1.9.13p3/src/exec_ptrace.c sudo-1.9.14p2/src/exec_ptrace.c --- sudo-1.9.13p3/src/exec_ptrace.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/src/exec_ptrace.c 2023-07-15 15:39:12.000000000 +0000 @@ -1525,9 +1525,20 @@ if (strcmp(argv[i], closure->run_argv[i]) != 0) { if (i == 0) { /* Special case for argv[0] which may contain the basename. */ - const char *base = sudo_basename(closure->run_argv[0]); - if (strcmp(argv[i], base) == 0) - continue; + const char *base; + if (argv[0][0] == '/') { + if (closure->run_argv[0][0] != '/') { + base = sudo_basename(argv[0]); + if (strcmp(base, closure->run_argv[0]) == 0) + continue; + } + } else { + if (closure->run_argv[0][0] == '/') { + base = sudo_basename(closure->run_argv[0]); + if (strcmp(argv[0], base) == 0) + continue; + } + } } ret = false; sudo_warnx( @@ -1695,7 +1706,7 @@ struct sudo_ptrace_regs regs; bool path_mismatch = false; bool argv_mismatch = false; - char cwd[PATH_MAX]; + char cwd[PATH_MAX], *orig_argv0; unsigned long msg; bool ret = false; int i, oldcwd = -1; @@ -1784,6 +1795,7 @@ } /* We can only pass the pathname to exececute via argv[0] (plugin API). */ + orig_argv0 = argv[0] ? argv[0] : (char *)""; argv[0] = pathname; if (argc == 0) { /* Rewrite an empty argv[] with the path to execute. */ @@ -1819,6 +1831,18 @@ */ if (strcmp(pathname, closure->command) != 0) path_mismatch = true; + if (!path_mismatch) { + /* Path unchanged, restore original argv[0]. */ + if (strcmp(argv[0], orig_argv0) != 0) { + argv[0] = orig_argv0; + free(closure->run_argv[0]); + closure->run_argv[0] = strdup(orig_argv0); + if (closure->run_argv[0] == NULL) { + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); + } + } + } for (i = 0; closure->run_argv[i] != NULL && argv[i] != NULL; i++) { if (strcmp(closure->run_argv[i], argv[i]) != 0) { argv_mismatch = true; @@ -1912,7 +1936,7 @@ } } if (closure->state == POLICY_ACCEPT) { - if (ISSET(closure->details->flags, CD_INTERCEPT_VERIFY)) { + if (ISSET(closure->details->flags, CD_INTERCEPT|CD_INTERCEPT_VERIFY)) { /* Verify execve(2) args post-exec. */ if (!ptrace_verify_post_exec(pid, ®s, closure)) { if (errno != ESRCH) diff -Nru sudo-1.9.13p3/src/exec_pty.c sudo-1.9.14p2/src/exec_pty.c --- sudo-1.9.13p3/src/exec_pty.c 2023-03-04 15:50:12.000000000 +0000 +++ sudo-1.9.14p2/src/exec_pty.c 2023-07-15 15:39:40.000000000 +0000 @@ -56,97 +56,114 @@ TAILQ_HEAD(monitor_message_list, monitor_message); static struct monitor_message_list monitor_messages = TAILQ_HEAD_INITIALIZER(monitor_messages); - -static char ptyname[PATH_MAX]; -static bool foreground, pipeline; -static const char *utmp_user; +static unsigned int term_raw_flags; static void sync_ttysize(struct exec_closure *ec); -static pid_t check_foreground(struct exec_closure *ec); static void schedule_signal(struct exec_closure *ec, int signo); /* - * Cleanup hook for sudo_fatal()/sudo_fatalx() - */ -void -pty_cleanup(void) -{ - debug_decl(cleanup, SUDO_DEBUG_EXEC); - - if (ttymode != TERM_COOKED) { - if (!sudo_term_restore(io_fds[SFD_USERTTY], false)) - sudo_warn("%s", U_("unable to restore terminal settings")); - } - if (utmp_user != NULL) - utmp_logout(ptyname, 0); - - debug_return; -} - -/* * Allocate a pty if /dev/tty is a tty. - * Fills in io_fds[SFD_USERTTY], io_fds[SFD_LEADER], io_fds[SFD_FOLLOWER] - * and ptyname globals. + * Fills in io_fds[SFD_USERTTY], io_fds[SFD_LEADER] and io_fds[SFD_FOLLOWER]. + * Returns the dyamically allocated pty name on success, NULL on failure. */ -static bool -pty_setup(struct command_details *details, const char *tty) +static char * +pty_setup(struct command_details *details) { + char *ptyname = NULL; debug_decl(pty_setup, SUDO_DEBUG_EXEC); io_fds[SFD_USERTTY] = open(_PATH_TTY, O_RDWR); if (io_fds[SFD_USERTTY] == -1) { sudo_debug_printf(SUDO_DEBUG_INFO, "%s: no %s, not allocating a pty", __func__, _PATH_TTY); - debug_return_bool(false); + debug_return_ptr(NULL); } - if (!get_pty(&io_fds[SFD_LEADER], &io_fds[SFD_FOLLOWER], - ptyname, sizeof(ptyname), details->cred.euid)) + ptyname = get_pty(&io_fds[SFD_LEADER], &io_fds[SFD_FOLLOWER], + details->cred.euid); + if (ptyname == NULL) sudo_fatal("%s", U_("unable to allocate pty")); - /* Update tty name in command details (used by SELinux and AIX). */ - details->tty = ptyname; - /* Add entry to utmp/utmpx? */ - if (ISSET(details->flags, CD_SET_UTMP)) { - utmp_user = - details->utmp_user ? details->utmp_user : user_details.username; - utmp_login(tty, ptyname, io_fds[SFD_FOLLOWER], utmp_user); - } + if (ISSET(details->flags, CD_SET_UTMP)) + utmp_login(details->tty, ptyname, io_fds[SFD_FOLLOWER], details->utmp_user); + + /* Update tty name in command details (used by monitor, SELinux, AIX). */ + details->tty = ptyname; sudo_debug_printf(SUDO_DEBUG_INFO, "%s: %s fd %d, pty leader fd %d, pty follower fd %d", __func__, _PATH_TTY, io_fds[SFD_USERTTY], io_fds[SFD_LEADER], io_fds[SFD_FOLLOWER]); - debug_return_bool(true); + debug_return_str(ptyname); } /* - * Make the tty follower the controlling tty. - * This is only used by the monitor but ptyname[] is static. + * Restore user's terminal settings and update utmp, as needed. */ -int -pty_make_controlling(void) +static void +pty_cleanup_int(struct exec_closure *ec, int wstatus, bool init_only) { - if (io_fds[SFD_FOLLOWER] != -1) { -#ifdef TIOCSCTTY - if (ioctl(io_fds[SFD_FOLLOWER], TIOCSCTTY, NULL) != 0) - return -1; -#else - /* Set controlling tty by reopening pty follower. */ - int fd = open(ptyname, O_RDWR); - if (fd == -1) - return -1; - close(fd); -#endif + static struct exec_closure *saved_ec; + debug_decl(pty_cleanup, SUDO_DEBUG_EXEC); + + /* If initializing, just store a pointer to the closure and return. */ + if (init_only) { + saved_ec = ec; + debug_return; + } + + /* Use the stored closure if one is not specified. */ + if (ec == NULL) { + if (saved_ec == NULL) + debug_return; + ec = saved_ec; } - return 0; + + /* Restore terminal settings. */ + if (ec->term_raw) { + /* Only restore the terminal if sudo is the foreground process. */ + const pid_t tcpgrp = tcgetpgrp(io_fds[SFD_USERTTY]); + if (tcpgrp == ec->ppgrp) { + if (sudo_term_restore(io_fds[SFD_USERTTY], false)) + ec->term_raw = false; + else + sudo_warn("%s", U_("unable to restore terminal settings")); + } + } + + /* Update utmp */ + if (ISSET(ec->details->flags, CD_SET_UTMP) && ec->ptyname != NULL) + utmp_logout(ec->ptyname, wstatus); + + debug_return; +} + +static inline void +pty_cleanup(struct exec_closure *ec, int wstatus) +{ + pty_cleanup_int(ec, wstatus, false); +} + +static inline void +pty_cleanup_init(struct exec_closure *ec) +{ + pty_cleanup_int(ec, 0, true); +} + +/* + * Cleanup hook for sudo_fatal()/sudo_fatalx() + */ +static void +pty_cleanup_hook(void) +{ + pty_cleanup_int(NULL, 0, false); } /* - * Check whether we are running in the foregroup. - * Updates the foreground global and updates the window size. + * Check whether sudo is running in the foreground. + * Updates the foreground flag in the closure. * Returns 0 if there is no tty, the foreground process group ID * on success, or -1 on failure (tty revoked). */ @@ -158,16 +175,51 @@ if (io_fds[SFD_USERTTY] != -1) { if ((ret = tcgetpgrp(io_fds[SFD_USERTTY])) != -1) { - foreground = ret == ec->ppgrp; - - /* Also check for window size changes. */ - sync_ttysize(ec); + ec->foreground = ret == ec->ppgrp; } } debug_return_int(ret); } /* + * Restore the terminal when sudo is resumed in response to SIGCONT. + */ +static bool +resume_terminal(struct exec_closure *ec) +{ + debug_decl(resume_terminal, SUDO_DEBUG_EXEC); + + if (check_foreground(ec) == -1) { + /* User's tty was revoked. */ + debug_return_bool(false); + } + + /* Update the pty settings based on the user's terminal. */ + if (!sudo_term_copy(io_fds[SFD_USERTTY], io_fds[SFD_LEADER])) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO, + "%s: unable to copy terminal settings to pty", __func__); + debug_return_bool(false); + } + sync_ttysize(ec); + + sudo_debug_printf(SUDO_DEBUG_INFO, "parent is in %s (%s -> %s)", + ec->foreground ? "foreground" : "background", + ec->term_raw ? "raw" : "cooked", + ec->foreground ? "raw" : "cooked"); + + if (ec->foreground) { + /* Foreground process, set tty to raw mode. */ + if (sudo_term_raw(io_fds[SFD_USERTTY], term_raw_flags)) + ec->term_raw = true; + } else { + /* Background process, no access to tty. */ + ec->term_raw = false; + } + + debug_return_bool(true); +} + +/* * Suspend sudo if the underlying command is suspended. * Returns SIGCONT_FG if the command should be resumed in the * foreground or SIGCONT_BG if it is a background process. @@ -176,10 +228,24 @@ suspend_sudo_pty(struct exec_closure *ec, int signo) { char signame[SIG2STR_MAX]; - struct sigaction sa, osa; + struct sigaction sa, osa, saved_sigcont; int ret = 0; debug_decl(suspend_sudo_pty, SUDO_DEBUG_EXEC); + /* + * Ignore SIGCONT when we suspend to avoid calling resume_terminal() + * multiple times. + */ + memset(&sa, 0, sizeof(sa)); + sigemptyset(&sa.sa_mask); + sa.sa_flags = SA_RESTART; + sa.sa_handler = SIG_DFL; + if (sudo_sigaction(SIGCONT, &sa, &saved_sigcont) != 0) + sudo_warn("%s", U_("unable to set handler for SIGCONT")); + + if (sig2str(signo, signame) == -1) + (void)snprintf(signame, sizeof(signame), "%d", signo); + switch (signo) { case SIGTTOU: case SIGTTIN: @@ -187,16 +253,19 @@ * If sudo is already the foreground process, just resume the command * in the foreground. If not, we'll suspend sudo and resume later. */ - if (!foreground) { + if (!ec->foreground) { if (check_foreground(ec) == -1) { /* User's tty was revoked. */ break; } } - if (foreground) { - if (ttymode != TERM_RAW) { - if (sudo_term_raw(io_fds[SFD_USERTTY], 0)) - ttymode = TERM_RAW; + if (ec->foreground) { + sudo_debug_printf(SUDO_DEBUG_INFO, + "%s: command received SIG%s, parent running in the foregound", + __func__, signame); + if (!ec->term_raw) { + if (sudo_term_raw(io_fds[SFD_USERTTY], term_raw_flags)) + ec->term_raw = true; } ret = SIGCONT_FG; /* resume command in foreground */ break; @@ -204,30 +273,27 @@ FALLTHROUGH; case SIGSTOP: case SIGTSTP: + default: /* Flush any remaining output and deschedule I/O events. */ del_io_events(true); /* Restore original tty mode before suspending. */ - if (ttymode != TERM_COOKED) { - if (!sudo_term_restore(io_fds[SFD_USERTTY], false)) + if (ec->term_raw) { + if (sudo_term_restore(io_fds[SFD_USERTTY], false)) + ec->term_raw = false; + else sudo_warn("%s", U_("unable to restore terminal settings")); } /* Log the suspend event. */ log_suspend(ec, signo); - if (sig2str(signo, signame) == -1) - (void)snprintf(signame, sizeof(signame), "%d", signo); - /* Suspend self and continue command when we resume. */ if (signo != SIGSTOP) { - memset(&sa, 0, sizeof(sa)); - sigemptyset(&sa.sa_mask); - sa.sa_flags = SA_RESTART; - sa.sa_handler = SIG_DFL; if (sudo_sigaction(signo, &sa, &osa) != 0) - sudo_warn(U_("unable to set handler for signal %d"), signo); + sudo_warn(U_("unable to set handler for SIG%s"), signame); } + /* * We stop sudo's process group, even if sudo is not the process * group leader. If we only send the signal to sudo itself, @@ -237,56 +303,48 @@ * If the process group leader is no longer present, we must kill * the command since there will be no one to resume us. */ - sudo_debug_printf(SUDO_DEBUG_INFO, "killpg(%d, SIG%s) [parent]", - (int)ec->ppgrp, signame); + sudo_debug_printf(SUDO_DEBUG_INFO, "%s: killpg(%d, SIG%s) [parent]", + __func__, (int)ec->ppgrp, signame); if ((ec->ppgrp != ec->sudo_pid && kill(ec->ppgrp, 0) == -1) || killpg(ec->ppgrp, signo) == -1) { sudo_debug_printf(SUDO_DEBUG_ERROR, - "no parent to suspend, terminating command."); + "%s: no parent to suspend, terminating command.", __func__); terminate_command(ec->cmnd_pid, true); ec->cmnd_pid = -1; - break; } + if (signo != SIGSTOP) { + if (sudo_sigaction(signo, &osa, NULL) != 0) + sudo_warn(U_("unable to restore handler for SIG%s"), signame); + } + + /* If we failed to suspend, the command is no longer running. */ + if (ec->cmnd_pid == -1) + break; + /* Log the resume event. */ log_suspend(ec, SIGCONT); - /* Check foreground/background status on resume. */ - if (check_foreground(ec) == -1) { - /* User's tty was revoked. */ + /* Update the pty's terminal settings and restore /dev/tty settings. */ + if (!resume_terminal(ec)) break; - } /* * We always resume the command in the foreground if sudo itself - * is the foreground process. This helps work around poorly behaved - * programs that catch SIGTTOU/SIGTTIN but suspend themselves with - * SIGSTOP. At worst, sudo will go into the background but upon - * resume the command will be runnable. Otherwise, we can get into - * a situation where the command will immediately suspend itself. + * is the foreground process (and we were able to set /dev/tty to + * raw mode). This helps work around poorly behaved programs that + * catch SIGTTOU/SIGTTIN but suspend themselves with SIGSTOP. At + * worst, sudo will go into the background but upon resume the + * command will be runnable. Otherwise, we can get into a + * situation where the command will immediately suspend itself. */ - sudo_debug_printf(SUDO_DEBUG_INFO, "parent is in %s, ttymode %d -> %d", - foreground ? "foreground" : "background", ttymode, - foreground ? TERM_RAW : TERM_COOKED); - - if (foreground) { - /* Foreground process, set tty to raw mode. */ - if (sudo_term_raw(io_fds[SFD_USERTTY], 0)) - ttymode = TERM_RAW; - } else { - /* Background process, no access to tty. */ - ttymode = TERM_COOKED; - } - - if (signo != SIGSTOP) { - if (sudo_sigaction(signo, &osa, NULL) != 0) - sudo_warn(U_("unable to restore handler for signal %d"), signo); - } - - ret = ttymode == TERM_RAW ? SIGCONT_FG : SIGCONT_BG; + ret = ec->term_raw ? SIGCONT_FG : SIGCONT_BG; break; } + if (sudo_sigaction(SIGCONT, &saved_sigcont, NULL) != 0) + sudo_warn("%s", U_("unable to restore handler for SIGCONT")); + debug_return_int(ret); } @@ -475,7 +533,7 @@ */ if (iob->revent != NULL && iob->len != sizeof(iob->buf)) { if (!USERTTY_EVENT(iob->revent) || - (ttymode == TERM_RAW && iob->ec->cmnd_pid != -1)) { + (iob->ec->term_raw && iob->ec->cmnd_pid != -1)) { if (sudo_ev_add(evbase, iob->revent, NULL, false) == -1) sudo_fatal("%s", U_("unable to add event to queue")); } @@ -505,31 +563,20 @@ del_io_events(false); free_io_bufs(); - /* Restore terminal settings. */ - if (ttymode != TERM_COOKED) { - /* Only restore the terminal if sudo is the foreground process. */ - const pid_t tcpgrp = tcgetpgrp(io_fds[SFD_USERTTY]); - if (tcpgrp == ec->ppgrp) { - if (!sudo_term_restore(io_fds[SFD_USERTTY], false)) - sudo_warn("%s", U_("unable to restore terminal settings")); - } - } - - /* Update utmp */ - if (utmp_user != NULL) - utmp_logout(ptyname, cstat->type == CMD_WSTATUS ? cstat->val : 0); + /* Restore terminal settings and update utmp. */ + pty_cleanup(ec, cstat->type == CMD_WSTATUS ? cstat->val : 0); debug_return; } /* - * Send command status to the monitor (signal or window size change). + * Send command status to the monitor (currently just signal forwarding). */ static void send_command_status(struct exec_closure *ec, int type, int val) { struct monitor_message *msg; - debug_decl(send_command, SUDO_DEBUG_EXEC); + debug_decl(send_command_status, SUDO_DEBUG_EXEC); if ((msg = calloc(1, sizeof(*msg))) == NULL) sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); @@ -552,19 +599,22 @@ static void schedule_signal(struct exec_closure *ec, int signo) { - char signame[SIG2STR_MAX]; debug_decl(schedule_signal, SUDO_DEBUG_EXEC); if (signo == 0) debug_return; - if (signo == SIGCONT_FG) - strlcpy(signame, "CONT_FG", sizeof(signame)); - else if (signo == SIGCONT_BG) - strlcpy(signame, "CONT_BG", sizeof(signame)); - else if (sig2str(signo, signame) == -1) - (void)snprintf(signame, sizeof(signame), "%d", signo); - sudo_debug_printf(SUDO_DEBUG_DIAG, "scheduled SIG%s for command", signame); + if (sudo_debug_needed(SUDO_DEBUG_DIAG)) { + char signame[SIG2STR_MAX]; + if (signo == SIGCONT_FG) + strlcpy(signame, "CONT_FG", sizeof(signame)); + else if (signo == SIGCONT_BG) + strlcpy(signame, "CONT_BG", sizeof(signame)); + else if (sig2str(signo, signame) == -1) + (void)snprintf(signame, sizeof(signame), "%d", signo); + sudo_debug_printf(SUDO_DEBUG_DIAG, "scheduled SIG%s for command", + signame); + } send_command_status(ec, CMD_SIGNO, signo); @@ -663,7 +713,7 @@ signo = suspend_sudo_pty(ec, WSTOPSIG(cstat.val)); schedule_signal(ec, signo); /* Re-enable I/O events */ - add_io_events(ec->evbase); + add_io_events(ec); } else { /* Command exited or was killed, either way we are done. */ sudo_debug_printf(SUDO_DEBUG_INFO, "command exited or was killed"); @@ -728,12 +778,16 @@ if (pid == ec->monitor_pid) ec->monitor_pid = -1; } else if (WIFSIGNALED(status)) { - char signame[SIG2STR_MAX]; - - if (sig2str(WTERMSIG(status), signame) == -1) - (void)snprintf(signame, sizeof(signame), "%d", WTERMSIG(status)); - sudo_debug_printf(SUDO_DEBUG_INFO, "%s: process %d killed, SIG%s", - __func__, (int)pid, signame); + if (sudo_debug_needed(SUDO_DEBUG_INFO)) { + char signame[SIG2STR_MAX]; + if (sig2str(WTERMSIG(status), signame) == -1) { + (void)snprintf(signame, sizeof(signame), "%d", + WTERMSIG(status)); + } + sudo_debug_printf(SUDO_DEBUG_INFO, + "%s: process %d killed, SIG%s", + __func__, (int)pid, signame); + } if (pid == ec->monitor_pid) ec->monitor_pid = -1; } else if (WIFSTOPPED(status)) { @@ -754,7 +808,7 @@ kill(pid, SIGCONT); schedule_signal(ec, n); /* Re-enable I/O events */ - add_io_events(ec->evbase); + add_io_events(ec); } else { sudo_debug_printf(SUDO_DEBUG_WARN, "%s: unexpected wait status 0x%x for process (%d)", @@ -769,22 +823,27 @@ { struct sudo_ev_siginfo_container *sc = v; struct exec_closure *ec = sc->closure; - char signame[SIG2STR_MAX]; debug_decl(signal_cb_pty, SUDO_DEBUG_EXEC); if (ec->monitor_pid == -1) debug_return; - if (sig2str(signo, signame) == -1) - (void)snprintf(signame, sizeof(signame), "%d", signo); - sudo_debug_printf(SUDO_DEBUG_DIAG, - "%s: evbase %p, monitor: %d, signo %s(%d), cstat %p", __func__, + if (sudo_debug_needed(SUDO_DEBUG_DIAG)) { + char signame[SIG2STR_MAX]; + if (sig2str(signo, signame) == -1) + (void)snprintf(signame, sizeof(signame), "%d", signo); + sudo_debug_printf(SUDO_DEBUG_DIAG, + "%s: evbase %p, monitor: %d, signo %s(%d), cstat %p", __func__, ec->evbase, (int)ec->monitor_pid, signame, signo, ec->cstat); + } switch (signo) { case SIGCHLD: handle_sigchld_pty(ec); break; + case SIGCONT: + resume_terminal(ec); + break; case SIGWINCH: sync_ttysize(ec); break; @@ -823,7 +882,6 @@ fwdchannel_cb(int sock, int what, void *v) { struct exec_closure *ec = v; - char signame[SIG2STR_MAX]; struct monitor_message *msg; ssize_t nsent; debug_decl(fwdchannel_cb, SUDO_DEBUG_EXEC); @@ -831,19 +889,19 @@ while ((msg = TAILQ_FIRST(&monitor_messages)) != NULL) { switch (msg->cstat.type) { case CMD_SIGNO: - if (msg->cstat.val == SIGCONT_FG) - strlcpy(signame, "CONT_FG", sizeof(signame)); - else if (msg->cstat.val == SIGCONT_BG) - strlcpy(signame, "CONT_BG", sizeof(signame)); - else if (sig2str(msg->cstat.val, signame) == -1) - (void)snprintf(signame, sizeof(signame), "%d", msg->cstat.val); - sudo_debug_printf(SUDO_DEBUG_INFO, - "sending SIG%s to monitor over backchannel", signame); - break; - case CMD_TTYWINCH: - sudo_debug_printf(SUDO_DEBUG_INFO, "sending window size change " - "to monitor over backchannelL %d x %d", - msg->cstat.val & 0xffff, (msg->cstat.val >> 16) & 0xffff); + if (sudo_debug_needed(SUDO_DEBUG_INFO)) { + char signame[SIG2STR_MAX]; + if (msg->cstat.val == SIGCONT_FG) + strlcpy(signame, "CONT_FG", sizeof(signame)); + else if (msg->cstat.val == SIGCONT_BG) + strlcpy(signame, "CONT_BG", sizeof(signame)); + else if (sig2str(msg->cstat.val, signame) == -1) { + (void)snprintf(signame, sizeof(signame), "%d", + msg->cstat.val); + } + sudo_debug_printf(SUDO_DEBUG_INFO, + "sending SIG%s to monitor over backchannel", signame); + } break; default: sudo_debug_printf(SUDO_DEBUG_INFO, @@ -878,8 +936,8 @@ */ static void fill_exec_closure(struct exec_closure *ec, struct command_status *cstat, - struct command_details *details, pid_t sudo_pid, pid_t ppgrp, - int backchannel) + struct command_details *details, const struct user_details *user_details, + struct sudo_event_base *evbase, pid_t sudo_pid, pid_t ppgrp, int backchannel) { debug_decl(fill_exec_closure, SUDO_DEBUG_EXEC); @@ -889,16 +947,15 @@ ec->cmnd_pid = -1; ec->cstat = cstat; ec->details = details; - ec->rows = user_details.ts_rows; - ec->cols = user_details.ts_cols; + ec->rows = user_details->ts_rows; + ec->cols = user_details->ts_cols; /* Reset cstat for running the command. */ cstat->type = CMD_INVALID; cstat->val = 0; /* Setup event base and events. */ - ec->evbase = details->evbase; - details->evbase = NULL; + ec->evbase = evbase; /* Event for command status via backchannel. */ ec->backchannel_event = sudo_ev_alloc(backchannel, @@ -973,6 +1030,13 @@ if (sudo_ev_add(ec->evbase, ec->sigchld_event, NULL, false) == -1) sudo_fatal("%s", U_("unable to add event to queue")); + ec->sigcont_event = sudo_ev_alloc(SIGCONT, + SUDO_EV_SIGINFO, signal_cb_pty, ec); + if (ec->sigcont_event == NULL) + sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + if (sudo_ev_add(ec->evbase, ec->sigcont_event, NULL, false) == -1) + sudo_fatal("%s", U_("unable to add event to queue")); + ec->sigwinch_event = sudo_ev_alloc(SIGWINCH, SUDO_EV_SIGINFO, signal_cb_pty, ec); if (ec->sigwinch_event == NULL) @@ -999,7 +1063,9 @@ * we fact that we have two different controlling terminals to deal with. */ bool -exec_pty(struct command_details *details, struct command_status *cstat) +exec_pty(struct command_details *details, + const struct user_details *user_details, struct sudo_event_base *evbase, + struct command_status *cstat) { int io_pipe[3][2] = { { -1, -1 }, { -1, -1 }, { -1, -1 } }; bool interpose[3] = { false, false, false }; @@ -1007,6 +1073,7 @@ struct exec_closure ec = { 0 }; struct plugin_container *plugin; int evloop_retries = -1; + bool cmnd_foreground; sigset_t set, oset; struct sigaction sa; struct stat sb; @@ -1016,9 +1083,14 @@ /* * Allocate a pty if sudo is running in a terminal. */ - if (!pty_setup(details, user_details.tty)) + ec.ptyname = pty_setup(details); + if (ec.ptyname == NULL) debug_return_bool(false); + /* Register cleanup function */ + pty_cleanup_init(&ec); + sudo_fatal_callback_register(pty_cleanup_hook); + /* * We communicate with the monitor over a bi-directional pair of sockets. * Parent sends signal info to monitor and monitor sends back wait status. @@ -1079,10 +1151,8 @@ /* * Setup stdin/stdout/stderr for command, to be duped after forking. - * In background mode there is no stdin. */ - if (!ISSET(details->flags, CD_BACKGROUND)) - io_fds[SFD_STDIN] = io_fds[SFD_FOLLOWER]; + io_fds[SFD_STDIN] = io_fds[SFD_FOLLOWER]; io_fds[SFD_STDOUT] = io_fds[SFD_FOLLOWER]; io_fds[SFD_STDERR] = io_fds[SFD_FOLLOWER]; @@ -1090,45 +1160,46 @@ /* Read from /dev/tty, write to pty leader */ if (!ISSET(details->flags, CD_BACKGROUND)) { io_buf_new(io_fds[SFD_USERTTY], io_fds[SFD_LEADER], - log_ttyin, read_callback, write_callback, &ec, &iobufs); + log_ttyin, read_callback, write_callback, &ec); } /* Read from pty leader, write to /dev/tty */ io_buf_new(io_fds[SFD_LEADER], io_fds[SFD_USERTTY], - log_ttyout, read_callback, write_callback, &ec, &iobufs); + log_ttyout, read_callback, write_callback, &ec); /* Are we the foreground process? */ - foreground = tcgetpgrp(io_fds[SFD_USERTTY]) == ppgrp; + ec.foreground = tcgetpgrp(io_fds[SFD_USERTTY]) == ppgrp; sudo_debug_printf(SUDO_DEBUG_INFO, "sudo is running in the %s", - foreground ? "foreground" : "background"); + ec.foreground ? "foreground" : "background"); } /* * If stdin, stdout or stderr is not a tty and logging is enabled, * use a pipe to interpose ourselves instead of using the pty fd. + * We always use a pipe for stdin when in background mode. */ - if (io_fds[SFD_STDIN] == -1 || !isatty(STDIN_FILENO)) { + if (!sudo_isatty(STDIN_FILENO, &sb)) { if (!interpose[STDIN_FILENO]) { /* Not logging stdin, do not interpose. */ sudo_debug_printf(SUDO_DEBUG_INFO, "stdin not a tty, not logging"); - if (fstat(STDIN_FILENO, &sb) == 0 && S_ISFIFO(sb.st_mode)) - pipeline = true; + if (S_ISFIFO(sb.st_mode)) + SET(details->flags, CD_EXEC_BG); io_fds[SFD_STDIN] = dup(STDIN_FILENO); if (io_fds[SFD_STDIN] == -1) sudo_fatal("dup"); } else { sudo_debug_printf(SUDO_DEBUG_INFO, "stdin not a tty, creating a pipe"); - pipeline = true; + SET(details->flags, CD_EXEC_BG); if (pipe2(io_pipe[STDIN_FILENO], O_CLOEXEC) != 0) sudo_fatal("%s", U_("unable to create pipe")); io_buf_new(STDIN_FILENO, io_pipe[STDIN_FILENO][1], - log_stdin, read_callback, write_callback, &ec, &iobufs); + log_stdin, read_callback, write_callback, &ec); io_fds[SFD_STDIN] = io_pipe[STDIN_FILENO][0]; } - if (foreground && ppgrp != sudo_pid) { + if (ec.foreground && ppgrp != sudo_pid) { /* * If sudo is not the process group leader and stdin is not * a tty we may be running as a background job via a shell @@ -1137,35 +1208,52 @@ */ SET(details->flags, CD_EXEC_BG); } + } else if (ISSET(details->flags, CD_BACKGROUND)) { + /* + * Running in background (sudo -b), no access to terminal input. + * In non-pty mode, the command runs in an orphaned process + * group and reads from the controlling terminal fail with EIO. + * We cannot do the same while running in a pty but if we set + * stdin to a half-closed pipe, reads from it will get EOF. + */ + sudo_debug_printf(SUDO_DEBUG_INFO, + "terminal input not available, creating empty pipe"); + SET(details->flags, CD_EXEC_BG); + if (pipe2(io_pipe[STDIN_FILENO], O_CLOEXEC) != 0) + sudo_fatal("%s", U_("unable to create pipe")); + io_fds[SFD_STDIN] = io_pipe[STDIN_FILENO][0]; + close(io_pipe[STDIN_FILENO][1]); + io_pipe[STDIN_FILENO][1] = -1; } - if (io_fds[SFD_STDOUT] == -1 || !isatty(STDOUT_FILENO)) { + if (!sudo_isatty(STDOUT_FILENO, &sb)) { if (!interpose[STDOUT_FILENO]) { /* Not logging stdout, do not interpose. */ sudo_debug_printf(SUDO_DEBUG_INFO, "stdout not a tty, not logging"); - if (fstat(STDOUT_FILENO, &sb) == 0 && S_ISFIFO(sb.st_mode)) - pipeline = true; + if (S_ISFIFO(sb.st_mode)) { + SET(details->flags, CD_EXEC_BG); + term_raw_flags = SUDO_TERM_OFLAG; + } io_fds[SFD_STDOUT] = dup(STDOUT_FILENO); if (io_fds[SFD_STDOUT] == -1) sudo_fatal("dup"); } else { sudo_debug_printf(SUDO_DEBUG_INFO, "stdout not a tty, creating a pipe"); - pipeline = true; + SET(details->flags, CD_EXEC_BG); + term_raw_flags = SUDO_TERM_OFLAG; if (pipe2(io_pipe[STDOUT_FILENO], O_CLOEXEC) != 0) sudo_fatal("%s", U_("unable to create pipe")); io_buf_new(io_pipe[STDOUT_FILENO][0], STDOUT_FILENO, - log_stdout, read_callback, write_callback, &ec, &iobufs); + log_stdout, read_callback, write_callback, &ec); io_fds[SFD_STDOUT] = io_pipe[STDOUT_FILENO][1]; } } - if (io_fds[SFD_STDERR] == -1 || !isatty(STDERR_FILENO)) { + if (!sudo_isatty(STDERR_FILENO, &sb)) { if (!interpose[STDERR_FILENO]) { /* Not logging stderr, do not interpose. */ sudo_debug_printf(SUDO_DEBUG_INFO, "stderr not a tty, not logging"); - if (fstat(STDERR_FILENO, &sb) == 0 && S_ISFIFO(sb.st_mode)) - pipeline = true; io_fds[SFD_STDERR] = dup(STDERR_FILENO); if (io_fds[SFD_STDERR] == -1) sudo_fatal("dup"); @@ -1175,24 +1263,25 @@ if (pipe2(io_pipe[STDERR_FILENO], O_CLOEXEC) != 0) sudo_fatal("%s", U_("unable to create pipe")); io_buf_new(io_pipe[STDERR_FILENO][0], STDERR_FILENO, - log_stderr, read_callback, write_callback, &ec, &iobufs); + log_stderr, read_callback, write_callback, &ec); io_fds[SFD_STDERR] = io_pipe[STDERR_FILENO][1]; } } - if (foreground) { - /* Copy terminal attrs from user tty -> pty follower. */ - if (!sudo_term_copy(io_fds[SFD_USERTTY], io_fds[SFD_FOLLOWER])) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO, - "%s: unable to copy terminal settings to pty", __func__); - foreground = false; - } else { - /* Start in raw mode unless part of a pipeline or backgrounded. */ - if (!pipeline && !ISSET(details->flags, CD_EXEC_BG)) { - if (sudo_term_raw(io_fds[SFD_USERTTY], 0)) - ttymode = TERM_RAW; - } - } + /* + * Copy terminal settings from user tty -> pty. If sudo is a + * background process, we'll re-init the pty when foregrounded. + */ + if (!sudo_term_copy(io_fds[SFD_USERTTY], io_fds[SFD_LEADER])) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO, + "%s: unable to copy terminal settings to pty", __func__); + ec.foreground = false; + } + /* Start in raw mode unless the command will run in the background. */ + cmnd_foreground = ec.foreground && !ISSET(details->flags, CD_EXEC_BG); + if (cmnd_foreground) { + if (sudo_term_raw(io_fds[SFD_USERTTY], 0)) + ec.term_raw = true; } /* @@ -1225,14 +1314,17 @@ close(io_pipe[STDOUT_FILENO][0]); if (io_pipe[STDERR_FILENO][0] != -1) close(io_pipe[STDERR_FILENO][0]); + + /* Only run the cleanup hook in the parent. */ + sudo_fatal_callback_deregister(pty_cleanup_hook); + /* * If stdin/stdout is not a tty, start command in the background * since it might be part of a pipeline that reads from /dev/tty. * 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], - intercept_sv[1]); + exec_monitor(details, &oset, cmnd_foreground, sv[1], intercept_sv[1]); cstat->type = CMD_ERRNO; cstat->val = errno; if (send(sv[1], cstat, sizeof(*cstat), 0) == -1) { @@ -1283,7 +1375,8 @@ * Fill in exec closure, allocate event base, signal events and * the backchannel event. */ - fill_exec_closure(&ec, cstat, details, sudo_pid, ppgrp, sv[0]); + fill_exec_closure(&ec, cstat, details, user_details, evbase, + sudo_pid, ppgrp, sv[0]); /* Create event and closure for intercept mode. */ if (ISSET(details->flags, CD_INTERCEPT|CD_LOG_SUBCMDS)) { @@ -1306,7 +1399,7 @@ * and pass output from leader to stdout and IO plugin. * Try to recover on ENXIO, it means the tty was revoked. */ - add_io_events(ec.evbase); + add_io_events(&ec); do { if (sudo_ev_dispatch(ec.evbase) == -1) sudo_warn("%s", U_("error in event loop")); @@ -1347,8 +1440,8 @@ } /* - * Check for tty size changes. - * Passes the new window size to the I/O plugin and to the monitor. + * Propagate tty size change to pty being used by the command, pass + * new window size to I/O plugins and deliver SIGWINCH to the command. */ static void sync_ttysize(struct exec_closure *ec) @@ -1358,14 +1451,15 @@ if (ioctl(io_fds[SFD_USERTTY], TIOCGWINSZ, &wsize) == 0) { if (wsize.ws_row != ec->rows || wsize.ws_col != ec->cols) { - const unsigned int wsize_packed = (wsize.ws_row & 0xffff) | - ((wsize.ws_col & 0xffff) << 16); + sudo_debug_printf(SUDO_DEBUG_INFO, "%s: %hd x %hd -> %hd x %hd", + __func__, ec->rows, ec->cols, wsize.ws_row, wsize.ws_col); /* Log window change event. */ log_winchange(ec, wsize.ws_row, wsize.ws_col); - /* Send window change event to monitor process. */ - send_command_status(ec, CMD_TTYWINCH, wsize_packed); + /* Update pty window size and send command SIGWINCH. */ + (void)ioctl(io_fds[SFD_LEADER], TIOCSWINSZ, &wsize); + killpg(ec->cmnd_pid, SIGWINCH); /* Update rows/cols. */ ec->rows = wsize.ws_row; diff -Nru sudo-1.9.13p3/src/get_pty.c sudo-1.9.14p2/src/get_pty.c --- sudo-1.9.13p3/src/get_pty.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/src/get_pty.c 2023-07-15 15:37:22.000000000 +0000 @@ -51,12 +51,13 @@ #include "sudo.h" #if defined(HAVE_OPENPTY) -bool -get_pty(int *leader, int *follower, char *name, size_t namesz, uid_t ttyuid) +char * +get_pty(int *leader, int *follower, uid_t ttyuid) { struct group *gr; gid_t ttygid = (gid_t)-1; - bool ret = false; + char name[PATH_MAX]; + char *ret = NULL; debug_decl(get_pty, SUDO_DEBUG_PTY); if ((gr = getgrnam("tty")) != NULL) @@ -64,18 +65,18 @@ if (openpty(leader, follower, name, NULL, NULL) == 0) { if (chown(name, ttyuid, ttygid) == 0) - ret = true; + ret = strdup(name); } - debug_return_bool(ret); + debug_return_str(ret); } #elif defined(HAVE__GETPTY) -bool -get_pty(int *leader, int *follower, char *name, size_t namesz, uid_t ttyuid) +char * +get_pty(int *leader, int *follower, uid_t ttyuid) { char *line; - bool ret = false; + char *ret = NULL; debug_decl(get_pty, SUDO_DEBUG_PTY); /* IRIX-style dynamic ptys (may fork) */ @@ -84,14 +85,13 @@ *follower = open(line, O_RDWR|O_NOCTTY, 0); if (*follower != -1) { (void) chown(line, ttyuid, -1); - strlcpy(name, line, namesz); - ret = true; + ret = strdup(line); } else { close(*leader); *leader = -1; } } - debug_return_bool(ret); + debug_return_str(ret); } #elif defined(HAVE_GRANTPT) # ifndef HAVE_POSIX_OPENPT @@ -109,11 +109,10 @@ } # endif /* HAVE_POSIX_OPENPT */ -bool -get_pty(int *leader, int *follower, char *name, size_t namesz, uid_t ttyuid) +char * +get_pty(int *leader, int *follower, uid_t ttyuid) { - char *line; - bool ret = false; + char *line, *ret = NULL; debug_decl(get_pty, SUDO_DEBUG_PTY); *leader = posix_openpt(O_RDWR|O_NOCTTY); @@ -138,24 +137,23 @@ ioctl(*follower, I_PUSH, "ldterm"); /* line discipline module */ # endif (void) chown(line, ttyuid, -1); - strlcpy(name, line, namesz); - ret = true; + ret = strdup(line); } done: - debug_return_bool(ret); + debug_return_str(ret); } #else /* Old-style BSD ptys */ static char line[] = _PATH_DEV "ptyXX"; -bool -get_pty(int *leader, int *follower, char *name, size_t namesz, uid_t ttyuid) +char * +get_pty(int *leader, int *follower, uid_t ttyuid) { char *bank, *cp; struct group *gr; gid_t ttygid = -1; - bool ret = false; + char *ret = NULL; debug_decl(get_pty, SUDO_DEBUG_PTY); if ((gr = getgrnam("tty")) != NULL) @@ -179,14 +177,13 @@ # endif *follower = open(line, O_RDWR|O_NOCTTY, 0); if (*follower != -1) { - strlcpy(name, line, namesz); - ret = true; /* success */ + ret = strdup(line); goto done; } (void) close(*leader); } } done: - debug_return_bool(ret); + debug_return_str(ret); } #endif /* HAVE_OPENPTY */ diff -Nru sudo-1.9.13p3/src/limits.c sudo-1.9.14p2/src/limits.c --- sudo-1.9.13p3/src/limits.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/src/limits.c 2023-07-15 15:37:23.000000000 +0000 @@ -215,28 +215,40 @@ void disable_coredump(void) { - struct rlimit rl = { 0, 0 }; debug_decl(disable_coredump, SUDO_DEBUG_UTIL); - if (getrlimit(RLIMIT_CORE, &corelimit) == -1) - sudo_warn("getrlimit(RLIMIT_CORE)"); - sudo_debug_printf(SUDO_DEBUG_INFO, "RLIMIT_CORE [%lld, %lld] -> [0, 0]", - (long long)corelimit.rlim_cur, (long long)corelimit.rlim_max); - if (setrlimit(RLIMIT_CORE, &rl) == -1) - sudo_warn("setrlimit(RLIMIT_CORE)"); + if (getrlimit(RLIMIT_CORE, &corelimit) == 0) { + /* + * Set the soft limit to 0 but leave the existing hard limit. + * On Linux, we need CAP_SYS_RESOURCE to raise the hard limit + * which may not be the case in, e.g. an unprivileged container. + */ + struct rlimit rl = corelimit; + rl.rlim_cur = 0; + sudo_debug_printf(SUDO_DEBUG_INFO, + "RLIMIT_CORE [%lld, %lld] -> [%lld, %lld]", + (long long)corelimit.rlim_cur, (long long)corelimit.rlim_max, + (long long)rl.rlim_cur, (long long)rl.rlim_max); + if (setrlimit(RLIMIT_CORE, &rl) == -1) { + sudo_warn("setrlimit(RLIMIT_CORE)"); + } else { + coredump_disabled = true; #ifdef __linux__ - /* On Linux, also set PR_SET_DUMPABLE to zero (reset by execve). */ - if ((dumpflag = prctl(PR_GET_DUMPABLE, 0, 0, 0, 0)) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO, - "prctl(PR_GET_DUMPABLE, 0, 0, 0, 0)"); - dumpflag = 0; - } - if (prctl(PR_SET_DUMPABLE, 0, 0, 0, 0) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO, - "prctl(PR_SET_DUMPABLE, 0, 0, 0, 0)"); - } + /* On Linux, also set PR_SET_DUMPABLE to zero (reset by execve). */ + if ((dumpflag = prctl(PR_GET_DUMPABLE, 0, 0, 0, 0)) == -1) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO, + "prctl(PR_GET_DUMPABLE, 0, 0, 0, 0)"); + dumpflag = 0; + } + if (prctl(PR_SET_DUMPABLE, 0, 0, 0, 0) == -1) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO, + "prctl(PR_SET_DUMPABLE, 0, 0, 0, 0)"); + } #endif /* __linux__ */ - coredump_disabled = true; + } + } else { + sudo_warn("getrlimit(RLIMIT_CORE)"); + } debug_return; } @@ -251,8 +263,8 @@ if (coredump_disabled) { /* - * Linux containers don't allow RLIMIT_CORE to be set back to - * RLIM_INFINITY if we set the limit to zero, even for root. + * Do not warn about a failure to restore the core dump size limit. + * This is mostly harmless and should not happen in practice. */ if (setrlimit(RLIMIT_CORE, &corelimit) == -1) { sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO, diff -Nru sudo-1.9.13p3/src/Makefile.in sudo-1.9.14p2/src/Makefile.in --- sudo-1.9.13p3/src/Makefile.in 2023-02-16 18:43:30.000000000 +0000 +++ sudo-1.9.14p2/src/Makefile.in 2023-07-15 15:37:22.000000000 +0000 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2010-2022 Todd C. Miller +# Copyright (c) 2010-2023 Todd C. Miller # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -45,12 +45,13 @@ INSTALL_BACKUP = @INSTALL_BACKUP@ # Libraries -LT_LIBS = $(top_builddir)/lib/util/libsudo_util.la \ - $(top_builddir)/lib/protobuf-c/libprotobuf-c.la +LIBPROTOBUF_C = $(top_builddir)/lib/protobuf-c/libprotobuf-c.la +LIBUTIL = $(top_builddir)/lib/util/libsudo_util.la +LT_LIBS = $(LIBUTIL) $(LIBPROTOBUF_C) LIBS = @LIBS@ @SUDO_LIBS@ @GETGROUPS_LIB@ @NET_LIBS@ $(LT_LIBS) # C preprocessor defines -CPPDEFS = -D_PATH_SUDO_CONF=\"$(sysconfdir)/sudo.conf\" \ +CPPDEFS = -D_PATH_SUDO_CONF=\"@sudo_conf@\" \ -DLOCALEDIR=\"$(localedir)\" # C preprocessor flags @@ -101,6 +102,7 @@ bindir = @bindir@ sbindir = @sbindir@ sysconfdir = @sysconfdir@ +adminconfdir = @adminconfdir@ libexecdir = @libexecdir@ datarootdir = @datarootdir@ localedir = @localedir@ @@ -145,8 +147,8 @@ exec_common.o exec_intercept.o exec_iolog.o exec_monitor.o \ exec_nopty.o exec_preload.o exec_ptrace.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 suspend_nopty.o tcsetpgrp_nobg.o \ - tgetpass.o ttyname.o utmp.o @SUDO_OBJS@ + signal.o sudo.o sudo_edit.o suspend_parent.o tgetpass.o ttyname.o \ + utmp.o @SUDO_OBJS@ IOBJS = $(OBJS:.o=.i) sesh.i sudo_intercept.i sudo_intercept_common.i @@ -163,7 +165,7 @@ CHECK_TTYNAME_OBJS = check_ttyname.o ttyname.o -TEST_PTRACE_OBJS = suspend_nopty.o tcsetpgrp_nobg.o test_ptrace.o +TEST_PTRACE_OBJS = suspend_parent.o test_ptrace.o LIBOBJDIR = $(top_builddir)/@ac_config_libobj_dir@/ @@ -230,16 +232,16 @@ sesh: $(SESH_OBJS) $(LT_LIBS) $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(SESH_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(LIBS) -check_net_ifs: $(CHECK_NET_IFS_OBJS) $(top_builddir)/lib/util/libsudo_util.la +check_net_ifs: $(CHECK_NET_IFS_OBJS) $(LIBUTIL) $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_NET_IFS_OBJS) $(TEST_LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(TEST_LIBS) -check_noexec: $(CHECK_NOEXEC_OBJS) $(top_builddir)/lib/util/libsudo_util.la sudo_noexec.la +check_noexec: $(CHECK_NOEXEC_OBJS) $(LIBUTIL) $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_NOEXEC_OBJS) $(TEST_LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(TEST_LIBS) -check_ttyname: $(CHECK_TTYNAME_OBJS) $(top_builddir)/lib/util/libsudo_util.la +check_ttyname: $(CHECK_TTYNAME_OBJS) $(LIBUTIL) $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_TTYNAME_OBJS) $(TEST_LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(TEST_LIBS) -test_ptrace: $(TEST_PTRACE_OBJS) $(top_builddir)/lib/util/libsudo_util.la +test_ptrace: $(TEST_PTRACE_OBJS) $(LIBUTIL) $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(TEST_PTRACE_OBJS) $(TEST_LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(HARDENING_LDFLAGS) $(TEST_LIBS) pre-install: @@ -940,14 +942,14 @@ $(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_plugin_int.h $(top_builddir)/config.h \ - $(top_builddir)/pathnames.h ./sudo_usage.h + $(top_builddir)/pathnames.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/sudo.c sudo.i: $(srcdir)/sudo.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_plugin_int.h $(top_builddir)/config.h \ - $(top_builddir)/pathnames.h ./sudo_usage.h + $(top_builddir)/pathnames.h $(CC) -E -o $@ $(CPPFLAGS) $< sudo.plog: sudo.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/sudo.c --i-file $< --output-file $@ @@ -1005,42 +1007,20 @@ $(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 $@ -suspend_nopty.o: $(srcdir)/suspend_nopty.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) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/suspend_nopty.c -suspend_nopty.i: $(srcdir)/suspend_nopty.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) $< -suspend_nopty.plog: suspend_nopty.i - rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/suspend_nopty.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 \ - $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \ - $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \ - $(incdir)/sudo_util.h $(srcdir)/sudo.h \ +suspend_parent.o: $(srcdir)/suspend_parent.c $(incdir)/compat/stdbool.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 \ $(top_builddir)/config.h $(top_builddir)/pathnames.h - $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/tcsetpgrp_nobg.c -tcsetpgrp_nobg.i: $(srcdir)/tcsetpgrp_nobg.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 \ + $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(HARDENING_CFLAGS) $(srcdir)/suspend_parent.c +suspend_parent.i: $(srcdir)/suspend_parent.c $(incdir)/compat/stdbool.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 \ $(top_builddir)/config.h $(top_builddir)/pathnames.h $(CC) -E -o $@ $(CPPFLAGS) $< -tcsetpgrp_nobg.plog: tcsetpgrp_nobg.i - rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/tcsetpgrp_nobg.c --i-file $< --output-file $@ +suspend_parent.plog: suspend_parent.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/suspend_parent.c --i-file $< --output-file $@ test_ptrace.o: $(srcdir)/regress/intercept/test_ptrace.c \ $(incdir)/compat/endian.h $(incdir)/compat/stdbool.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ diff -Nru sudo-1.9.13p3/src/parse_args.c sudo-1.9.14p2/src/parse_args.c --- sudo-1.9.13p3/src/parse_args.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/src/parse_args.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1993-1996, 1998-2022 Todd C. Miller + * Copyright (c) 1993-1996, 1998-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -226,12 +226,14 @@ * for the command to be run (if we are running one). */ int -parse_args(int argc, char **argv, int *old_optind, int *nargc, char ***nargv, - struct sudo_settings **settingsp, char ***env_addp) +parse_args(int argc, char **argv, const char *shell, int *old_optind, + int *nargc, char ***nargv, struct sudo_settings **settingsp, + char ***env_addp, const char **list_userp) { const char *progname, *short_opts = sudo_short_opts; struct option *long_opts = sudo_long_opts; struct environment extra_env; + const char *list_user = NULL; int mode = 0; /* what mode is sudo to be run in? */ int flags = 0; /* mode flags */ int valid_flags = DEFAULT_VALID_FLAGS; @@ -646,7 +648,7 @@ if (!gc_add(GC_PTR, av)) exit(EXIT_FAILURE); - av[0] = (char *)user_details.shell; /* plugin may override shell */ + av[0] = (char *)shell; /* plugin may override shell */ if (cmnd != NULL) { av[1] = (char *)"-c"; av[2] = cmnd; @@ -689,60 +691,35 @@ *env_addp = extra_env.envp; *nargc = argc; *nargv = argv; + *list_userp = list_user; debug_return_int(mode | flags); } -static int -usage_err(const char *buf) -{ - return fputs(buf, stderr); -} - -static int -usage_out(const char *buf) -{ - return fputs(buf, stdout); -} - /* * Display usage message. * The actual usage strings are in sudo_usage.h for configure substitution. */ static void -display_usage(int (*output)(const char *)) +display_usage(FILE *fp) { - struct sudo_lbuf lbuf; - const char *uvec[6]; - int i, ulen; + const char * const **uvecs = sudo_usage; + const char * const *uvec; + int i, indent; /* * Use usage vectors appropriate to the progname. */ - if (strcmp(getprogname(), "sudoedit") == 0) { - uvec[0] = SUDO_USAGE0; - uvec[1] = &SUDO_USAGE5[3]; /* skip the leading "-e " */ - uvec[2] = NULL; - } else { - uvec[0] = SUDO_USAGE1; - uvec[1] = SUDO_USAGE2; - uvec[2] = SUDO_USAGE3; - uvec[3] = SUDO_USAGE4; - uvec[4] = SUDO_USAGE5; - uvec[5] = NULL; - } + if (strcmp(getprogname(), "sudoedit") == 0) + uvecs = sudoedit_usage; - /* - * Print usage and wrap lines as needed, depending on the - * tty width. - */ - ulen = (int)strlen(getprogname()) + 8; - sudo_lbuf_init(&lbuf, output, ulen, NULL, - user_details.ts_cols); - for (i = 0; uvec[i] != NULL; i++) { - sudo_lbuf_append(&lbuf, "usage: %s%s", getprogname(), uvec[i]); - sudo_lbuf_print(&lbuf); + indent = strlen(getprogname()) + 8; + while ((uvec = *uvecs) != NULL) { + (void)fprintf(fp, "usage: %s %s\n", getprogname(), uvec[0]); + for (i = 1; uvec[i] != NULL; i++) { + (void)fprintf(fp, "%*s%s\n", indent, "", uvec[i]); + } + uvecs++; } - sudo_lbuf_destroy(&lbuf); } /* @@ -751,7 +728,7 @@ void usage(void) { - display_usage(usage_err); + display_usage(stderr); exit(EXIT_FAILURE); } @@ -781,6 +758,12 @@ usage(); } +static int +help_out(const char *buf) +{ + return fputs(buf, stdout); +} + static void help(void) { @@ -790,17 +773,15 @@ bool sudoedit = false; debug_decl(help, SUDO_DEBUG_ARGS); - sudo_lbuf_init(&lbuf, usage_out, indent, NULL, user_details.ts_cols); if (strcmp(pname, "sudoedit") == 0) { sudoedit = true; - sudo_lbuf_append(&lbuf, _("%s - edit files as another user\n\n"), pname); + (void)printf(_("%s - edit files as another user\n\n"), pname); } else { - sudo_lbuf_append(&lbuf, _("%s - execute a command as another user\n\n"), pname); + (void)printf(_("%s - execute a command as another user\n\n"), pname); } - sudo_lbuf_print(&lbuf); - - display_usage(usage_out); + display_usage(stdout); + sudo_lbuf_init(&lbuf, help_out, indent, NULL, 80); sudo_lbuf_append(&lbuf, "%s", _("\nOptions:\n")); sudo_lbuf_append(&lbuf, " -A, --askpass %s\n", _("use a helper program for password prompting")); diff -Nru sudo-1.9.13p3/src/regress/intercept/test_ptrace.c sudo-1.9.14p2/src/regress/intercept/test_ptrace.c --- sudo-1.9.13p3/src/regress/intercept/test_ptrace.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/src/regress/intercept/test_ptrace.c 2023-07-15 15:37:22.000000000 +0000 @@ -104,13 +104,6 @@ return sigaction(signo, sa, osa); } -/* STUB */ -void -log_suspend(struct exec_closure *ec, int signo) -{ - return; -} - int main(int argc, char *argv[]) { @@ -217,25 +210,25 @@ if (WIFEXITED(status)) { sudo_debug_printf(SUDO_DEBUG_DIAG, "%d: exited %d", - pid, WEXITSTATUS(status)); + (int)pid, WEXITSTATUS(status)); if (pid == child) return WEXITSTATUS(status); } else if (WIFSIGNALED(status)) { sudo_debug_printf(SUDO_DEBUG_DIAG, "%d: killed by signal %d", - pid, WTERMSIG(status)); + (int)pid, WTERMSIG(status)); if (pid == child) return WTERMSIG(status) | 128; } else if (WIFSTOPPED(status)) { if (exec_ptrace_stopped(pid, status, &closure)) { if (pid == child) { - suspend_sudo_nopty(NULL, WSTOPSIG(status), my_pid, - my_pgrp, child); + sudo_suspend_parent(WSTOPSIG(status), my_pid, + my_pgrp, child, NULL, NULL); if (kill(child, SIGCONT) != 0) sudo_warn("kill(%d, SIGCONT)", (int)child); } } } else { - sudo_fatalx("%d: unknown status 0x%x", pid, status); + sudo_fatalx("%d: unknown status 0x%x", (int)pid, status); } } } diff -Nru sudo-1.9.13p3/src/selinux.c sudo-1.9.14p2/src/selinux.c --- sudo-1.9.13p3/src/selinux.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/src/selinux.c 2023-07-15 15:37:23.000000000 +0000 @@ -273,7 +273,7 @@ (void)fcntl(se_state.ttyfd, F_SETFL, fcntl(se_state.ttyfd, F_GETFL, 0) & ~O_NONBLOCK); for (fd = STDIN_FILENO; fd <= STDERR_FILENO; fd++) { - if (isatty(fd) && dup2(se_state.ttyfd, fd) == -1) { + if (sudo_isatty(fd, &sb) && dup2(se_state.ttyfd, fd) == -1) { sudo_warn("dup2"); goto bad; } diff -Nru sudo-1.9.13p3/src/sudo.c sudo-1.9.14p2/src/sudo.c --- sudo-1.9.13p3/src/sudo.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/src/sudo.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2009-2022 Todd C. Miller + * Copyright (c) 2009-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -64,7 +64,6 @@ # include #endif /* HAVE_GETPRPWNAM && HAVE_SET_AUTH_PARAMETERS */ -#include #include "sudo.h" #include "sudo_plugin.h" #include "sudo_plugin_int.h" @@ -76,11 +75,7 @@ struct plugin_container_list io_plugins = TAILQ_HEAD_INITIALIZER(io_plugins); struct plugin_container_list audit_plugins = TAILQ_HEAD_INITIALIZER(audit_plugins); struct plugin_container_list approval_plugins = TAILQ_HEAD_INITIALIZER(approval_plugins); -struct user_details user_details; -const char *list_user; /* extern for parse_args.c */ int sudo_debug_instance = SUDO_DEBUG_INSTANCE_INITIALIZER; -static struct command_details command_details; -static int sudo_mode; static struct sudo_event_base *sudo_event_base; struct sudo_gc_entry { @@ -108,7 +103,7 @@ /* Policy plugin convenience functions. */ static void policy_open(void); -static void policy_close(int exit_status, int error); +static void policy_close(const char *cmnd, int exit_status, int error); static int policy_show_version(int verbose); static bool policy_check(int argc, char * const argv[], char *env_add[], char **command_info[], char **run_argv[], char **run_envp[]); @@ -143,10 +138,13 @@ int main(int argc, char *argv[], char *envp[]) { - int nargc, status = 0; + struct command_details command_details; + struct user_details user_details; + int nargc, sudo_mode, status = 0; char **nargv, **env_add; char **command_info = NULL, **argv_out = NULL, **run_envp = NULL; const char * const allowed_prognames[] = { "sudo", "sudoedit", NULL }; + const char *list_user; sigset_t mask; debug_decl_vars(main, SUDO_DEBUG_MAIN); @@ -207,8 +205,8 @@ /* 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, - &sudo_settings, &env_add); + sudo_mode = parse_args(argc, argv, user_details.shell, &submit_optind, + &nargc, &nargv, &sudo_settings, &env_add, &list_user); sudo_debug_printf(SUDO_DEBUG_DEBUG, "sudo_mode 0x%x", sudo_mode); /* Print sudo version early, in case of plugin init failure. */ @@ -286,19 +284,21 @@ /* Setup command details and run command/edit. */ command_info_to_details(command_info, &command_details); + if (command_details.utmp_user == NULL) + command_details.utmp_user = user_details.username; + command_details.submitcwd = user_details.cwd; command_details.tty = user_details.tty; command_details.argv = nargv; command_details.argc = nargc; 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); if (ISSET(sudo_mode, MODE_BACKGROUND)) SET(command_details.flags, CD_BACKGROUND); if (ISSET(command_details.flags, CD_SUDOEDIT)) { - status = sudo_edit(&command_details); + status = sudo_edit(&command_details, &user_details); } else { - status = run_command(&command_details); + status = run_command(&command_details, &user_details); } /* The close method was called by sudo_edit/run_command. */ break; @@ -332,7 +332,7 @@ 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); + policy_close(NULL, 0, EACCES); audit_close(SUDO_PLUGIN_NO_STATUS, 0); sudo_debug_exit_int(__func__, __FILE__, __LINE__, sudo_debug_subsys, EXIT_FAILURE); @@ -504,7 +504,7 @@ unsigned int i = 0; mode_t mask; struct passwd *pw; - int fd, n; + int ttyfd, n; debug_decl(get_user_info, SUDO_DEBUG_UTIL); /* @@ -530,11 +530,12 @@ ud->pid = getpid(); ud->ppid = getppid(); ud->pgid = getpgid(0); - fd = open(_PATH_TTY, O_RDWR); - if (fd != -1) { - if ((ud->tcpgid = tcgetpgrp(fd)) == -1) + ttyfd = open(_PATH_TTY, O_RDWR); + sudo_get_ttysize(ttyfd, &ud->ts_rows, &ud->ts_cols); + if (ttyfd != -1) { + if ((ud->tcpgid = tcgetpgrp(ttyfd)) == -1) ud->tcpgid = 0; - close(fd); + close(ttyfd); } if ((ud->sid = getsid(0)) == -1) ud->sid = 0; @@ -544,6 +545,9 @@ ud->cred.gid = getgid(); ud->cred.egid = getegid(); + /* Store cred for use by sudo_askpass(). */ + sudo_askpass_cred(&ud->cred); + #ifdef HAVE_SETAUTHDB aix_setauthdb(IDtouser(ud->cred.uid), NULL); #endif @@ -619,7 +623,6 @@ goto oom; ud->host = info[i] + sizeof("host=") - 1; - sudo_get_ttysize(&ud->ts_rows, &ud->ts_cols); if (asprintf(&info[++i], "lines=%d", ud->ts_rows) == -1) goto oom; if (asprintf(&info[++i], "cols=%d", ud->ts_cols) == -1) @@ -697,7 +700,7 @@ case 'c': SET_STRING("chroot=", chroot) SET_STRING("command=", command) - SET_STRING("cwd=", cwd) + SET_STRING("cwd=", runcwd) SET_FLAG("cwd_optional=", CD_CWD_OPTIONAL) if (strncmp("closefrom=", info[i], sizeof("closefrom=") - 1) == 0) { cp = info[i] + sizeof("closefrom=") - 1; @@ -788,7 +791,8 @@ } if (strncmp("runas_groups=", info[i], sizeof("runas_groups=") - 1) == 0) { cp = info[i] + sizeof("runas_groups=") - 1; - details->cred.ngroups = sudo_parse_gids(cp, NULL, &details->cred.groups); + details->cred.ngroups = sudo_parse_gids(cp, NULL, + &details->cred.groups); /* sudo_parse_gids() will print a warning on error. */ if (details->cred.ngroups == -1) exit(EXIT_FAILURE); /* XXX */ @@ -1015,7 +1019,8 @@ * Returns wait status suitable for use with the wait(2) macros. */ int -run_command(struct command_details *details) +run_command(struct command_details *command_details, + const struct user_details *user_details) { struct command_status cstat; int status = W_EXITCODE(1, 0); @@ -1024,33 +1029,33 @@ cstat.type = CMD_INVALID; cstat.val = 0; - if (details->command == NULL) { + if (command_details->command == NULL) { sudo_warnx("%s", U_("command not set by the security policy")); debug_return_int(status); } - if (details->argv == NULL) { + if (command_details->argv == NULL) { sudo_warnx("%s", U_("argv not set by the security policy")); debug_return_int(status); } - if (details->envp == NULL) { + if (command_details->envp == NULL) { sudo_warnx("%s", U_("envp not set by the security policy")); debug_return_int(status); } - sudo_execute(details, &cstat); + sudo_execute(command_details, user_details, sudo_event_base, &cstat); switch (cstat.type) { case CMD_ERRNO: /* exec_setup() or execve() returned an error. */ iolog_close(0, cstat.val); - policy_close(0, cstat.val); + policy_close(command_details->command, 0, cstat.val); audit_close(SUDO_PLUGIN_EXEC_ERROR, cstat.val); break; case CMD_WSTATUS: /* Command ran, exited or was killed. */ status = cstat.val; iolog_close(status, 0); - policy_close(status, 0); + policy_close(command_details->command, status, 0); audit_close(SUDO_PLUGIN_WAIT_STATUS, cstat.val); break; default: @@ -1176,7 +1181,7 @@ } static void -policy_close(int exit_status, int error_code) +policy_close(const char *cmnd, int exit_status, int error_code) { debug_decl(policy_close, SUDO_DEBUG_PCOMM); @@ -1194,9 +1199,9 @@ policy_plugin.u.policy->close(exit_status, error_code); sudo_debug_set_active_instance(sudo_debug_instance); } else if (error_code != 0) { - if (command_details.command != NULL) { + if (cmnd != NULL) { errno = error_code; - sudo_warn(U_("unable to execute %s"), command_details.command); + sudo_warn(U_("unable to execute %s"), cmnd); } } @@ -1302,7 +1307,7 @@ /* 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); + policy_close(NULL, 0, 0); audit_close(SUDO_PLUGIN_NO_STATUS, 0); exit(ok != 1); @@ -1346,7 +1351,7 @@ /* 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); + policy_close(NULL, 0, 0); audit_close(SUDO_PLUGIN_NO_STATUS, 0); exit(ok != 1); diff -Nru sudo-1.9.13p3/src/sudo_edit.c sudo-1.9.14p2/src/sudo_edit.c --- sudo-1.9.13p3/src/sudo_edit.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/src/sudo_edit.c 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2004-2008, 2010-2021 Todd C. Miller + * Copyright (c) 2004-2008, 2010-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -60,7 +60,7 @@ * Returns true on success, else false; */ static bool -set_tmpdir(struct sudo_cred *user_cred) +set_tmpdir(const struct sudo_cred *user_cred) { const char *tdir = NULL; const char *tmpdirs[] = { @@ -162,8 +162,9 @@ * or -1 if a fatal error occurred. */ static int -sudo_edit_create_tfiles(struct command_details *command_details, - struct tempfile *tf, char *files[], int nfiles) +sudo_edit_create_tfiles(const struct command_details *command_details, + const struct sudo_cred *user_cred, struct tempfile *tf, char *files[], + int nfiles) { int i, j, tfd, ofd, rc; struct timespec times[2]; @@ -180,19 +181,18 @@ command_details->cred.ngroups, command_details->cred.groups); ofd = sudo_edit_open(files[i], O_RDONLY, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, command_details->flags, - &user_details.cred, &command_details->cred); + user_cred, &command_details->cred); if (ofd != -1 || errno == ENOENT) { if (ofd != -1) { rc = fstat(ofd, &sb); } else { /* New file, verify parent dir exists and is not writable. */ memset(&sb, 0, sizeof(sb)); - if (sudo_edit_parent_valid(files[i], command_details->flags, &user_details.cred, &command_details->cred)) + if (sudo_edit_parent_valid(files[i], command_details->flags, user_cred, &command_details->cred)) rc = 0; } } - switch_user(ROOT_UID, user_details.cred.egid, - user_details.cred.ngroups, user_details.cred.groups); + switch_user(ROOT_UID, user_cred->egid, user_cred->ngroups, user_cred->groups); if (ofd != -1 && !S_ISREG(sb.st_mode)) { sudo_warnx(U_("%s: not a regular file"), files[i]); close(ofd); @@ -217,9 +217,9 @@ tf[j].osize = sb.st_size; // -V614 mtim_get(&sb, tf[j].omtim); sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, - "seteuid(%u)", (unsigned int)user_details.cred.uid); - if (seteuid(user_details.cred.uid) != 0) - sudo_fatal("seteuid(%u)", (unsigned int)user_details.cred.uid); + "seteuid(%u)", (unsigned int)user_cred->uid); + if (seteuid(user_cred->uid) != 0) + sudo_fatal("seteuid(%u)", (unsigned int)user_cred->uid); tfd = sudo_edit_mktemp(tf[j].ofile, &tf[j].tfile); sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, "seteuid(%u)", ROOT_UID); @@ -266,8 +266,9 @@ * Returns the number of copy errors or 0 if completely successful. */ static int -sudo_edit_copy_tfiles(struct command_details *command_details, - struct tempfile *tf, int nfiles, struct timespec *times) +sudo_edit_copy_tfiles(const struct command_details *command_details, + const struct sudo_cred *user_cred, struct tempfile *tf, + int nfiles, struct timespec *times) { int i, tfd, ofd, errors = 0; struct timespec ts; @@ -278,16 +279,16 @@ /* Copy contents of temp files to real ones. */ for (i = 0; i < nfiles; i++) { sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, - "seteuid(%u)", (unsigned int)user_details.cred.uid); - if (seteuid(user_details.cred.uid) != 0) - sudo_fatal("seteuid(%u)", (unsigned int)user_details.cred.uid); + "seteuid(%u)", (unsigned int)user_cred->uid); + if (seteuid(user_cred->uid) != 0) + sudo_fatal("seteuid(%u)", (unsigned int)user_cred->uid); tfd = sudo_edit_open(tf[i].tfile, O_RDONLY, - S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, 0, &user_details.cred, NULL); + S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, 0, user_cred, NULL); if (seteuid(ROOT_UID) != 0) sudo_fatal("seteuid(ROOT_UID)"); sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, "seteuid(%u)", ROOT_UID); - if (tfd == -1 || !sudo_check_temp_file(tfd, tf[i].tfile, user_details.cred.uid, &sb)) { + if (tfd == -1 || !sudo_check_temp_file(tfd, tf[i].tfile, user_cred->uid, &sb)) { sudo_warnx(U_("%s left unmodified"), tf[i].ofile); if (tfd != -1) close(tfd); @@ -312,10 +313,9 @@ oldmask = umask(command_details->umask); ofd = sudo_edit_open(tf[i].ofile, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, command_details->flags, - &user_details.cred, &command_details->cred); + user_cred, &command_details->cred); umask(oldmask); - switch_user(ROOT_UID, user_details.cred.egid, - user_details.cred.ngroups, user_details.cred.groups); + switch_user(ROOT_UID, user_cred->egid, user_cred->ngroups, user_cred->groups); if (ofd == -1) { sudo_warn(U_("unable to write to %s"), tf[i].ofile); goto bad; @@ -380,28 +380,28 @@ } static char * -selinux_fmt_sudo_user(void) +selinux_fmt_sudo_user(const struct sudo_cred *user_cred) { char *cp, *user_str; size_t user_size; int i, len; debug_decl(selinux_fmt_sudo_user, SUDO_DEBUG_EDIT); - user_size = (MAX_UID_T_LEN + 1) * (2 + user_details.cred.ngroups); + user_size = (MAX_UID_T_LEN + 1) * (2 + user_cred->ngroups); if ((user_str = malloc(user_size)) == NULL) debug_return_ptr(NULL); /* UID:GID: */ len = snprintf(user_str, user_size, "%u:%u:", - (unsigned int)user_details.cred.uid, (unsigned int)user_details.cred.gid); + (unsigned int)user_cred->uid, (unsigned int)user_cred->gid); if (len < 0 || (size_t)len >= user_size) sudo_fatalx(U_("internal error, %s overflow"), __func__); /* Supplementary GIDs */ cp = user_str + len; - for (i = 0; i < user_details.cred.ngroups; i++) { + for (i = 0; i < user_cred->ngroups; i++) { len = snprintf(cp, user_size - (cp - user_str), "%s%u", - i ? "," : "", (unsigned int)user_details.cred.groups[i]); + i ? "," : "", (unsigned int)user_cred->groups[i]); if (len < 0 || (size_t)len >= user_size - (cp - user_str)) sudo_fatalx(U_("internal error, %s overflow"), __func__); cp += len; @@ -411,8 +411,9 @@ } static int -selinux_edit_create_tfiles(struct command_details *command_details, - struct tempfile *tf, char *files[], int nfiles) +selinux_edit_create_tfiles(const struct command_details *command_details, + const struct sudo_cred *user_cred, struct tempfile *tf, + char *files[], int nfiles) { const char **sesh_args, **sesh_ap; char *user_str = NULL; @@ -434,7 +435,7 @@ if (!ISSET(command_details->flags, CD_SUDOEDIT_FOLLOW)) *sesh_ap++ = "--no-dereference"; if (ISSET(command_details->flags, CD_SUDOEDIT_CHECKDIR)) { - if ((user_str = selinux_fmt_sudo_user()) == NULL) { + if ((user_str = selinux_fmt_sudo_user(user_cred)) == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto done; } @@ -498,9 +499,9 @@ close(tfd); goto done; } - if (fchown(tfd, user_details.cred.uid, user_details.cred.gid) != 0) { + if (fchown(tfd, user_cred->uid, user_cred->gid) != 0) { sudo_warn("unable to chown(%s) to %d:%d for editing", - tf[i].tfile, user_details.cred.uid, user_details.cred.gid); + tf[i].tfile, user_cred->uid, user_cred->gid); close(tfd); goto done; } @@ -517,8 +518,9 @@ } static int -selinux_edit_copy_tfiles(struct command_details *command_details, - struct tempfile *tf, int nfiles, struct timespec *times) +selinux_edit_copy_tfiles(const struct command_details *command_details, + const struct sudo_cred *user_cred, struct tempfile *tf, + int nfiles, struct timespec *times) { const char **sesh_args, **sesh_ap; char *user_str = NULL; @@ -541,7 +543,7 @@ *sesh_ap++ = "sesh"; *sesh_ap++ = "--edit-install"; if (ISSET(command_details->flags, CD_SUDOEDIT_CHECKDIR)) { - if ((user_str = selinux_fmt_sudo_user()) == NULL) { + if ((user_str = selinux_fmt_sudo_user(user_cred)) == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto done; } @@ -557,7 +559,7 @@ sudo_warn(U_("unable to open %s"), tf[i].tfile); continue; } - if (!sudo_check_temp_file(tfd, tf[i].tfile, user_details.cred.uid, &sb)) + if (!sudo_check_temp_file(tfd, tf[i].tfile, user_cred->uid, &sb)) continue; mtim_get(&sb, ts); if (tf[i].osize == sb.st_size && sudo_timespeccmp(&tf[i].omtim, &ts, ==)) { @@ -625,9 +627,11 @@ * of 1 on failure. */ int -sudo_edit(struct command_details *command_details) +sudo_edit(struct command_details *command_details, + const struct user_details *user_details) { struct command_details saved_command_details; + const struct sudo_cred *user_cred = &user_details->cred; char **nargv = NULL, **files = NULL; int nfiles = command_details->nfiles; int errors, i, ac, nargc, ret; @@ -648,7 +652,7 @@ } /* Find a temporary directory writable by the user. */ - if (!set_tmpdir(&user_details.cred)) + if (!set_tmpdir(user_cred)) goto cleanup; if (nfiles > 0) { @@ -690,10 +694,10 @@ } #ifdef HAVE_SELINUX if (ISSET(command_details->flags, CD_RBAC_ENABLED)) - nfiles = selinux_edit_create_tfiles(command_details, tf, files, nfiles); + nfiles = selinux_edit_create_tfiles(command_details, user_cred, tf, files, nfiles); else #endif - nfiles = sudo_edit_create_tfiles(command_details, tf, files, nfiles); + nfiles = sudo_edit_create_tfiles(command_details, user_cred, tf, files, nfiles); if (nfiles <= 0) goto cleanup; @@ -729,12 +733,12 @@ selinux_audit_role_change(); #endif memcpy(&saved_command_details, command_details, sizeof(struct command_details)); - command_details->cred = user_details.cred; - command_details->cred.euid = user_details.cred.uid; - command_details->cred.egid = user_details.cred.gid; + command_details->cred = *user_cred; + command_details->cred.euid = user_cred->uid; + command_details->cred.egid = user_cred->gid; command_details->argc = nargc; command_details->argv = nargv; - ret = run_command(command_details); + ret = run_command(command_details, user_details); if (sudo_gettime_real(×[1]) == -1) { sudo_warn("%s", U_("unable to read the clock")); goto cleanup; @@ -748,10 +752,10 @@ /* Copy contents of temp files to real ones. */ #ifdef HAVE_SELINUX if (ISSET(command_details->flags, CD_RBAC_ENABLED)) - errors = selinux_edit_copy_tfiles(command_details, tf, nfiles, times); + errors = selinux_edit_copy_tfiles(command_details, user_cred, tf, nfiles, times); else #endif - errors = sudo_edit_copy_tfiles(command_details, tf, nfiles, times); + errors = sudo_edit_copy_tfiles(command_details, user_cred, tf, nfiles, times); if (errors) { /* Preserve the edited temporary files. */ ret = W_EXITCODE(1, 0); @@ -783,7 +787,7 @@ * Must have the ability to change the effective uid to use sudoedit. */ int -sudo_edit(struct command_details *command_details) +sudo_edit(const struct command_details *command_details, const struct sudo_cred *user_cred) { debug_decl(sudo_edit, SUDO_DEBUG_EDIT); debug_return_int(W_EXITCODE(1, 0)); diff -Nru sudo-1.9.13p3/src/sudo_edit.h sudo-1.9.14p2/src/sudo_edit.h --- sudo-1.9.13p3/src/sudo_edit.h 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/src/sudo_edit.h 2023-07-15 15:37:23.000000000 +0000 @@ -48,8 +48,8 @@ /* edit_open.c */ struct sudo_cred; void switch_user(uid_t euid, gid_t egid, int ngroups, GETGROUPS_T *groups); -int sudo_edit_open(char *path, int oflags, mode_t mode, int sflags, struct sudo_cred *user_cred, struct sudo_cred *cur_cred); -int dir_is_writable(int dfd, struct sudo_cred *user_cred, struct sudo_cred *cur_cred); -bool sudo_edit_parent_valid(char *path, int sflags, struct sudo_cred *user_cred, struct sudo_cred *cur_cred); +int sudo_edit_open(char *path, int oflags, mode_t mode, int sflags, const struct sudo_cred *user_cred, const struct sudo_cred *cur_cred); +int dir_is_writable(int dfd, const struct sudo_cred *user_cred, const struct sudo_cred *cur_cred); +bool sudo_edit_parent_valid(char *path, int sflags, const struct sudo_cred *user_cred, const struct sudo_cred *cur_cred); #endif /* SUDO_EDIT_H */ diff -Nru sudo-1.9.13p3/src/sudo_exec.h sudo-1.9.14p2/src/sudo_exec.h --- sudo-1.9.13p3/src/sudo_exec.h 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/src/sudo_exec.h 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2010-2017, 2020-2022 Todd C. Miller + * Copyright (c) 2010-2017, 2020-2023 Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -42,10 +42,7 @@ # define USER_SIGNALED(_info) ((_info) != NULL && (_info)->si_code <= 0) #endif -/* Values for ttymode. */ -#define TERM_COOKED 0 -#define TERM_RAW 1 - +struct user_details; struct command_details; struct command_status; struct sudo_event_base; @@ -73,6 +70,7 @@ struct sudo_event *siginfo_event; struct sudo_event *sigwinch_event; struct command_status *cstat; + char *ptyname; void *intercept; pid_t sudo_pid; pid_t monitor_pid; @@ -80,6 +78,8 @@ pid_t ppgrp; short rows; short cols; + bool foreground; + bool term_raw; }; /* @@ -185,8 +185,8 @@ char **enable_monitor(char *envp[], const char *dso); /* exec_intercept.c */ -void *intercept_setup(int fd, struct sudo_event_base *evbase, struct command_details *details); -void intercept_cleanup(void); +void *intercept_setup(int fd, struct sudo_event_base *evbase, const struct command_details *details); +void intercept_cleanup(struct exec_closure *ec); /* exec_iolog.c */ bool log_ttyin(const char *buf, unsigned int n, struct io_buffer *iob); @@ -194,25 +194,21 @@ bool log_ttyout(const char *buf, unsigned int n, struct io_buffer *iob); bool log_stdout(const char *buf, unsigned int n, struct io_buffer *iob); bool log_stderr(const char *buf, unsigned int n, struct io_buffer *iob); -void log_suspend(struct exec_closure *ec, int signo); +void log_suspend(void *v, int signo); void log_winchange(struct exec_closure *ec, unsigned int rows, unsigned int cols); -void io_buf_new(int rfd, int wfd, bool (*action)(const char *, unsigned int, struct io_buffer *), void (*read_cb)(int fd, int what, void *v), void (*write_cb)(int fd, int what, void *v), struct exec_closure *ec, struct io_buffer_list *head); +void io_buf_new(int rfd, int wfd, bool (*action)(const char *, unsigned int, struct io_buffer *), void (*read_cb)(int fd, int what, void *v), void (*write_cb)(int fd, int what, void *v), struct exec_closure *ec); int safe_close(int fd); void ev_free_by_fd(struct sudo_event_base *evbase, int fd); void free_io_bufs(void); -void add_io_events(struct sudo_event_base *evbase); +void add_io_events(struct exec_closure *ec); void del_io_events(bool nonblocking); void init_ttyblock(void); -extern struct io_buffer_list iobufs; -extern int ttymode; /* exec_nopty.c */ -void exec_nopty(struct command_details *details, struct command_status *cstat); +void exec_nopty(struct command_details *details, const struct user_details *user_details, struct sudo_event_base *evbase, struct command_status *cstat); /* exec_pty.c */ -bool exec_pty(struct command_details *details, struct command_status *cstat); -void pty_cleanup(void); -int pty_make_controlling(void); +bool exec_pty(struct command_details *details, const struct user_details *user_details, struct sudo_event_base *evbase, struct command_status *cstat); extern int io_fds[6]; /* exec_monitor.c */ @@ -232,7 +228,7 @@ bool set_exec_filter(void); int exec_ptrace_seize(pid_t child); -/* suspend_nopty.c */ -void suspend_sudo_nopty(struct exec_closure *ec, int signo, pid_t my_pid, pid_t my_pgrp, pid_t cmnd_pid); +/* suspend_parent.c */ +void sudo_suspend_parent(int signo, pid_t my_pid, pid_t my_pgrp, pid_t cmnd_pid, void *closure, void (*callback)(void *, int)); #endif /* SUDO_EXEC_H */ diff -Nru sudo-1.9.13p3/src/sudo.h sudo-1.9.14p2/src/sudo.h --- sudo-1.9.13p3/src/sudo.h 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/src/sudo.h 2023-07-15 15:37:23.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1993-1996, 1998-2005, 2007-2022 + * Copyright (c) 1993-1996, 1998-2005, 2007-2023 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -200,7 +200,8 @@ struct passwd *pw; const char *command; const char *runas_user; - const char *cwd; + const char *runcwd; + const char *submitcwd; const char *login_class; const char *chroot; const char *selinux_role; @@ -210,7 +211,6 @@ const char *tty; char **argv; char **envp; - struct sudo_event_base *evbase; #ifdef HAVE_PRIV_SET priv_set_t *privs; priv_set_t *limitprivs; @@ -225,7 +225,6 @@ #define CMD_WSTATUS 2 #define CMD_SIGNO 3 #define CMD_PID 4 -#define CMD_TTYWINCH 5 int type; int val; }; @@ -243,21 +242,23 @@ /* tgetpass.c */ char *tgetpass(const char *prompt, int timeout, int flags, struct sudo_conv_callback *callback); +const struct sudo_cred *sudo_askpass_cred(const struct sudo_cred *cred); /* exec.c */ -int sudo_execute(struct command_details *details, struct command_status *cstat); +int sudo_execute(struct command_details *details, const struct user_details *ud, struct sudo_event_base *evbase, struct command_status *cstat); /* parse_args.c */ -int parse_args(int argc, char **argv, int *old_optind, int *nargc, - char ***nargv, struct sudo_settings **settingsp, char ***env_addp); +int parse_args(int argc, char **argv, const char *shell, int *old_optind, + int *nargc, char ***nargv, struct sudo_settings **settingsp, + char ***env_addp, const char **list_user); extern int tgetpass_flags; /* get_pty.c */ -bool get_pty(int *leader, int *follower, char *name, size_t namesz, uid_t uid); +char *get_pty(int *leader, int *follower, uid_t uid); /* sudo.c */ int policy_init_session(struct command_details *details); -int run_command(struct command_details *details); +int run_command(struct command_details *command_details, const struct user_details *user_details); 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); @@ -271,12 +272,10 @@ 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; /* sudo_edit.c */ -int sudo_edit(struct command_details *details); +int sudo_edit(struct command_details *command_details, const struct user_details *user_details); /* parse_args.c */ sudo_noreturn void usage(void); @@ -319,6 +318,7 @@ /* ttyname.c */ char *get_process_ttyname(char *name, size_t namelen); +bool sudo_isatty(int fd, struct stat *sb); /* signal.c */ struct sigaction; @@ -336,9 +336,6 @@ void closefrom_except(int startfd, struct preserved_fd_list *pfds); void parse_preserved_fds(struct preserved_fd_list *pfds, const char *fdstr); -/* setpgrp_nobg.c */ -int tcsetpgrp_nobg(int fd, pid_t pgrp_id); - /* limits.c */ void disable_coredump(void); void restore_limits(void); diff -Nru sudo-1.9.13p3/src/sudo_usage.h.in sudo-1.9.14p2/src/sudo_usage.h.in --- sudo-1.9.13p3/src/sudo_usage.h.in 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/src/sudo_usage.h.in 2023-07-15 15:37:22.000000000 +0000 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2007-2010, 2013, 2015, 2017, 2020-2022 + * Copyright (c) 2007-2010, 2013, 2015, 2017, 2020-2023 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -24,16 +24,55 @@ * Usage strings for sudo. These are here because we * need to be able to substitute values from configure. */ -#define SUDO_USAGE0 " -h | -V" -#define SUDO_USAGE1 " -h | -K | -k | -V" -#define SUDO_USAGE2 " -v [-ABkNnS] @BSDAUTH_USAGE@[-g group] [-h host] [-p prompt] [-u user]" -#define SUDO_USAGE3 " -l [-ABkNnS] @BSDAUTH_USAGE@[-g group] [-h host] [-p prompt] [-U user] [-u user] [command [arg ...]]" -#define SUDO_USAGE4 " [-ABbEHkNnPS] @BSDAUTH_USAGE@@SELINUX_USAGE@[-C num] [-D directory] @LOGINCAP_USAGE@[-g group] [-h host] [-p prompt] [-R directory] [-T timeout] [-u user] [VAR=value] [-i | -s] [command [arg ...]]" -#define SUDO_USAGE5 " -e [-ABkNnS] @BSDAUTH_USAGE@@SELINUX_USAGE@[-C num] @LOGINCAP_USAGE@[-D directory] [-g group] [-h host] [-p prompt] [-R directory] [-T timeout] [-u user] file ..." +static const char *sudo_usage1[] = { + "-h | -K | -k | -V", + NULL +}; +static const char *sudo_usage2[] = { + "-v [-ABkNnS] @BSDAUTH_USAGE@[-g group] [-h host] [-p prompt] [-u user]", + NULL +}; +static const char *sudo_usage3[] = { + "-l [-ABkNnS] @BSDAUTH_USAGE@[-g group] [-h host] [-p prompt] [-U user]", + "[-u user] [command [arg ...]]", + NULL +}; +static const char *sudo_usage4[] = { + "[-ABbEHkNnPS] @BSDAUTH_USAGE@@SELINUX_USAGE@[-C num] @LOGINCAP_USAGE@[-D directory]", + "[-g group] [-h host] [-p prompt] [-R directory] [-T timeout]", + "[-u user] [VAR=value] [-i | -s] [command [arg ...]]", + NULL +}; +static const char *sudo_usage5[] = { + "-e [-ABkNnS] @BSDAUTH_USAGE@@SELINUX_USAGE@[-C num] @LOGINCAP_USAGE@[-D directory]", + "[-g group] [-h host] [-p prompt] [-R directory] [-T timeout]", + "[-u user] file ...", + NULL +}; +static const char * const *sudo_usage[] = { + sudo_usage1, + sudo_usage2, + sudo_usage3, + sudo_usage4, + sudo_usage5, + NULL +}; -/* - * Configure script arguments used to build sudo. - */ -#define CONFIGURE_ARGS "@CONFIGURE_ARGS@" +static const char *sudoedit_usage1[] = { + "-h | -V", + NULL +}; +static const char *sudoedit_usage2[] = { + /* Same as sudo_usage5 but no -e flag. */ + "[-ABkNnS] @BSDAUTH_USAGE@@SELINUX_USAGE@[-C num] @LOGINCAP_USAGE@[-D directory]", + "[-g group] [-h host] [-p prompt] [-R directory] [-T timeout]", + "[-u user] file ...", + NULL +}; +static const char * const *sudoedit_usage[] = { + sudoedit_usage1, + sudoedit_usage2, + NULL +}; #endif /* SUDO_USAGE_H */ diff -Nru sudo-1.9.13p3/src/suspend_nopty.c sudo-1.9.14p2/src/suspend_nopty.c --- sudo-1.9.13p3/src/suspend_nopty.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/src/suspend_nopty.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,119 +0,0 @@ -/* - * SPDX-License-Identifier: ISC - * - * Copyright (c) 2009-2022 Todd C. Miller - * - * 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 - -#include -#include -#include -#include -#include -#include - -#include "sudo.h" -#include "sudo_exec.h" - -void -suspend_sudo_nopty(struct exec_closure *ec, int signo, pid_t my_pid, - pid_t my_pgrp, pid_t cmnd_pid) -{ - struct sigaction sa, osa; - pid_t saved_pgrp = -1; - int fd; - debug_decl(suspend_sudo_nopty, SUDO_DEBUG_EXEC); - - /* - * Save the controlling terminal's process group so we can restore - * it after we resume, if needed. Most well-behaved shells change - * the pgrp back to its original value before suspending so we must - * not try to restore in that case, lest we race with the command - * upon resume, potentially stopping sudo with SIGTTOU while the - * command continues to run. - */ - fd = open(_PATH_TTY, O_RDWR); - if (fd != -1) { - saved_pgrp = tcgetpgrp(fd); - if (saved_pgrp == -1) { - close(fd); - fd = -1; - } - } - - if (saved_pgrp != -1) { - /* - * Command was stopped trying to access the controlling - * terminal. If the command has a different pgrp and we - * own the controlling terminal, give it to the command's - * pgrp and let it continue. - */ - if (signo == SIGTTOU || signo == SIGTTIN) { - if (saved_pgrp == my_pgrp) { - pid_t cmnd_pgrp = getpgid(cmnd_pid); - if (cmnd_pgrp != my_pgrp) { - if (tcsetpgrp_nobg(fd, cmnd_pgrp) == 0) { - if (killpg(cmnd_pgrp, SIGCONT) != 0) - sudo_warn("kill(%d, SIGCONT)", (int)cmnd_pgrp); - close(fd); - debug_return; - } - } - } - } - } - - /* Log the suspend event. */ - log_suspend(ec, signo); - - if (signo == SIGTSTP) { - memset(&sa, 0, sizeof(sa)); - sigemptyset(&sa.sa_mask); - sa.sa_flags = SA_RESTART; - sa.sa_handler = SIG_DFL; - if (sudo_sigaction(SIGTSTP, &sa, &osa) != 0) - sudo_warn(U_("unable to set handler for signal %d"), SIGTSTP); - } - if (kill(my_pid, signo) != 0) - sudo_warn("kill(%d, %d)", (int)my_pid, signo); - if (signo == SIGTSTP) { - if (sudo_sigaction(SIGTSTP, &osa, NULL) != 0) - sudo_warn(U_("unable to restore handler for signal %d"), SIGTSTP); - } - - /* Log the resume event. */ - log_suspend(ec, SIGCONT); - - if (saved_pgrp != -1) { - /* - * On resume, restore foreground process group, if different. - * Otherwise, we cannot resume some shells (pdksh). - * - * It is possible that we are no longer the foreground process, - * use tcsetpgrp_nobg() to prevent sudo from receiving SIGTTOU. - */ - if (saved_pgrp != my_pgrp) - tcsetpgrp_nobg(fd, saved_pgrp); - close(fd); - } - - debug_return; -} diff -Nru sudo-1.9.13p3/src/suspend_parent.c sudo-1.9.14p2/src/suspend_parent.c --- sudo-1.9.13p3/src/suspend_parent.c 1970-01-01 00:00:00.000000000 +0000 +++ sudo-1.9.14p2/src/suspend_parent.c 2023-07-15 15:37:22.000000000 +0000 @@ -0,0 +1,170 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2009-2023 Todd C. Miller + * + * 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 + +#include +#include +#include +#include +#include +#include + +#include "pathnames.h" +#include "sudo_debug.h" +#include "sudo_fatal.h" +#include "sudo_gettext.h" +#include "sudo_exec.h" + +static volatile sig_atomic_t got_sigttou; + +/* + * SIGTTOU signal handler for tcsetpgrp_nobg() that just sets a flag. + */ +static void +sigttou(int signo) +{ + got_sigttou = 1; +} + +/* + * Like tcsetpgrp() but restarts on EINTR _except_ for SIGTTOU. + * Returns 0 on success or -1 on failure, setting errno. + * Sets got_sigttou on failure if interrupted by SIGTTOU. + */ +static int +tcsetpgrp_nobg(int fd, pid_t pgrp_id) +{ + struct sigaction sa, osa; + int rc; + debug_decl(tcsetpgrp_nobg, SUDO_DEBUG_UTIL); + + /* + * If we receive SIGTTOU from tcsetpgrp() it means we are + * not in the foreground process group. + * This avoid a TOCTOU race compared to using tcgetpgrp(). + */ + memset(&sa, 0, sizeof(sa)); + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; /* do not restart syscalls */ + sa.sa_handler = sigttou; + got_sigttou = 0; + (void)sigaction(SIGTTOU, &sa, &osa); + do { + rc = tcsetpgrp(fd, pgrp_id); + } while (rc != 0 && errno == EINTR && !got_sigttou); + (void)sigaction(SIGTTOU, &osa, NULL); + + debug_return_int(rc); +} + +/* + * Suspend the main process in response to an interactive child process + * being suspended. + */ +void +sudo_suspend_parent(int signo, pid_t my_pid, pid_t my_pgrp, pid_t cmnd_pid, + void *closure, void (*callback)(void *, int)) +{ + struct sigaction sa, osa; + pid_t saved_pgrp = -1; + int fd; + debug_decl(sudo_suspend_parent, SUDO_DEBUG_EXEC); + + /* + * Save the controlling terminal's process group so we can restore + * it after we resume, if needed. Most well-behaved shells change + * the pgrp back to its original value before suspending so we must + * not try to restore in that case, lest we race with the command + * upon resume, potentially stopping sudo with SIGTTOU while the + * command continues to run. + */ + fd = open(_PATH_TTY, O_RDWR); + if (fd != -1) { + saved_pgrp = tcgetpgrp(fd); + if (saved_pgrp == -1) { + close(fd); + fd = -1; + } + } + + if (saved_pgrp != -1) { + /* + * Command was stopped trying to access the controlling + * terminal. If the command has a different pgrp and we + * own the controlling terminal, give it to the command's + * pgrp and let it continue. + */ + if (signo == SIGTTOU || signo == SIGTTIN) { + if (saved_pgrp == my_pgrp) { + pid_t cmnd_pgrp = getpgid(cmnd_pid); + if (cmnd_pgrp != my_pgrp) { + if (tcsetpgrp_nobg(fd, cmnd_pgrp) == 0) { + if (killpg(cmnd_pgrp, SIGCONT) != 0) + sudo_warn("kill(%d, SIGCONT)", (int)cmnd_pgrp); + close(fd); + debug_return; + } + } + } + } + } + + /* Run callback before we suspend. */ + if (callback != NULL) + callback(closure, signo); + + if (signo == SIGTSTP) { + memset(&sa, 0, sizeof(sa)); + sigemptyset(&sa.sa_mask); + sa.sa_flags = SA_RESTART; + sa.sa_handler = SIG_DFL; + if (sigaction(SIGTSTP, &sa, &osa) != 0) + sudo_warn(U_("unable to set handler for signal %d"), SIGTSTP); + } + if (kill(my_pid, signo) != 0) + sudo_warn("kill(%d, %d)", (int)my_pid, signo); + if (signo == SIGTSTP) { + if (sigaction(SIGTSTP, &osa, NULL) != 0) + sudo_warn(U_("unable to restore handler for signal %d"), SIGTSTP); + } + + /* Run callback on resume. */ + if (callback != NULL) + callback(closure, SIGCONT); + + if (saved_pgrp != -1) { + /* + * On resume, restore foreground process group, if different. + * Otherwise, we cannot resume some shells (pdksh). + * + * It is possible that we are no longer the foreground process, + * use tcsetpgrp_nobg() to prevent sudo from receiving SIGTTOU. + */ + if (saved_pgrp != my_pgrp) + tcsetpgrp_nobg(fd, saved_pgrp); + close(fd); + } + + debug_return; +} diff -Nru sudo-1.9.13p3/src/tcsetpgrp_nobg.c sudo-1.9.14p2/src/tcsetpgrp_nobg.c --- sudo-1.9.13p3/src/tcsetpgrp_nobg.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/src/tcsetpgrp_nobg.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ -/* - * SPDX-License-Identifier: ISC - * - * Copyright (c) 2017 Todd C. Miller - * - * 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 -#include -#include -#include -#include - -#include "sudo.h" - -static volatile sig_atomic_t got_sigttou; - -/* - * SIGTTOU signal handler for tcsetpgrp_nobg() that just sets a flag. - */ -static void -sigttou(int signo) -{ - got_sigttou = 1; -} - -/* - * Like tcsetpgrp() but restarts on EINTR _except_ for SIGTTOU. - * Returns 0 on success or -1 on failure, setting errno. - * Sets got_sigttou on failure if interrupted by SIGTTOU. - */ -int -tcsetpgrp_nobg(int fd, pid_t pgrp_id) -{ - struct sigaction sa, osa; - int rc; - - /* - * If we receive SIGTTOU from tcsetpgrp() it means we are - * not in the foreground process group. - * This avoid a TOCTOU race compared to using tcgetpgrp(). - */ - memset(&sa, 0, sizeof(sa)); - sigemptyset(&sa.sa_mask); - sa.sa_flags = 0; /* do not restart syscalls */ - sa.sa_handler = sigttou; - got_sigttou = 0; - (void)sigaction(SIGTTOU, &sa, &osa); - do { - rc = tcsetpgrp(fd, pgrp_id); - } while (rc != 0 && errno == EINTR && !got_sigttou); - (void)sigaction(SIGTTOU, &osa, NULL); - - return rc; -} diff -Nru sudo-1.9.13p3/src/tgetpass.c sudo-1.9.14p2/src/tgetpass.c --- sudo-1.9.13p3/src/tgetpass.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/src/tgetpass.c 2023-07-15 15:37:23.000000000 +0000 @@ -290,7 +290,7 @@ sudo_askpass(const char *askpass, const char *prompt) { static char buf[SUDO_CONV_REPL_MAX + 1], *pass; - struct sudo_cred *cred = &user_details.cred; + const struct sudo_cred *cred = sudo_askpass_cred(NULL); sigset_t chldmask; enum tgetpass_errval errval; int pfd[2], status; @@ -454,3 +454,13 @@ { signo[s] = 1; } + +const struct sudo_cred * +sudo_askpass_cred(const struct sudo_cred *cred) +{ + static const struct sudo_cred *saved_cred; + + if (cred != NULL) + saved_cred = cred; + return saved_cred; +} diff -Nru sudo-1.9.13p3/src/ttyname.c sudo-1.9.14p2/src/ttyname.c --- sudo-1.9.13p3/src/ttyname.c 2023-02-14 16:53:02.000000000 +0000 +++ sudo-1.9.14p2/src/ttyname.c 2023-07-15 15:37:23.000000000 +0000 @@ -185,7 +185,7 @@ /* Missing /proc/pid/psinfo file. */ for (i = STDIN_FILENO; i <= STDERR_FILENO; i++) { - if (isatty(i) && fstat(i, &sb) != -1) { + if (sudo_isatty(i, &sb)) { ret = sudo_ttyname_dev(sb.st_rdev, name, namelen); goto done; } @@ -286,7 +286,7 @@ /* No parent pid found, /proc/self/stat is missing or corrupt. */ for (i = STDIN_FILENO; i <= STDERR_FILENO; i++) { - if (isatty(i) && fstat(i, &sb) != -1) { + if (sudo_isatty(i, &sb)) { ret = sudo_ttyname_dev(sb.st_rdev, name, namelen); goto done; } @@ -347,25 +347,55 @@ char * get_process_ttyname(char *name, size_t namelen) { + struct stat sb; char *tty; + int i; debug_decl(get_process_ttyname, SUDO_DEBUG_UTIL); - if ((tty = ttyname(STDIN_FILENO)) == NULL) { - if ((tty = ttyname(STDOUT_FILENO)) == NULL) - tty = ttyname(STDERR_FILENO); - } - if (tty != NULL) { - if (strlcpy(name, tty, namelen) < namelen) - debug_return_str(name); - errno = ERANGE; - sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to store tty from ttyname"); - } else { - sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, - "unable to resolve tty via ttyname"); - errno = ENOENT; + for (i = STDIN_FILENO; i <= STDERR_FILENO; i++) { + /* Only call ttyname() on a character special device. */ + if (fstat(i, &sb) == -1 || !S_ISCHR(sb.st_mode)) + continue; + if ((tty = ttyname(i)) == NULL) + continue; + + if (strlcpy(name, tty, namelen) >= namelen) { + errno = ENAMETOOLONG; + sudo_debug_printf( + SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, + "unable to store tty from ttyname"); + debug_return_str(NULL); + } + debug_return_str(name); } + sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, + "unable to resolve tty via ttyname"); + errno = ENOENT; debug_return_str(NULL); } #endif + +/* + * Like isatty(3) but stats the fd and stores the result in sb. + * Only calls isatty(3) if fd is a character special device. + * Returns true if a tty, else returns false and sets errno. + */ +bool +sudo_isatty(int fd, struct stat *sb) +{ + bool ret = false; + debug_decl(sudo_isatty, SUDO_DEBUG_EXEC); + + if (fstat(fd, sb) == 0) { + if (!S_ISCHR(sb->st_mode)) { + errno = ENOTTY; + } else { + ret = isatty(fd) == 1; + } + } else { + /* Always initialize sb. */ + memset(sb, 0, sizeof(*sb)); + } + debug_return_bool(ret); +} diff -Nru sudo-1.9.13p3/src/utmp.c sudo-1.9.14p2/src/utmp.c --- sudo-1.9.13p3/src/utmp.c 2023-02-14 16:52:38.000000000 +0000 +++ sudo-1.9.14p2/src/utmp.c 2023-07-15 15:37:22.000000000 +0000 @@ -158,15 +158,10 @@ if (ut_old == NULL) { memset(ut_new, 0, sizeof(*ut_new)); - if (user == NULL) { - strncpy(ut_new->ut_user, user_details.username, - sizeof(ut_new->ut_user)); - } } else if (ut_old != ut_new) { memcpy(ut_new, ut_old, sizeof(*ut_new)); } - if (user != NULL) - strncpy(ut_new->ut_user, user, sizeof(ut_new->ut_user)); + strncpy(ut_new->ut_user, user, sizeof(ut_new->ut_user)); strncpy(ut_new->ut_line, line, sizeof(ut_new->ut_line)); #if defined(HAVE_STRUCT_UTMP_UT_ID) utmp_setid(ut_old, ut_new);