diff -Nru sudo-1.9.4p2/ChangeLog sudo-1.9.5p2/ChangeLog --- sudo-1.9.4p2/ChangeLog 2020-12-20 09:51:54.000000000 -0600 +++ sudo-1.9.5p2/ChangeLog 2021-01-23 09:46:58.000000000 -0600 @@ -1,8 +1,397 @@ +2021-01-23 Todd C. Miller + + * .hgtags: + Added tag SUDO_1_9_5p2 for changeset 83685ffbc4df + [74a2ddc3e4a4] [tip] <1.9> + + * Merge sudo 1.9.5p2 from tip + [83685ffbc4df] [SUDO_1_9_5p2] <1.9> + + * plugins/sudoers/timestamp.c: + Fix the memset offset when converting a v1 timestamp to TS_LOCKEXCL. + We want to zero the struct starting at flags, not type (which was + just set). Found by Qualys. + [09f98816fc89] + + * src/parse_args.c: + Don't assume that argv is allocated as a single flat buffer. While + this is how the kernel behaves it is not a portable assumption. The + assumption may also be violated if getopt_long(3) permutes + arguments. Found by Qualys. + [c125fbe68783] + + * NEWS, configure, configure.ac: + Sudo 1.9.5p2 + [89a357d8da4e] + + * src/parse_args.c: + Reset valid_flags to MODE_NONINTERACTIVE for sudoedit. This is + consistent with how the -e option is handled. Also reject -H and -P + flags for sudoedit as was done in sudo 1.7. Found by Qualys, this is + part of the fix for CVE-2021-3156. + [9b97f1787804] + + * plugins/sudoers/policy.c: + Add sudoedit flag checks in plugin that are consistent with front- + end. Don't assume the sudo front-end is sending reasonable mode + flags. These checks need to be kept consistent between the sudo + front-end and the sudoers plugin. + [a97dc92eae6b] + + * plugins/sudoers/sudoers.c: + Fix potential buffer overflow when unescaping backslashes in + user_args. Also, do not try to unescaping backslashes unless in run + mode *and* we are running the command via a shell. Found by Qualys, + this fixes CVE-2021-3156. + [049ad90590be] + +2021-01-22 Fabrice Fontaine + + * lib/eventlog/Makefile.in: + lib/eventlog/Makefile.in: fix static build without closefrom + + Since version 1.9.4 and https://github.com/sudo- + project/sudo/commit/bd1ca79cca827a92e904f022e49df121931d4ff5, when + closefrom is not available, libsudo_eventlog.a depends on + libsudo_util.a. So reflect this dependency in the libtool file to + avoid the following static build failure of logsrvd: + + /bin/bash ../libtool --tag=disable-static --mode=link + /home/buildroot/autobuild/instance-1/output-1/host/bin/powerpc- + linux-gcc -o sudo_logsrvd logsrv_util.o iolog_writer.o logsrvd.o + logsrvd_conf.o -static -Wl,--enable-new-dtags -Wl,-z,relro + ../lib/iolog/libsudo_iolog.la ../lib/eventlog/libsudo_eventlog.la + ../lib/logsrv/liblogsrv.la /bin/bash ../libtool --tag=disable-static + --mode=link + /home/buildroot/autobuild/instance-1/output-1/host/bin/powerpc- + linux-gcc -o sudo_sendlog logsrv_util.o sendlog.o -static -Wl,-- + enable-new-dtags -Wl,-z,relro ../lib/iolog/libsudo_iolog.la + ../lib/eventlog/libsudo_eventlog.la ../lib/logsrv/liblogsrv.la + libtool: link: + /home/buildroot/autobuild/instance-1/output-1/host/bin/powerpc- + linux-gcc -o sudo_logsrvd logsrv_util.o iolog_writer.o logsrvd.o + logsrvd_conf.o -static -Wl,--enable-new-dtags -Wl,-z -Wl,relro + ../lib/iolog/.libs/libsudo_iolog.a /home/buildroot/autobuild/instanc + e-1/output-1/build/sudo-1.9.5p1/lib/util/.libs/libsudo_util.a + -lpthread -lz ../lib/eventlog/.libs/libsudo_eventlog.a + ../lib/logsrv/.libs/liblogsrv.a + /home/buildroot/autobuild/instance-1/output-1/host/opt/ext- + toolchain/bin/../lib/gcc/powerpc-buildroot-linux- + uclibc/8.3.0/../../../../powerpc-buildroot-linux-uclibc/bin/ld: + ../lib/eventlog/.libs/libsudo_eventlog.a(eventlog.o): in function + `send_mail.constprop.1': eventlog.c:(.text+0x149c): undefined + reference to `sudo_closefrom' collect2: error: ld returned 1 exit + status + + Fixes: + - http://autobuild.buildroot.org/results/515b45f876fa9de03c9235f86017f + 4dc10eb3b54 + + Signed-off-by: Fabrice Fontaine + [4e42d276c336] + +2021-01-21 Todd C. Miller + + * plugins/sudoers/log_client.c: + Do not add an unfinished write buffer to the queue if it is already + present. In client_msg_cb() we only remove a buffer from the queue + when it is finished. Inserting the buf again can cause a cycle in + the queue. + [b398dcc0933d] + +2021-01-20 Todd C. Miller + + * plugins/sudoers/log_client.c: + Fix problem when SSL_read() returns SSL_ERROR_WANT_WRITE. This can + happen when the socket cannot be written to immediately. We need to + set the read_instead_of_write flag in that case, _not_ + write_instead_of_read. Also sync comments with sendlog.c. Bug #954 + [e4239bb932aa] + +2021-01-18 Pavel Březina + + * plugins/sudoers/auth/pam.c: + pam: pass KRB5CCNAME to pam_authenticate environment if available + + If a PAM module wants to authenticate user using GSSAPI, the + authentication is broken if non-default ccache name is used in + KRB5CCNAME environment variable. + + One way to mitigate this would be to add this to env_keep, but this + also makes the variable available in the executed command which may + not be always desirable. + + This patch sets KRB5CCNAME for pam_authenticate only, if it is + available and not yet set. + [90aba6ba6e03] + +2021-01-15 Todd C. Miller + + * lib/util/progname.c: + Fix setprogname() emulation on systems without it. For fully- + qualified paths, store the string starting after the last slash, not + at the slash itself. + [111fde52d116] + +2021-01-11 Todd C. Miller + + * .hgtags: + Added tag SUDO_1_9_5p1 for changeset 3a873a732416 + [e837c76279bc] <1.9> + + * Merge sudo 1.9.5p1 from tip + [3a873a732416] [SUDO_1_9_5p1] <1.9> + + * NEWS, configure, configure.ac: + Sudo 1.9.5p1 + [2dbbab94d4b6] + + * src/sudo_edit.c: + Run the editor with the user's real and effective uid and gid. Fixes + a bug introduced in sudo 1.9.5 where the editor was run setuid root + unless SELinux RBAC was in use. + [30fe53c07aa7] + + * NEWS: + fix typo + [52e7767881ba] + + * src/copy_file.c, src/edit_open.c: + Add casts to quiet two warnings on Solaris. + [f76126f6d68d] + +2021-01-09 Todd C. Miller + + * .hgtags: + Added tag SUDO_1_9_5 for changeset 4059f5520d9d + [ee76c8a938de] <1.9> + + * Merge sudo 1.9.5 from tip + [4059f5520d9d] [SUDO_1_9_5] <1.9> + + * plugins/sudoers/po/sudoers.pot, po/sudo.pot: + Update .pot files for 1.9.5. + [49dae07bda23] + +2021-01-08 Todd C. Miller + + * NEWS, configure, configure.ac, doc/LICENSE, etc/sudo-logsrvd.pp, + etc/sudo-python.pp, etc/sudo.pp: + Sudo 1.9.5 + [3a0e500981a8] + + * doc/sudoers.man.in, doc/sudoers.man.in.sed, doc/sudoers.mdoc.in, + plugins/sudoers/def_data.c, plugins/sudoers/def_data.h, + plugins/sudoers/def_data.in, plugins/sudoers/defaults.c, + plugins/sudoers/policy.c: + Allow SELinux support to be disabled via the sudoers file. Defaults + to true if sudo is built with SELinux support and SELinux is not + disabled on the system. + [c457eaae8692] + +2021-01-06 Todd C. Miller + + * plugins/python/python_importblocker.c: + Add a comment to verify_import() to clarify its purpose. + [30ef680f4104] + + * lib/eventlog/eventlog.c, lib/util/arc4random.c, + lib/util/sudo_debug.c, plugins/audit_json/audit_json.c, + plugins/python/python_convmessage.c, plugins/sudoers/auth/pam.c, + plugins/sudoers/getdate.c, plugins/sudoers/getdate.y, + plugins/sudoers/goodpath.c, plugins/sudoers/gram.c, + plugins/sudoers/gram.h, plugins/sudoers/gram.y, + plugins/sudoers/rcstr.c, plugins/sudoers/redblack.c, + plugins/sudoers/toke.c, plugins/sudoers/toke.l, + plugins/sudoers/toke_util.c, plugins/sudoers/visudo.c, + src/exec_common.c, src/sesh.c, src/sudo.c, src/sudo_edit.c: + Suppress PVS Studio false positives. + [077f46549351] + + * plugins/sudoers/gram.c, plugins/sudoers/gram.y: + Plug a memory leak in sudoerserrorf(). + [a3c14cf0283e] + + * plugins/sudoers/editor.c, plugins/sudoers/fmtsudoers.c, + plugins/sudoers/gram.c, plugins/sudoers/gram.y, + plugins/sudoers/ldap_util.c, plugins/sudoers/parse.h, + plugins/sudoers/starttime.c, plugins/sudoers/tsgetgrpw.c, + src/ttyname.c: + Quiet a few harmless cppcheck warnings. + [ab123790b3fd] + + * src/copy_file.c, src/sudo_edit.c: + In sudoedit, use sudo_check_temp_file() for non-SELinux too. + [b5d5bd506487] + + * MANIFEST, src/Makefile.in, src/edit_open.c, src/sesh.c, + src/sudo_edit.c, src/sudo_edit.h, src/sudo_exec.h: + Move safe open code out of sudo_edit.c and into edit_open.c. + [108fcca05798] + + * src/Makefile.in, src/edit_open.c, src/sesh.c, src/sudo_edit.c, + src/sudo_edit.h: + Add directory writability checks for SELinux RBAC sudoedit. These + were never added to the SELinux RBAC path. + [0d4f28b5a8e2] + + * src/edit_open.c, src/exec.c, src/exec_pty.c, src/sesh.c, src/sudo.c, + src/sudo.h, src/sudo_edit.c, src/sudo_edit.h, src/tgetpass.c: + Add struct sudo_cred to hold the invoking or runas user credentials. + We can use this when we need to pass around credential info instead + of the user_details and command_details structs. + [20594f3f00c1] + + * src/edit_open.c, src/sesh.c, src/sudo_edit.c, src/sudo_edit.h: + Rename run_cred -> cur_cred and stash existing creds in + set_tmpdir(). For sudo_edit_open() et al what we need is a copy of + the current cred to restore after dir_is_writable() changes to the + user cred. + [dcfce8a11282] + + * configure, configure.ac, include/sudo_compat.h, lib/util/progname.c: + Add setprogname(3) for those without it. + [e2f1d1ecedb0] + + * src/sesh.c, src/sudo_edit.c: + Split up sesh_sudoedit() so it is organized more like sudo_edit.c. + The new sesh_edit_create_tfiles() and sesh_edit_copy_tfiles() + functions are analogous to sudo_edit_create_tfiles() and + sudo_edit_copy_tfiles(). Also use "sudoedit" in the warning/error + messages from sesh_sudoedit(). Otherwise, the user gets a mix of + messages from sudoedit and sesh. + [5510be4b2129] + + * Makefile.in, lib/eventlog/Makefile.in, lib/iolog/Makefile.in, + lib/logsrv/Makefile.in, lib/util/Makefile.in, logsrvd/Makefile.in, + 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: + Remove the --force option from the cppcheck args, it causes errors. + [57f2ad72e874] + + * include/sudo_util.h, lib/util/progname.c, lib/util/util.exp.in, + src/sudo.c: + For sudo, only allow "sudo" or "sudoedit" as the program name. The + program name is also used when matching Debug lines in sudo.conf. We + don't want the user to be able to influence sudo.conf Debug + matching. The string "sudoedit" is treated the same as "sudo" in + sudo.conf. Problem reported by Matthias Gerstner of SUSE. + [1d32c53859f9] + + * lib/iolog/iolog_fileio.c, lib/util/sudo_debug.c, + plugins/group_file/getgrent.c, plugins/sudoers/linux_audit.c, + plugins/sudoers/tsgetgrpw.c: + Check the return value of fcntl() when setting FD_CLOEXEC. This + should never fail unless the fd is invalid. Problem reported by + Matthias Gerstner of SUSE. + [f1ca39a0d870] + + * src/sudo_edit.c: + Fix potential directory existing info leak in sudoedit. When + creating a new file, sudoedit checks to make sure the parent + directory exists so it can provide the user with a sensible error + message. However, this could be used to test for the existence of + directories not normally accessible to the user by pointing to them + with a symbolic link when the parent directory is controlled by the + user. Problem reported by Matthias Gerstner of SUSE. + [ea19d0073c02] + + * src/copy_file.c, src/sesh.c, src/sudo_edit.c, src/sudo_exec.h: + Add security checks before using temp files for SELinux RBAC + sudoedit. Otherwise, it may be possible for the user running + sudoedit to replace the newly-created temporary files with a + symbolic link and have sudoedit set the owner of an arbitrary file. + Problem reported by Matthias Gerstner of SUSE. + [8fcb36ef422a] + + * plugins/sudoers/po/hr.mo, plugins/sudoers/po/hr.po, + plugins/sudoers/po/it.mo, plugins/sudoers/po/it.po, + plugins/sudoers/po/ko.mo, plugins/sudoers/po/ko.po, + plugins/sudoers/po/sr.mo, plugins/sudoers/po/sr.po, + plugins/sudoers/po/sv.mo, plugins/sudoers/po/sv.po, po/ko.mo, + po/ko.po, po/sr.mo, po/sr.po, po/sv.mo, po/sv.po: + Updated translations from translationproject.org + [e68c92c767f1] + +2021-01-04 Todd C. Miller + + * plugins/sudoers/sudoers.c: + Use debug_return_int() not debug_return_bool() to return -1. Found + by PVS Studio. + [f1f67ca51aeb] + + * plugins/sudoers/logging.c: + Fix a crash introduced in 1.9.4 when running "sudo -i" as an unknown + user. + [d1a3f0f4d0f9] + +2021-01-03 Todd C. Miller + + * plugins/sudoers/check.c: + Make sure lecture file is a regular file before reading it. + [c9c68eff1e45] + +2021-01-02 Todd C. Miller + + * Makefile.in, lib/eventlog/Makefile.in, lib/iolog/Makefile.in, + lib/logsrv/Makefile.in, lib/util/Makefile.in, logsrvd/Makefile.in, + plugins/audit_json/Makefile.in, plugins/group_file/Makefile.in, + plugins/group_file/plugin_test.c, plugins/python/Makefile.in, + plugins/sample/Makefile.in, plugins/sample_approval/Makefile.in, + plugins/sudoers/Makefile.in, plugins/sudoers/parse.h, + plugins/system_group/Makefile.in, src/Makefile.in: + Minor fixes pointed out by cppcheck. Also add + compareBoolExpressionWithInt to suppression list. + [52316819700e] + + * logsrvd/logsrvd.c: + Avoid potential use after free with eventlog-only connections. + Coverity CID 215884. + [cca5cffabe42] + + * src/exec.c: + Cannot do direct exec of a command when SELinux RBAC is enabled. + [2706b0fc1451] + + * MANIFEST, configure, configure.ac, include/sudo_compat.h, + lib/util/Makefile.in, lib/util/pread.c, lib/util/pwrite.c, + scripts/mkdep.pl: + Add emulation of pread(3) and pwrite(3) for systems without them. + This makes it possible to remove some ugly #ifdefs and only affects + very old systems. + [1c2a31bda598] + + * lib/iolog/iolog_fileio.c, plugins/sudoers/match_command.c, + plugins/sudoers/timestamp.c: + Remove #ifdefs around code using pread(3) and pwrite(3). + [3830fdf650df] + + * plugins/sudoers/Makefile.in: + Regen now that ldap.c and sssd.c no longer need gram.h + [5cc4e107f301] + +2020-12-30 Todd C. Miller + + * lib/util/fatal.c: + Fix deregistration of a callback that is not at the head of the + list. The SLIST_FOREACH_PREVPTR macro doesn't work the way I thought + it did. Just store our own prev pointer and use that instead. + [04c290fe1fcb] + +2020-12-21 Todd C. Miller + + * src/net_ifs.c: + Fix the buffer size parameter when serializing the interface list. + Problem reported by Matthias Gerstner of SUSE. + [b0cae3ac8e46] + 2020-12-20 Todd C. Miller * .hgtags: Added tag SUDO_1_9_4p2 for changeset 8aed5221ede9 - [a74faf363dbb] [tip] <1.9> + [a74faf363dbb] <1.9> * merge sudo 1.9.4p2 from tip [8aed5221ede9] [SUDO_1_9_4p2] <1.9> diff -Nru sudo-1.9.4p2/configure sudo-1.9.5p2/configure --- sudo-1.9.4p2/configure 2020-12-20 09:51:07.000000000 -0600 +++ sudo-1.9.5p2/configure 2021-01-23 09:45:11.000000000 -0600 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for sudo 1.9.4p2. +# Generated by GNU Autoconf 2.69 for sudo 1.9.5p2. # # Report bugs to . # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='sudo' PACKAGE_TARNAME='sudo' -PACKAGE_VERSION='1.9.4p2' -PACKAGE_STRING='sudo 1.9.4p2' +PACKAGE_VERSION='1.9.5p2' +PACKAGE_STRING='sudo 1.9.5p2' PACKAGE_BUGREPORT='https://bugzilla.sudo.ws/' PACKAGE_URL='' @@ -1584,7 +1584,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.4p2 to adapt to many kinds of systems. +\`configure' configures sudo 1.9.5p2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1650,7 +1650,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of sudo 1.9.4p2:";; + short | recursive ) echo "Configuration of sudo 1.9.5p2:";; esac cat <<\_ACEOF @@ -1924,7 +1924,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -sudo configure 1.9.4p2 +sudo configure 1.9.5p2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2633,7 +2633,7 @@ 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.4p2, which was +It was created by sudo $as_me 1.9.5p2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2928,8 +2928,6 @@ as_fn_append ac_func_list " fexecve" as_fn_append ac_func_list " killpg" as_fn_append ac_func_list " nl_langinfo" -as_fn_append ac_func_list " pread" -as_fn_append ac_func_list " pwrite" as_fn_append ac_func_list " faccessat" as_fn_append ac_func_list " wordexp" as_fn_append ac_func_list " getauxval" @@ -19437,10 +19435,6 @@ - - - - case "$host_os" in hpux*) if test X"$ac_cv_func_pread" = X"yes"; then @@ -19466,6 +19460,58 @@ fi ;; esac +for ac_func in pread +do : + ac_fn_c_check_func "$LINENO" "pread" "ac_cv_func_pread" +if test "x$ac_cv_func_pread" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_PREAD 1 +_ACEOF + +else + + case " $LIBOBJS " in + *" pread.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS pread.$ac_objext" + ;; +esac + + + for _sym in sudo_pread; do + COMPAT_EXP="${COMPAT_EXP}${_sym} +" + done + + +fi +done + +for ac_func in pwrite +do : + ac_fn_c_check_func "$LINENO" "pwrite" "ac_cv_func_pwrite" +if test "x$ac_cv_func_pwrite" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_PWRITE 1 +_ACEOF + +else + + case " $LIBOBJS " in + *" pwrite.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS pwrite.$ac_objext" + ;; +esac + + + for _sym in sudo_pwrite; do + COMPAT_EXP="${COMPAT_EXP}${_sym} +" + done + + +fi +done + for ac_func in cfmakeraw do : ac_fn_c_check_func "$LINENO" "cfmakeraw" "ac_cv_func_cfmakeraw" @@ -22884,7 +22930,8 @@ cat >>confdefs.h <<_ACEOF #define HAVE_GETPROGNAME 1 _ACEOF - for ac_func in setprogname + + for ac_func in setprogname do : ac_fn_c_check_func "$LINENO" "setprogname" "ac_cv_func_setprogname" if test "x$ac_cv_func_setprogname" = xyes; then : @@ -22892,9 +22939,17 @@ #define HAVE_SETPROGNAME 1 _ACEOF +else + + for _sym in sudo_setprogname; do + COMPAT_EXP="${COMPAT_EXP}${_sym} +" + done + fi done + else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __progname" >&5 @@ -22936,6 +22991,12 @@ done + for _sym in sudo_setprogname; do + COMPAT_EXP="${COMPAT_EXP}${_sym} +" + done + + fi done @@ -28755,7 +28816,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by sudo $as_me 1.9.4p2, which was +This file was extended by sudo $as_me 1.9.5p2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -28821,7 +28882,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -sudo config.status 1.9.4p2 +sudo config.status 1.9.5p2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru sudo-1.9.4p2/configure.ac sudo-1.9.5p2/configure.ac --- sudo-1.9.4p2/configure.ac 2020-12-20 09:51:07.000000000 -0600 +++ sudo-1.9.5p2/configure.ac 2021-01-23 09:45:11.000000000 -0600 @@ -3,7 +3,7 @@ dnl dnl SPDX-License-Identifier: ISC dnl -dnl Copyright (c) 1994-1996, 1998-2020 Todd C. Miller +dnl Copyright (c) 1994-1996, 1998-2021 Todd C. Miller dnl dnl Permission to use, copy, modify, and distribute this software for any dnl purpose with or without fee is hereby granted, provided that the above @@ -18,7 +18,7 @@ dnl OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. dnl AC_PREREQ([2.59]) -AC_INIT([sudo], [1.9.4p2], [https://bugzilla.sudo.ws/], [sudo]) +AC_INIT([sudo], [1.9.5p2], [https://bugzilla.sudo.ws/], [sudo]) AC_CONFIG_HEADERS([config.h pathnames.h]) AC_CONFIG_SRCDIR([src/sudo.c]) dnl @@ -2641,7 +2641,7 @@ dnl Function checks dnl AC_FUNC_GETGROUPS -AC_CHECK_FUNCS_ONCE([fexecve killpg nl_langinfo pread pwrite faccessat wordexp getauxval fseeko]) +AC_CHECK_FUNCS_ONCE([fexecve killpg nl_langinfo faccessat wordexp getauxval fseeko]) case "$host_os" in hpux*) if test X"$ac_cv_func_pread" = X"yes"; then @@ -2654,6 +2654,14 @@ fi ;; esac +AC_CHECK_FUNCS([pread], [], [ + AC_LIBOBJ(pread) + SUDO_APPEND_COMPAT_EXP(sudo_pread) +]) +AC_CHECK_FUNCS([pwrite], [], [ + AC_LIBOBJ(pwrite) + SUDO_APPEND_COMPAT_EXP(sudo_pwrite) +]) AC_CHECK_FUNCS([cfmakeraw], [], [ AC_LIBOBJ(cfmakeraw) SUDO_APPEND_COMPAT_EXP(sudo_cfmakeraw) @@ -3301,9 +3309,11 @@ LIBS="$OLIBS" dnl -dnl Check for getprogname() or __progname +dnl Check for getprogname()/setprogname() or __progname dnl -AC_CHECK_FUNCS([getprogname], [AC_CHECK_FUNCS([setprogname])], [ +AC_CHECK_FUNCS([getprogname], [ + AC_CHECK_FUNCS([setprogname], [], [SUDO_APPEND_COMPAT_EXP(sudo_setprogname)]) +], [ AC_MSG_CHECKING([for __progname]) AC_CACHE_VAL(sudo_cv___progname, [ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[extern char *__progname; if (__progname[0] == '\0') return 1;]])], [sudo_cv___progname=yes], [sudo_cv___progname=no])]) @@ -3312,6 +3322,7 @@ fi AC_MSG_RESULT($sudo_cv___progname) SUDO_APPEND_COMPAT_EXP(sudo_getprogname) + SUDO_APPEND_COMPAT_EXP(sudo_setprogname) ]) dnl dnl Check for __func__ or __FUNCTION__ diff -Nru sudo-1.9.4p2/debian/changelog sudo-1.9.5p2/debian/changelog --- sudo-1.9.4p2/debian/changelog 2021-01-30 13:35:13.000000000 -0600 +++ sudo-1.9.5p2/debian/changelog 2021-02-10 05:42:42.000000000 -0600 @@ -1,3 +1,63 @@ +sudo (1.9.5p2-2ubuntu1) hirsute; urgency=low + + * Merge from Debian unstable. (LP: #1915307) + Remaining changes: + - debian/rules: + + use dh-autoreconf + - debian/rules: stop shipping init scripts, as they are no longer + necessary. + - debian/rules: + + compile with --without-lecture --with-tty-tickets --enable-admin-flag + + install man/man8/sudo_root.8 in both flavours + + install apport hooks + - debian/sudo-ldap.dirs, debian/sudo.dirs: + + add usr/share/apport/package-hooks + - debian/sudo.pam: + + Use pam_env to read /etc/environment and /etc/default/locale + environment files. Reading ~/.pam_environment is not permitted due + to security reasons. + - debian/sudoers: + + also grant admin group sudo access + + include /snap/bin in the secure_path + + -- William 'jawn-smith' Wilson Wed, 10 Feb 2021 05:42:42 -0600 + +sudo (1.9.5p2-2) unstable; urgency=medium + + * patch from upstream repo to fix NO_ROOT_MAILER + + -- Bdale Garbee Fri, 29 Jan 2021 18:12:32 -0700 + +sudo (1.9.5p2-1) unstable; urgency=high + + * new upstream version, addresses CVE-2021-3156 + + -- Bdale Garbee Tue, 26 Jan 2021 21:20:05 -0700 + +sudo (1.9.5p1-1.1) unstable; urgency=high + + * Non-maintainer upload. + * Heap-based buffer overflow (CVE-2021-3156) + - Reset valid_flags to MODE_NONINTERACTIVE for sudoedit + - Add sudoedit flag checks in plugin that are consistent with front-end + - Fix potential buffer overflow when unescaping backslashes in user_args + - Fix the memset offset when converting a v1 timestamp to TS_LOCKEXCL + - Don't assume that argv is allocated as a single flat buffer + + -- Salvatore Bonaccorso Wed, 20 Jan 2021 10:11:47 +0100 + +sudo (1.9.5p1-1) unstable; urgency=medium + + * new upstream version, closes: #980028 + + -- Bdale Garbee Wed, 13 Jan 2021 01:09:19 -0700 + +sudo (1.9.5-1) unstable; urgency=medium + + * new upstream version + + -- Bdale Garbee Mon, 11 Jan 2021 15:15:48 -0700 + sudo (1.9.4p2-2ubuntu3) hirsute; urgency=medium * SECURITY UPDATE: ineffective NO_ROOT_MAILER hardening option diff -Nru sudo-1.9.4p2/debian/patches/CVE-2021-23239.patch sudo-1.9.5p2/debian/patches/CVE-2021-23239.patch --- sudo-1.9.4p2/debian/patches/CVE-2021-23239.patch 2021-01-26 13:34:53.000000000 -0600 +++ sudo-1.9.5p2/debian/patches/CVE-2021-23239.patch 1969-12-31 18:00:00.000000000 -0600 @@ -1,57 +0,0 @@ - -# HG changeset patch -# User Todd C. Miller -# Date 1609953360 25200 -# Node ID ea19d0073c02951bbbf35342dd63304da83edce8 -# Parent f1ca39a0d87089d005b78a2556e2b1a2dc17f672 -Fix potential directory existing info leak in sudoedit. -When creating a new file, sudoedit checks to make sure the parent -directory exists so it can provide the user with a sensible error -message. However, this could be used to test for the existence of -directories not normally accessible to the user by pointing to them -with a symbolic link when the parent directory is controlled by the -user. Problem reported by Matthias Gerstner of SUSE. - -diff -r f1ca39a0d870 -r ea19d0073c02 src/sudo_edit.c ---- a/src/sudo_edit.c Wed Jan 06 10:16:00 2021 -0700 -+++ b/src/sudo_edit.c Wed Jan 06 10:16:00 2021 -0700 -@@ -541,14 +541,33 @@ - S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, command_details); - if (ofd != -1 || errno == ENOENT) { - if (ofd == -1) { -- /* New file, verify parent dir exists unless in cwd. */ -+ /* -+ * New file, verify parent dir exists unless in cwd. -+ * This fails early so the user knows ahead of time if the -+ * edit won't succeed. Additional checks are performed -+ * when copying the temporary file back to the origin. -+ */ - char *slash = strrchr(files[i], '/'); - if (slash != NULL && slash != files[i]) { -- int serrno = errno; -+ const int sflags = command_details->flags; -+ const int serrno = errno; -+ int dfd; -+ -+ /* -+ * The parent directory is allowed to be a symbolic -+ * link as long as *its* parent is not writable. -+ */ - *slash = '\0'; -- if (stat(files[i], &sb) == 0 && S_ISDIR(sb.st_mode)) { -- memset(&sb, 0, sizeof(sb)); -- rc = 0; -+ SET(command_details->flags, CD_SUDOEDIT_FOLLOW); -+ dfd = sudo_edit_open(files[i], DIR_OPEN_FLAGS, -+ S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, command_details); -+ command_details->flags = sflags; -+ if (dfd != -1) { -+ if (fstat(dfd, &sb) == 0 && S_ISDIR(sb.st_mode)) { -+ memset(&sb, 0, sizeof(sb)); -+ rc = 0; -+ } -+ close(dfd); - } - *slash = '/'; - errno = serrno; - diff -Nru sudo-1.9.4p2/debian/patches/CVE-2021-3156-1.patch sudo-1.9.5p2/debian/patches/CVE-2021-3156-1.patch --- sudo-1.9.4p2/debian/patches/CVE-2021-3156-1.patch 2021-01-26 13:35:02.000000000 -0600 +++ sudo-1.9.5p2/debian/patches/CVE-2021-3156-1.patch 1969-12-31 18:00:00.000000000 -0600 @@ -1,90 +0,0 @@ -# HG changeset patch -# Parent 111fde52d1166af65b622da6eae19791ce0e8871 -Reset valid_flags to MODE_NONINTERACTIVE for sudoedit. -This is consistent with how the -e option is handled. -Also reject -H and -P flags for sudoedit as was done in sudo 1.7. -Found by Qualys. - ---- a/src/parse_args.c -+++ b/src/parse_args.c -@@ -117,7 +117,10 @@ struct environment { - /* - * Default flags allowed when running a command. - */ --#define DEFAULT_VALID_FLAGS (MODE_BACKGROUND|MODE_PRESERVE_ENV|MODE_RESET_HOME|MODE_LOGIN_SHELL|MODE_NONINTERACTIVE|MODE_SHELL) -+#define DEFAULT_VALID_FLAGS (MODE_BACKGROUND|MODE_PRESERVE_ENV|MODE_RESET_HOME|MODE_LOGIN_SHELL|MODE_NONINTERACTIVE|MODE_PRESERVE_GROUPS|MODE_SHELL) -+#define EDIT_VALID_FLAGS MODE_NONINTERACTIVE -+#define LIST_VALID_FLAGS (MODE_NONINTERACTIVE|MODE_LONG_LIST) -+#define VALIDATE_VALID_FLAGS MODE_NONINTERACTIVE - - /* Option number for the --host long option due to ambiguity of the -h flag. */ - #define OPT_HOSTNAME 256 -@@ -262,6 +265,7 @@ parse_args(int argc, char **argv, int *o - progname = "sudoedit"; - mode = MODE_EDIT; - sudo_settings[ARG_SUDOEDIT].value = "true"; -+ valid_flags = EDIT_VALID_FLAGS; - } - - /* Load local IP addresses and masks. */ -@@ -365,7 +369,7 @@ parse_args(int argc, char **argv, int *o - usage_excl(); - mode = MODE_EDIT; - sudo_settings[ARG_SUDOEDIT].value = "true"; -- valid_flags = MODE_NONINTERACTIVE; -+ valid_flags = EDIT_VALID_FLAGS; - break; - case 'g': - assert(optarg != NULL); -@@ -377,6 +381,7 @@ parse_args(int argc, char **argv, int *o - break; - case 'H': - sudo_settings[ARG_SET_HOME].value = "true"; -+ SET(flags, MODE_RESET_HOME); - break; - case 'h': - if (optarg == NULL) { -@@ -431,7 +436,7 @@ parse_args(int argc, char **argv, int *o - usage_excl(); - } - mode = MODE_LIST; -- valid_flags = MODE_NONINTERACTIVE|MODE_LONG_LIST; -+ valid_flags = LIST_VALID_FLAGS; - break; - case 'n': - SET(flags, MODE_NONINTERACTIVE); -@@ -439,6 +444,7 @@ parse_args(int argc, char **argv, int *o - break; - case 'P': - sudo_settings[ARG_PRESERVE_GROUPS].value = "true"; -+ SET(flags, MODE_PRESERVE_GROUPS); - break; - case 'p': - /* An empty prompt is allowed. */ -@@ -505,7 +511,7 @@ parse_args(int argc, char **argv, int *o - if (mode && mode != MODE_VALIDATE) - usage_excl(); - mode = MODE_VALIDATE; -- valid_flags = MODE_NONINTERACTIVE; -+ valid_flags = VALIDATE_VALID_FLAGS; - break; - case 'V': - if (mode && mode != MODE_VERSION) -@@ -533,7 +539,7 @@ parse_args(int argc, char **argv, int *o - if (!mode) { - /* Defer -k mode setting until we know whether it is a flag or not */ - if (sudo_settings[ARG_IGNORE_TICKET].value != NULL) { -- if (argc == 0 && !(flags & (MODE_SHELL|MODE_LOGIN_SHELL))) { -+ if (argc == 0 && !ISSET(flags, MODE_SHELL|MODE_LOGIN_SHELL)) { - mode = MODE_INVALIDATE; /* -k by itself */ - sudo_settings[ARG_IGNORE_TICKET].value = NULL; - valid_flags = 0; -@@ -601,7 +607,7 @@ parse_args(int argc, char **argv, int *o - /* - * For shell mode we need to rewrite argv - */ -- if (ISSET(mode, MODE_RUN) && ISSET(flags, MODE_SHELL)) { -+ if (ISSET(flags, MODE_SHELL|MODE_LOGIN_SHELL) && ISSET(mode, MODE_RUN)) { - char **av, *cmnd = NULL; - int ac = 1; - diff -Nru sudo-1.9.4p2/debian/patches/CVE-2021-3156-2.patch sudo-1.9.5p2/debian/patches/CVE-2021-3156-2.patch --- sudo-1.9.4p2/debian/patches/CVE-2021-3156-2.patch 2021-01-26 13:35:07.000000000 -0600 +++ sudo-1.9.5p2/debian/patches/CVE-2021-3156-2.patch 1969-12-31 18:00:00.000000000 -0600 @@ -1,35 +0,0 @@ -# HG changeset patch -# Parent 4e0af3ef53d71d1e0d1ee5894a0c078020ab391a -Add sudoedit flag checks in plugin that are consistent with front-end. -Don't assume the sudo front-end is sending reasonable mode flags. -These checks need to be kept consistent between the sudo front-end -and the sudoers plugin. - ---- a/plugins/sudoers/policy.c -+++ b/plugins/sudoers/policy.c -@@ -88,10 +88,11 @@ parse_bool(const char *line, int varlen, - int - sudoers_policy_deserialize_info(void *v) - { -+ const int edit_mask = MODE_EDIT|MODE_IGNORE_TICKET|MODE_NONINTERACTIVE; - struct sudoers_open_info *info = v; -- char * const *cur; - const char *p, *errstr, *groups = NULL; - const char *remhost = NULL; -+ char * const *cur; - int flags = 0; - debug_decl(sudoers_policy_deserialize_info, SUDOERS_DEBUG_PLUGIN); - -@@ -348,6 +349,12 @@ sudoers_policy_deserialize_info(void *v) - #endif - } - -+ /* Sudo front-end should restrict mode flags for sudoedit. */ -+ if (ISSET(flags, MODE_EDIT) && (flags & edit_mask) != flags) { -+ sudo_warnx(U_("invalid mode flags from sudo front end: 0x%x"), flags); -+ goto bad; -+ } -+ - user_gid = (gid_t)-1; - user_sid = (pid_t)-1; - user_uid = (gid_t)-1; diff -Nru sudo-1.9.4p2/debian/patches/CVE-2021-3156-3.patch sudo-1.9.5p2/debian/patches/CVE-2021-3156-3.patch --- sudo-1.9.4p2/debian/patches/CVE-2021-3156-3.patch 2021-01-26 13:37:32.000000000 -0600 +++ sudo-1.9.5p2/debian/patches/CVE-2021-3156-3.patch 1969-12-31 18:00:00.000000000 -0600 @@ -1,63 +0,0 @@ -# HG changeset patch -# Parent 9b29e05ea310e187e41d8bcb58eddef8bd8b70d3 -Fix potential buffer overflow when unescaping backslashes in user_args. -Do not try to unescaping backslashes unless in run mode *and* we are -running the command via a shell. -Found by Qualys. - ---- a/plugins/sudoers/sudoers.c -+++ b/plugins/sudoers/sudoers.c -@@ -547,7 +547,7 @@ sudoers_policy_main(int argc, char * con - - /* If run as root with SUDO_USER set, set sudo_user.pw to that user. */ - /* XXX - causes confusion when root is not listed in sudoers */ -- if (sudo_mode & (MODE_RUN | MODE_EDIT) && prev_user != NULL) { -+ if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT) && prev_user != NULL) { - if (user_uid == 0 && strcmp(prev_user, "root") != 0) { - struct passwd *pw; - -@@ -932,8 +932,8 @@ set_cmnd(void) - if (user_cmnd == NULL) - user_cmnd = NewArgv[0]; - -- if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { -- if (ISSET(sudo_mode, MODE_RUN | MODE_CHECK)) { -+ if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT|MODE_CHECK)) { -+ if (!ISSET(sudo_mode, MODE_EDIT)) { - const char *runchroot = user_runchroot; - if (runchroot == NULL && def_runchroot != NULL && - strcmp(def_runchroot, "*") != 0) -@@ -961,7 +961,8 @@ set_cmnd(void) - sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - debug_return_int(NOT_FOUND_ERROR); - } -- if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { -+ if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL) && -+ ISSET(sudo_mode, MODE_RUN)) { - /* - * When running a command via a shell, the sudo front-end - * escapes potential meta chars. We unescape non-spaces -@@ -969,10 +970,22 @@ set_cmnd(void) - */ - for (to = user_args, av = NewArgv + 1; (from = *av); av++) { - while (*from) { -- if (from[0] == '\\' && !isspace((unsigned char)from[1])) -+ if (from[0] == '\\' && from[1] != '\0' && -+ !isspace((unsigned char)from[1])) { - from++; -+ } -+ if (size - (to - user_args) < 1) { -+ sudo_warnx(U_("internal error, %s overflow"), -+ __func__); -+ debug_return_int(NOT_FOUND_ERROR); -+ } - *to++ = *from++; - } -+ if (size - (to - user_args) < 1) { -+ sudo_warnx(U_("internal error, %s overflow"), -+ __func__); -+ debug_return_int(NOT_FOUND_ERROR); -+ } - *to++ = ' '; - } - *--to = '\0'; diff -Nru sudo-1.9.4p2/debian/patches/CVE-2021-3156-4.patch sudo-1.9.5p2/debian/patches/CVE-2021-3156-4.patch --- sudo-1.9.4p2/debian/patches/CVE-2021-3156-4.patch 2021-01-26 13:36:53.000000000 -0600 +++ sudo-1.9.5p2/debian/patches/CVE-2021-3156-4.patch 1969-12-31 18:00:00.000000000 -0600 @@ -1,19 +0,0 @@ -# HG changeset patch -# Parent 5c6c54c8f971dfa21977935328942a57591ce5a8 -Fix the memset offset when converting a v1 timestamp to TS_LOCKEXCL. -We want to zero the struct starting at flags, not type (which was just set). -Found by Qualys. - ---- a/plugins/sudoers/timestamp.c -+++ b/plugins/sudoers/timestamp.c -@@ -662,8 +662,8 @@ timestamp_lock(void *vcookie, struct pas - if (entry.size == sizeof(struct timestamp_entry_v1)) { - /* Old sudo record, convert it to TS_LOCKEXCL. */ - entry.type = TS_LOCKEXCL; -- memset((char *)&entry + offsetof(struct timestamp_entry, type), 0, -- nread - offsetof(struct timestamp_entry, type)); -+ memset((char *)&entry + offsetof(struct timestamp_entry, flags), 0, -+ nread - offsetof(struct timestamp_entry, flags)); - if (ts_write(cookie->fd, cookie->fname, &entry, 0) == -1) - debug_return_bool(false); - } else { diff -Nru sudo-1.9.4p2/debian/patches/CVE-2021-3156-5.patch sudo-1.9.5p2/debian/patches/CVE-2021-3156-5.patch --- sudo-1.9.4p2/debian/patches/CVE-2021-3156-5.patch 2021-01-26 13:37:01.000000000 -0600 +++ sudo-1.9.5p2/debian/patches/CVE-2021-3156-5.patch 1969-12-31 18:00:00.000000000 -0600 @@ -1,31 +0,0 @@ -# HG changeset patch -# Parent a84c8fe05da6097efaa00d8dee8a07b5816ae84e -Don't assume that argv is allocated as a single flat buffer. -While this is how the kernel behaves it is not a portable assumption. -The assumption may also be violated if getopt_long(3) permutes arguments. -Found by Qualys. - ---- a/src/parse_args.c -+++ b/src/parse_args.c -@@ -614,16 +614,16 @@ parse_args(int argc, char **argv, int *o - if (argc != 0) { - /* shell -c "command" */ - char *src, *dst; -- size_t cmnd_size = (size_t) (argv[argc - 1] - argv[0]) + -- strlen(argv[argc - 1]) + 1; -+ size_t size = 0; - -- cmnd = dst = reallocarray(NULL, cmnd_size, 2); -- if (cmnd == NULL) -+ for (av = argv; *av != NULL; av++) -+ size += strlen(*av) + 1; -+ if (size == 0 || (cmnd = reallocarray(NULL, size, 2)) == NULL) - sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - if (!gc_add(GC_PTR, cmnd)) - exit(EXIT_FAILURE); - -- for (av = argv; *av != NULL; av++) { -+ for (dst = cmnd, av = argv; *av != NULL; av++) { - for (src = *av; *src != '\0'; src++) { - /* quote potential meta characters */ - if (!isalnum((unsigned char)*src) && *src != '_' && *src != '-' && *src != '$') diff -Nru sudo-1.9.4p2/debian/patches/fix-no-root-mailer.diff sudo-1.9.5p2/debian/patches/fix-no-root-mailer.diff --- sudo-1.9.4p2/debian/patches/fix-no-root-mailer.diff 1969-12-31 18:00:00.000000000 -0600 +++ sudo-1.9.5p2/debian/patches/fix-no-root-mailer.diff 2021-01-29 19:12:32.000000000 -0600 @@ -0,0 +1,51 @@ + +# HG changeset patch +# User Todd C. Miller +# Date 1611924154 25200 +# Node ID e0d4f196ba027604154f79ddd03a0b90f90c9607 +# Parent cd1c7615e861083e9e9b61d0e0070354e227ea5c +Fix NO_ROOT_MAILER, broken by the eventlog refactor in sudo 1.9.4. +init_eventlog_config() is called immediately after initializing the +Defaults settings, which is before struct sudo_user is setup. This +adds a call to eventlog_set_mailuid() if NO_ROOT_MAILER is defined +after the invoking user is determined. Reported by Roman Fiedler. + +diff -r cd1c7615e861 -r e0d4f196ba02 plugins/sudoers/logging.c +--- a/plugins/sudoers/logging.c Tue Dec 08 12:35:21 2020 -0700 ++++ b/plugins/sudoers/logging.c Fri Jan 29 05:42:34 2021 -0700 +@@ -786,11 +786,6 @@ + init_eventlog_config(void) + { + int logtype = 0; +-#ifdef NO_ROOT_MAILER +- uid_t mailuid = user_uid; +-#else +- uid_t mailuid = ROOT_UID; +-#endif + debug_decl(init_eventlog_config, SUDOERS_DEBUG_LOGGING); + + if (def_syslog) +@@ -805,7 +800,7 @@ + eventlog_set_syslog_alertpri(def_syslog_badpri); + eventlog_set_syslog_maxlen(def_syslog_maxlen); + eventlog_set_file_maxlen(def_loglinelen); +- eventlog_set_mailuid(mailuid); ++ eventlog_set_mailuid(ROOT_UID); + eventlog_set_omit_hostname(!def_log_host); + eventlog_set_logpath(def_logfile); + eventlog_set_time_fmt(def_log_year ? "%h %e %T %Y" : "%h %e %T"); +diff -r cd1c7615e861 -r e0d4f196ba02 plugins/sudoers/policy.c +--- a/plugins/sudoers/policy.c Tue Dec 08 12:35:21 2020 -0700 ++++ b/plugins/sudoers/policy.c Fri Jan 29 05:42:34 2021 -0700 +@@ -518,6 +518,10 @@ + /* Some systems support fexecve() which we use for digest matches. */ + cmnd_fd = -1; + ++#ifdef NO_ROOT_MAILER ++ eventlog_set_mailuid(user_uid); ++#endif ++ + /* Dump settings and user info (XXX - plugin args) */ + for (cur = info->settings; *cur != NULL; cur++) + sudo_debug_printf(SUDO_DEBUG_INFO, "settings: %s", *cur); + diff -Nru sudo-1.9.4p2/debian/patches/ineffective_no_root_mailer.patch sudo-1.9.5p2/debian/patches/ineffective_no_root_mailer.patch --- sudo-1.9.4p2/debian/patches/ineffective_no_root_mailer.patch 2021-01-30 13:35:09.000000000 -0600 +++ sudo-1.9.5p2/debian/patches/ineffective_no_root_mailer.patch 1969-12-31 18:00:00.000000000 -0600 @@ -1,51 +0,0 @@ - -# HG changeset patch -# User Todd C. Miller -# Date 1611924154 25200 -# Node ID e0d4f196ba027604154f79ddd03a0b90f90c9607 -# Parent cd1c7615e861083e9e9b61d0e0070354e227ea5c -Fix NO_ROOT_MAILER, broken by the eventlog refactor in sudo 1.9.4. -init_eventlog_config() is called immediately after initializing the -Defaults settings, which is before struct sudo_user is setup. This -adds a call to eventlog_set_mailuid() if NO_ROOT_MAILER is defined -after the invoking user is determined. Reported by Roman Fiedler. - -diff -r cd1c7615e861 -r e0d4f196ba02 plugins/sudoers/logging.c ---- a/plugins/sudoers/logging.c Tue Dec 08 12:35:21 2020 -0700 -+++ b/plugins/sudoers/logging.c Fri Jan 29 05:42:34 2021 -0700 -@@ -786,11 +786,6 @@ - init_eventlog_config(void) - { - int logtype = 0; --#ifdef NO_ROOT_MAILER -- uid_t mailuid = user_uid; --#else -- uid_t mailuid = ROOT_UID; --#endif - debug_decl(init_eventlog_config, SUDOERS_DEBUG_LOGGING); - - if (def_syslog) -@@ -805,7 +800,7 @@ - eventlog_set_syslog_alertpri(def_syslog_badpri); - eventlog_set_syslog_maxlen(def_syslog_maxlen); - eventlog_set_file_maxlen(def_loglinelen); -- eventlog_set_mailuid(mailuid); -+ eventlog_set_mailuid(ROOT_UID); - eventlog_set_omit_hostname(!def_log_host); - eventlog_set_logpath(def_logfile); - eventlog_set_time_fmt(def_log_year ? "%h %e %T %Y" : "%h %e %T"); -diff -r cd1c7615e861 -r e0d4f196ba02 plugins/sudoers/policy.c ---- a/plugins/sudoers/policy.c Tue Dec 08 12:35:21 2020 -0700 -+++ b/plugins/sudoers/policy.c Fri Jan 29 05:42:34 2021 -0700 -@@ -518,6 +518,10 @@ - /* Some systems support fexecve() which we use for digest matches. */ - cmnd_fd = -1; - -+#ifdef NO_ROOT_MAILER -+ eventlog_set_mailuid(user_uid); -+#endif -+ - /* Dump settings and user info (XXX - plugin args) */ - for (cur = info->settings; *cur != NULL; cur++) - sudo_debug_printf(SUDO_DEBUG_INFO, "settings: %s", *cur); - diff -Nru sudo-1.9.4p2/debian/patches/series sudo-1.9.5p2/debian/patches/series --- sudo-1.9.4p2/debian/patches/series 2021-01-30 13:35:09.000000000 -0600 +++ sudo-1.9.5p2/debian/patches/series 2021-02-10 05:42:42.000000000 -0600 @@ -1,10 +1,4 @@ typo-in-classic-insults.diff paths-in-samples.diff Whitelist-DPKG_COLORS-environment-variable.diff -CVE-2021-23239.patch -CVE-2021-3156-1.patch -CVE-2021-3156-2.patch -CVE-2021-3156-3.patch -CVE-2021-3156-4.patch -CVE-2021-3156-5.patch -ineffective_no_root_mailer.patch +fix-no-root-mailer.diff diff -Nru sudo-1.9.4p2/doc/LICENSE sudo-1.9.5p2/doc/LICENSE --- sudo-1.9.4p2/doc/LICENSE 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/doc/LICENSE 2021-01-09 14:12:16.000000000 -0600 @@ -1,6 +1,6 @@ Sudo is distributed under the following license: - Copyright (c) 1994-1996, 1998-2020 + Copyright (c) 1994-1996, 1998-2021 Todd C. Miller Permission to use, copy, modify, and distribute this software for any diff -Nru sudo-1.9.4p2/doc/sudoers.man.in sudo-1.9.5p2/doc/sudoers.man.in --- sudo-1.9.4p2/doc/sudoers.man.in 2020-12-16 19:34:30.000000000 -0600 +++ sudo-1.9.5p2/doc/sudoers.man.in 2021-01-09 14:12:16.000000000 -0600 @@ -2,7 +2,7 @@ .\" .\" SPDX-License-Identifier: ISC .\" -.\" Copyright (c) 1994-1996, 1998-2005, 2007-2020 +.\" Copyright (c) 1994-1996, 1998-2005, 2007-2021 .\" Todd C. Miller .\" .\" Permission to use, copy, modify, and distribute this software for any @@ -25,7 +25,7 @@ .nr BA @BAMAN@ .nr LC @LCMAN@ .nr PS @PSMAN@ -.TH "SUDOERS" "@mansectform@" "December 11, 2020" "Sudo @PACKAGE_VERSION@" "File Formats Manual" +.TH "SUDOERS" "@mansectform@" "January 8, 2020" "Sudo @PACKAGE_VERSION@" "File Formats Manual" .nh .if n .ad l .SH "NAME" @@ -3238,6 +3238,16 @@ This flag is \fIoff\fR by default. +.if \n(SL \{\ +.TP 18n +selinux +If enabled, the user may specify an SELinux role and/or type to use +when running the command, as permitted by the SELinux policy. +If SELinux is disabled on the system, this flag has no effect. +This flag is +\fIon\fR +by default. +.\} .TP 18n set_home If enabled and diff -Nru sudo-1.9.4p2/doc/sudoers.man.in.sed sudo-1.9.5p2/doc/sudoers.man.in.sed --- sudo-1.9.4p2/doc/sudoers.man.in.sed 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/doc/sudoers.man.in.sed 2021-01-09 14:12:16.000000000 -0600 @@ -97,6 +97,14 @@ .\\} } } + /^\.TP 18n\nselinux$/,/^\.TP 18n/ { + /^\.TP 18n/ { + /^\.TP 18n\nselinux$/i\ +.if \\n(SL \\{\\ + /^\.TP 18n\nselinux$/!i\ +.\\} + } + } /^\.TP 18n\nrole$/,/^\.TP 18n/ { /^\.TP 18n/ { /^\.TP 18n\nrole$/i\ diff -Nru sudo-1.9.4p2/doc/sudoers.mdoc.in sudo-1.9.5p2/doc/sudoers.mdoc.in --- sudo-1.9.4p2/doc/sudoers.mdoc.in 2020-12-16 19:34:30.000000000 -0600 +++ sudo-1.9.5p2/doc/sudoers.mdoc.in 2021-01-09 14:12:16.000000000 -0600 @@ -1,7 +1,7 @@ .\" .\" SPDX-License-Identifier: ISC .\" -.\" Copyright (c) 1994-1996, 1998-2005, 2007-2020 +.\" Copyright (c) 1994-1996, 1998-2005, 2007-2021 .\" Todd C. Miller .\" .\" Permission to use, copy, modify, and distribute this software for any @@ -24,7 +24,7 @@ .nr BA @BAMAN@ .nr LC @LCMAN@ .nr PS @PSMAN@ -.Dd December 11, 2020 +.Dd January 8, 2020 .Dt SUDOERS @mansectform@ .Os Sudo @PACKAGE_VERSION@ .Sh NAME @@ -3051,6 +3051,15 @@ This flag is .Em off by default. +.if \n(SL \{\ +.It selinux +If enabled, the user may specify an SELinux role and/or type to use +when running the command, as permitted by the SELinux policy. +If SELinux is disabled on the system, this flag has no effect. +This flag is +.Em on +by default. +.\} .It set_home If enabled and .Nm sudo diff -Nru sudo-1.9.4p2/etc/sudo-logsrvd.pp sudo-1.9.5p2/etc/sudo-logsrvd.pp --- sudo-1.9.4p2/etc/sudo-logsrvd.pp 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/etc/sudo-logsrvd.pp 2021-01-09 14:12:16.000000000 -0600 @@ -5,7 +5,7 @@ from sudo clients. This makes it possible to have all sudo I/O logs on a central server." vendor="Todd C. Miller" - copyright="(c) 2019-2020 Todd C. Miller" + copyright="(c) 2019-2021 Todd C. Miller" %if [aix] # Convert to 4 part version for AIX, including patch level diff -Nru sudo-1.9.4p2/etc/sudo.pp sudo-1.9.5p2/etc/sudo.pp --- sudo-1.9.4p2/etc/sudo.pp 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/etc/sudo.pp 2021-01-09 14:12:16.000000000 -0600 @@ -10,7 +10,7 @@ The basic philosophy is to give as few privileges as possible but \ still allow people to get their work done." vendor="Todd C. Miller" - copyright="(c) 1993-1996,1998-2020 Todd C. Miller" + copyright="(c) 1993-1996,1998-2021 Todd C. Miller" sudoedit_man=`echo ${pp_destdir}$mandir/*/sudoedit.*|sed "s:^${pp_destdir}::"` sudoedit_man_target=`basename $sudoedit_man | sed 's/edit//'` diff -Nru sudo-1.9.4p2/etc/sudo-python.pp sudo-1.9.5p2/etc/sudo-python.pp --- sudo-1.9.4p2/etc/sudo-python.pp 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/etc/sudo-python.pp 2021-01-09 14:12:16.000000000 -0600 @@ -3,7 +3,7 @@ summary="Sudo Python plugin framework" description="The sudo Python plugin allows you to extend sudo using Python." vendor="Todd C. Miller" - copyright="(c) 2019-2020 Todd C. Miller" + copyright="(c) 2019-2021 Todd C. Miller" %if [aix] # Convert to 4 part version for AIX, including patch level diff -Nru sudo-1.9.4p2/include/sudo_compat.h sudo-1.9.5p2/include/sudo_compat.h --- sudo-1.9.4p2/include/sudo_compat.h 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/include/sudo_compat.h 2021-01-09 14:12:16.000000000 -0600 @@ -575,6 +575,11 @@ # undef getprogname # define getprogname() sudo_getprogname() #endif /* HAVE_GETPROGNAME */ +#ifndef HAVE_SETPROGNAME +sudo_dso_public void sudo_setprogname(const char *name); +# undef setprogname +# define setprogname(_a) sudo_setprogname(_a) +#endif /* HAVE_SETPROGNAME */ #ifndef HAVE_REALLOCARRAY sudo_dso_public void *sudo_reallocarray(void *ptr, size_t nmemb, size_t size); # undef reallocarray @@ -595,6 +600,16 @@ # undef pipe2 # define pipe2(_a, _b) sudo_pipe2((_a), (_b)) #endif /* HAVE_PIPE2 */ +#ifndef HAVE_PREAD +sudo_dso_public int sudo_pread(int fd, void *buf, size_t nbytes, off_t offset); +# undef pread +# define pread(_a, _b, _c, _d) sudo_pread((_a), (_b), (_c), (_d)) +#endif /* HAVE_PREAD */ +#ifndef HAVE_PWRITE +sudo_dso_public int sudo_pwrite(int fd, const void *buf, size_t nbytes, off_t offset); +# undef pwrite +# define pwrite(_a, _b, _c, _d) sudo_pwrite((_a), (_b), (_c), (_d)) +#endif /* HAVE_PWRITE */ #ifndef HAVE_UNLINKAT sudo_dso_public int sudo_unlinkat(int dfd, const char *path, int flag); # undef unlinkat diff -Nru sudo-1.9.4p2/include/sudo_util.h sudo-1.9.5p2/include/sudo_util.h --- sudo-1.9.4p2/include/sudo_util.h 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/include/sudo_util.h 2021-01-09 14:12:16.000000000 -0600 @@ -244,6 +244,7 @@ /* progname.c */ sudo_dso_public void initprogname(const char *); +sudo_dso_public void initprogname2(const char *, const char * const *); /* roundup.c */ sudo_dso_public unsigned int sudo_pow2_roundup_v1(unsigned int len); diff -Nru sudo-1.9.4p2/lib/eventlog/eventlog.c sudo-1.9.5p2/lib/eventlog/eventlog.c --- sudo-1.9.4p2/lib/eventlog/eventlog.c 2020-12-16 19:34:30.000000000 -0600 +++ sudo-1.9.5p2/lib/eventlog/eventlog.c 2021-01-09 14:12:16.000000000 -0600 @@ -348,7 +348,7 @@ /* Set stdin to read side of the pipe. */ if (dup3(pipein, STDIN_FILENO, 0) == -1) { - syslog(LOG_ERR, _("unable to dup stdin: %m")); + syslog(LOG_ERR, _("unable to dup stdin: %m")); // -V618 sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to dup stdin: %s", strerror(errno)); sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys); @@ -357,7 +357,7 @@ /* Build up an argv based on the mailer path and flags */ if ((mflags = strdup(evl_conf.mailerflags)) == NULL) { - syslog(LOG_ERR, _("unable to allocate memory")); + syslog(LOG_ERR, _("unable to allocate memory")); // -V618 sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys); _exit(127); } @@ -393,7 +393,7 @@ execve(mpath, argv, root_envp); else execv(mpath, argv); - syslog(LOG_ERR, _("unable to execute %s: %m"), mpath); + syslog(LOG_ERR, _("unable to execute %s: %m"), mpath); // -V618 sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to execute %s: %s", mpath, strerror(errno)); _exit(127); @@ -441,7 +441,7 @@ switch (fork()) { case -1: /* Error. */ - syslog(LOG_ERR, _("unable to fork: %m")); + syslog(LOG_ERR, _("unable to fork: %m")); // -V618 sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to fork: %s", strerror(errno)); sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys); @@ -485,7 +485,7 @@ closefrom_nodebug(STDERR_FILENO + 1); if (pipe2(pfd, O_CLOEXEC) == -1) { - syslog(LOG_ERR, _("unable to open pipe: %m")); + syslog(LOG_ERR, _("unable to open pipe: %m")); // -V618 sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to open pipe: %s", strerror(errno)); sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys); @@ -495,7 +495,7 @@ switch (pid = sudo_debug_fork()) { case -1: /* Error. */ - syslog(LOG_ERR, _("unable to fork: %m")); + syslog(LOG_ERR, _("unable to fork: %m")); // -V618 sudo_debug_printf( SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO, "unable to fork"); diff -Nru sudo-1.9.4p2/lib/eventlog/Makefile.in sudo-1.9.5p2/lib/eventlog/Makefile.in --- sudo-1.9.4p2/lib/eventlog/Makefile.in 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/lib/eventlog/Makefile.in 2021-01-23 09:45:11.000000000 -0600 @@ -46,8 +46,9 @@ # Flags to pass to libtool LTFLAGS = @LT_STATIC@ -# Libraries for test programs -LIBS = $(top_builddir)/lib/util/libsudo_util.la +# Libraries +LT_LIBS = $(top_builddir)/lib/util/libsudo_util.la +LIBS = $(LT_LIBS) # Address sanitizer flags ASAN_CFLAGS = @ASAN_CFLAGS@ @@ -62,7 +63,7 @@ SSP_LDFLAGS = @SSP_LDFLAGS@ # cppcheck options, usually set in the top-level Makefile -CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 # splint options, usually set in the top-level Makefile SPLINT_OPTS = -D__restrict= -checks @@ -132,7 +133,7 @@ fi libsudo_eventlog.la: $(LIBEVENTLOG_OBJS) - $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LIBEVENTLOG_OBJS) + $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LIBEVENTLOG_OBJS) $(LT_LIBS) check_wrap: $(CHECK_WRAP_OBJS) $(LIBUTIL) $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_WRAP_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(LIBS) diff -Nru sudo-1.9.4p2/lib/iolog/iolog_fileio.c sudo-1.9.5p2/lib/iolog/iolog_fileio.c --- sudo-1.9.4p2/lib/iolog/iolog_fileio.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/lib/iolog/iolog_fileio.c 2021-01-09 14:12:16.000000000 -0600 @@ -591,19 +591,19 @@ iol->compressed = iolog_compress; } else { /* check for gzip magic number */ - if (read(fd, magic, sizeof(magic)) == ssizeof(magic)) { + if (pread(fd, magic, sizeof(magic), 0) == ssizeof(magic)) { if (magic[0] == gzip_magic[0] && magic[1] == gzip_magic[1]) iol->compressed = true; } - (void)lseek(fd, 0, SEEK_SET); } - (void)fcntl(fd, F_SETFD, FD_CLOEXEC); + if (fcntl(fd, F_SETFD, FD_CLOEXEC) != -1) { #ifdef HAVE_ZLIB_H - if (iol->compressed) - iol->fd.g = gzdopen(fd, mode); - else + if (iol->compressed) + iol->fd.g = gzdopen(fd, mode); + else #endif - iol->fd.f = fdopen(fd, mode); + iol->fd.f = fdopen(fd, mode); + } if (iol->fd.v != NULL) { switch ((flags & O_ACCMODE)) { case O_WRONLY: diff -Nru sudo-1.9.4p2/lib/iolog/Makefile.in sudo-1.9.5p2/lib/iolog/Makefile.in --- sudo-1.9.4p2/lib/iolog/Makefile.in 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/lib/iolog/Makefile.in 2021-01-09 14:12:16.000000000 -0600 @@ -64,7 +64,7 @@ SSP_LDFLAGS = @SSP_LDFLAGS@ # cppcheck options, usually set in the top-level Makefile -CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 # splint options, usually set in the top-level Makefile SPLINT_OPTS = -D__restrict= -checks diff -Nru sudo-1.9.4p2/lib/logsrv/Makefile.in sudo-1.9.5p2/lib/logsrv/Makefile.in --- sudo-1.9.4p2/lib/logsrv/Makefile.in 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/lib/logsrv/Makefile.in 2021-01-09 14:12:16.000000000 -0600 @@ -56,7 +56,7 @@ SSP_LDFLAGS = @SSP_LDFLAGS@ # cppcheck options, usually set in the top-level Makefile -CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 # splint options, usually set in the top-level Makefile SPLINT_OPTS = -D__restrict= -checks diff -Nru sudo-1.9.4p2/lib/util/arc4random.c sudo-1.9.5p2/lib/util/arc4random.c --- sudo-1.9.4p2/lib/util/arc4random.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/lib/util/arc4random.c 2021-01-09 14:12:16.000000000 -0600 @@ -142,7 +142,7 @@ } /* immediately reinit for backtracking resistance */ _rs_init(rs_buf, KEYSZ + IVSZ); - memset(rs_buf, 0, KEYSZ + IVSZ); + memset(rs_buf, 0, KEYSZ + IVSZ); // -V512 rs_have = sizeof(rs_buf) - KEYSZ - IVSZ; } diff -Nru sudo-1.9.4p2/lib/util/fatal.c sudo-1.9.5p2/lib/util/fatal.c --- sudo-1.9.4p2/lib/util/fatal.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/lib/util/fatal.c 2021-01-09 14:12:16.000000000 -0600 @@ -278,18 +278,19 @@ int sudo_fatal_callback_deregister_v1(sudo_fatal_callback_t func) { - struct sudo_fatal_callback *cb, **prev; + struct sudo_fatal_callback *cb, *prev = NULL; /* Search for callback and remove if found, dupes are not allowed. */ - SLIST_FOREACH_PREVPTR(cb, prev, &callbacks, entries) { + SLIST_FOREACH(cb, &callbacks, entries) { if (cb->func == func) { - if (cb == SLIST_FIRST(&callbacks)) + if (prev == NULL) SLIST_REMOVE_HEAD(&callbacks, entries); else - SLIST_REMOVE_AFTER(*prev, entries); + SLIST_REMOVE_AFTER(prev, entries); free(cb); return 0; } + prev = cb; } return -1; diff -Nru sudo-1.9.4p2/lib/util/Makefile.in sudo-1.9.5p2/lib/util/Makefile.in --- sudo-1.9.4p2/lib/util/Makefile.in 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/lib/util/Makefile.in 2021-01-09 14:12:16.000000000 -0600 @@ -92,7 +92,7 @@ SHLIB_VERSION = 0:0:0 # cppcheck options, usually set in the top-level Makefile -CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 # splint options, usually set in the top-level Makefile SPLINT_OPTS = -D__restrict= -checks @@ -985,6 +985,12 @@ $(CC) -E -o $@ $(CPPFLAGS) $< pipe2.plog: pipe2.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/pipe2.c --i-file $< --output-file $@ +pread.lo: $(srcdir)/pread.c $(incdir)/sudo_compat.h $(top_builddir)/config.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/pread.c +pread.i: $(srcdir)/pread.c $(incdir)/sudo_compat.h $(top_builddir)/config.h + $(CC) -E -o $@ $(CPPFLAGS) $< +pread.plog: pread.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/pread.c --i-file $< --output-file $@ progname.lo: $(srcdir)/progname.c $(incdir)/compat/stdbool.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_util.h \ $(top_builddir)/config.h @@ -1011,6 +1017,12 @@ $(CC) -E -o $@ $(CPPFLAGS) $< pw_dup.plog: pw_dup.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/pw_dup.c --i-file $< --output-file $@ +pwrite.lo: $(srcdir)/pwrite.c $(incdir)/sudo_compat.h $(top_builddir)/config.h + $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/pwrite.c +pwrite.i: $(srcdir)/pwrite.c $(incdir)/sudo_compat.h $(top_builddir)/config.h + $(CC) -E -o $@ $(CPPFLAGS) $< +pwrite.plog: pwrite.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/pwrite.c --i-file $< --output-file $@ reallocarray.lo: $(srcdir)/reallocarray.c $(incdir)/sudo_compat.h \ $(top_builddir)/config.h $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/reallocarray.c diff -Nru sudo-1.9.4p2/lib/util/pread.c sudo-1.9.5p2/lib/util/pread.c --- sudo-1.9.4p2/lib/util/pread.c 1969-12-31 18:00:00.000000000 -0600 +++ sudo-1.9.5p2/lib/util/pread.c 2021-01-09 14:12:16.000000000 -0600 @@ -0,0 +1,48 @@ +/* + * 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. + */ + +/* + * 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 "sudo_compat.h" + +#if !defined(HAVE_PREAD) && !defined(HAVE_PREAD64) +ssize_t +sudo_pread(int fd, void *buf, size_t nbytes, off_t offset) +{ + ssize_t nread; + off_t old_offset; + + old_offset = lseek(fd, (off_t)0, SEEK_CUR); + if (old_offset == -1 || lseek(fd, offset, SEEK_SET) == -1) + return -1; + + nread = read(fd, buf, nbytes); + if (lseek(fd, old_offset, SEEK_SET) == -1) + return -1; + + return nread; +} +#endif /* !HAVE_PREAD && !HAVE_PREAD64 */ diff -Nru sudo-1.9.4p2/lib/util/progname.c sudo-1.9.5p2/lib/util/progname.c --- sudo-1.9.4p2/lib/util/progname.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/lib/util/progname.c 2021-01-23 09:45:11.000000000 -0600 @@ -31,11 +31,23 @@ #ifdef HAVE_GETPROGNAME +# ifndef HAVE_SETPROGNAME +/* Assume __progname if have getprogname(3) but not setprogname(3). */ +extern const char *__progname; + void -initprogname(const char *name) +sudo_setprogname(const char *name) +{ + const char *slash = strrchr(name, '/'); + __progname = slash ? slash + 1 : name; +} +# endif + +void +initprogname2(const char *name, const char * const * allowed) { -# ifdef HAVE_SETPROGNAME const char *progname; + int i; /* Fall back on "name" if getprogname() returns an empty string. */ if ((progname = getprogname()) != NULL && *progname != '\0') @@ -45,10 +57,21 @@ if (name[0] == 'l' && name[1] == 't' && name[2] == '-' && name[3] != '\0') name += 3; + /* Check allow list if present (first element is the default). */ + if (allowed != NULL) { + for (i = 0; ; i++) { + if (allowed[i] == NULL) { + name = allowed[0]; + break; + } + if (strcmp(allowed[i], name) == 0) + break; + } + } + /* Update internal progname if needed. */ if (name != progname) setprogname(name); -# endif return; } @@ -57,8 +80,9 @@ static const char *progname = ""; void -initprogname(const char *name) +initprogname2(const char *name, const char * const * allowed) { + int i; # ifdef HAVE___PROGNAME extern const char *__progname; @@ -76,6 +100,18 @@ if (progname[0] == 'l' && progname[1] == 't' && progname[2] == '-' && progname[3] != '\0') progname += 3; + + /* Check allow list if present (first element is the default). */ + if (allowed != NULL) { + for (i = 0; ; i++) { + if (allowed[i] == NULL) { + progname = allowed[0]; + break; + } + if (strcmp(allowed[i], progname) == 0) + break; + } + } } const char * @@ -83,4 +119,17 @@ { return progname; } + +void +sudo_setprogname(const char *name) +{ + const char *slash = strrchr(name, '/'); + progname = slash ? slash + 1 : name; +} #endif /* !HAVE_GETPROGNAME */ + +void +initprogname(const char *name) +{ + initprogname2(name, NULL); +} diff -Nru sudo-1.9.4p2/lib/util/pwrite.c sudo-1.9.5p2/lib/util/pwrite.c --- sudo-1.9.4p2/lib/util/pwrite.c 1969-12-31 18:00:00.000000000 -0600 +++ sudo-1.9.5p2/lib/util/pwrite.c 2021-01-09 14:12:16.000000000 -0600 @@ -0,0 +1,48 @@ +/* + * 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. + */ + +/* + * 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 "sudo_compat.h" + +#if !defined(HAVE_PWRITE) && !defined(HAVE_PWRITE64) +ssize_t +sudo_pwrite(int fd, const void *buf, size_t nbytes, off_t offset) +{ + ssize_t nwritten; + off_t old_offset; + + old_offset = lseek(fd, (off_t)0, SEEK_CUR); + if (old_offset == -1 || lseek(fd, offset, SEEK_SET) == -1) + return -1; + + nwritten = write(fd, buf, nbytes); + if (lseek(fd, old_offset, SEEK_SET) == -1) + return -1; + + return nwritten; +} +#endif /* HAVE_PWRITE && !HAVE_PWRITE64 */ diff -Nru sudo-1.9.4p2/lib/util/sudo_debug.c sudo-1.9.5p2/lib/util/sudo_debug.c --- sudo-1.9.4p2/lib/util/sudo_debug.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/lib/util/sudo_debug.c 2021-01-09 14:12:16.000000000 -0600 @@ -180,7 +180,10 @@ } ignore_result(fchown(output->fd, (uid_t)-1, 0)); } - (void)fcntl(output->fd, F_SETFD, FD_CLOEXEC); + if (fcntl(output->fd, F_SETFD, FD_CLOEXEC) == -1) { + sudo_warn_nodebug("%s", output->filename); + goto bad; + } if (sudo_debug_fds_size < output->fd) { /* Bump fds size to the next multiple of 4 * NBBY. */ const int old_size = sudo_debug_fds_size / NBBY; @@ -236,6 +239,7 @@ return output; oom: + // -V:sudo_warn_nodebug:575, 618 sudo_warn_nodebug(NULL); bad: if (output != NULL) diff -Nru sudo-1.9.4p2/lib/util/util.exp.in sudo-1.9.5p2/lib/util/util.exp.in --- sudo-1.9.4p2/lib/util/util.exp.in 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/lib/util/util.exp.in 2021-01-09 14:12:16.000000000 -0600 @@ -1,4 +1,5 @@ @COMPAT_EXP@initprogname +initprogname2 sudo_conf_askpass_path_v1 sudo_conf_clear_paths_v1 sudo_conf_debug_files_v1 diff -Nru sudo-1.9.4p2/logsrvd/logsrvd.c sudo-1.9.5p2/logsrvd/logsrvd.c --- sudo-1.9.4p2/logsrvd/logsrvd.c 2020-12-16 19:34:30.000000000 -0600 +++ sudo-1.9.5p2/logsrvd/logsrvd.c 2021-01-09 14:12:16.000000000 -0600 @@ -735,7 +735,7 @@ static void server_shutdown(struct sudo_event_base *base) { - struct connection_closure *closure; + struct connection_closure *closure, *next; struct sudo_event *ev; struct timespec tv = { 0, 0 }; debug_decl(server_shutdown, SUDO_DEBUG_UTIL); @@ -745,7 +745,7 @@ debug_return; } - TAILQ_FOREACH(closure, &connections, entries) { + TAILQ_FOREACH_SAFE(closure, &connections, entries, next) { closure->state = SHUTDOWN; sudo_ev_del(base, closure->read_ev); if (closure->log_io) { @@ -761,13 +761,15 @@ } } - /* We need a timed event to exit even if clients time out. */ - ev = sudo_ev_alloc(-1, SUDO_EV_TIMEOUT, shutdown_cb, base); - if (ev != NULL) { - tv.tv_sec = SHUTDOWN_TIMEO; - if (sudo_ev_add(base, ev, &tv, false) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, - "unable to add shutdown event"); + if (!TAILQ_EMPTY(&connections)) { + /* We need a timed event to exit even if clients time out. */ + ev = sudo_ev_alloc(-1, SUDO_EV_TIMEOUT, shutdown_cb, base); + if (ev != NULL) { + tv.tv_sec = SHUTDOWN_TIMEO; + if (sudo_ev_add(base, ev, &tv, false) == -1) { + sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, + "unable to add shutdown event"); + } } } diff -Nru sudo-1.9.4p2/logsrvd/Makefile.in sudo-1.9.5p2/logsrvd/Makefile.in --- sudo-1.9.4p2/logsrvd/Makefile.in 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/logsrvd/Makefile.in 2021-01-09 14:12:16.000000000 -0600 @@ -79,7 +79,7 @@ SSP_LDFLAGS = @SSP_LDFLAGS@ # cppcheck options, usually set in the top-level Makefile -CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 # splint options, usually set in the top-level Makefile SPLINT_OPTS = -D__restrict= -checks diff -Nru sudo-1.9.4p2/Makefile.in sudo-1.9.5p2/Makefile.in --- sudo-1.9.4p2/Makefile.in 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/Makefile.in 2021-01-09 14:12:16.000000000 -0600 @@ -94,7 +94,7 @@ --flag sudo_lbuf_append_quoted:3:c-format --foreign-user # Default cppcheck options when run from the top-level Makefile -CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 # Default splint options when run from the top-level Makefile SPLINT_OPTS = -D__restrict= -checks diff -Nru sudo-1.9.4p2/MANIFEST sudo-1.9.5p2/MANIFEST --- sudo-1.9.4p2/MANIFEST 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/MANIFEST 2021-01-09 14:12:16.000000000 -0600 @@ -182,8 +182,10 @@ lib/util/openat.c lib/util/parseln.c lib/util/pipe2.c +lib/util/pread.c lib/util/progname.c lib/util/pw_dup.c +lib/util/pwrite.c lib/util/reallocarray.c lib/util/regress/fnmatch/fnm_test.c lib/util/regress/fnmatch/fnm_test.in @@ -993,6 +995,7 @@ src/Makefile.in src/conversation.c src/copy_file.c +src/edit_open.c src/env_hooks.c src/exec.c src/exec_common.c @@ -1017,6 +1020,7 @@ src/sudo.c src/sudo.h src/sudo_edit.c +src/sudo_edit.h src/sudo_exec.h src/sudo_noexec.c src/sudo_plugin_int.h diff -Nru sudo-1.9.4p2/NEWS sudo-1.9.5p2/NEWS --- sudo-1.9.4p2/NEWS 2020-12-20 09:51:07.000000000 -0600 +++ sudo-1.9.5p2/NEWS 2021-01-23 09:45:11.000000000 -0600 @@ -1,3 +1,100 @@ +What's new in Sudo 1.9.5p2 + + * Fixed sudo's setprogname(3) emulation on systems that don't + provide it. + + * Fixed a problem with the sudoers log server client where a partial + write to the server could result the sudo process consuming large + amounts of CPU time due to a cycle in the buffer queue. Bug #954. + + * Added a missing dependency on libsudo_util in libsudo_eventlog. + Fixes a link error when building sudo statically. + + * The user's KRB5CCNAME environment variable is now preserved when + performing PAM authentication. This fixes GSSAPI authentication + when the user has a non-default ccache. + + * When invoked as sudoedit, the same set of command line options + are now accepted as for "sudo -e". The -H and -P options are + now rejected for sudoedit and "sudo -e" which matches the sudo + 1.7 behavior. This is part of the fix for CVE-2021-3156. + + * Fixed a potential buffer overflow when unescaping backslashes + in the command's arguments. Normally, sudo escapes special + characters when running a command via a shell (sudo -s or sudo + -i). However, it was also possible to run sudoedit with the -s + or -i flags in which case no escaping had actually been done, + making a buffer overflow possible. This fixes CVE-2021-3156. + +What's new in Sudo 1.9.5p1 + + * Fixed a regression introduced in sudo 1.9.5 where the editor run + by sudoedit was set-user-ID root unless SELinux RBAC was in use. + The editor is now run with the user's real and effective user-IDs. + +What's new in Sudo 1.9.5 + + * Fixed a crash introduced in 1.9.4 when running "sudo -i" as an + unknown user. This is related to but distinct from Bug #948. + + * If the "lecture_file" setting is enabled in sudoers, it must now + refer to a regular file or a symbolic link to a regular file. + + * Fixed a potential use-after-free bug in sudo_logsrvd when the + server shuts down if there are existing connections from clients + that are only logging events and not session I/O data. + + * Fixed a buffer size mismatch when serializing the list of IP + addresses for configured network interfaces. This bug is not + actually exploitable since the allocated buffer is large enough + to hold the list of addresses. + + * If sudo is executed with a name other than "sudo" or "sudoedit", + it will now fall back to "sudo" as the program name. This affects + warning, help and usage messages as well as the matching of Debug + lines in the /etc/sudo.conf file. Previously, it was possible + for the invoking user to manipulate the program name by setting + argv[0] to an arbitrary value when executing sudo. + + * Sudo now checks for failure when setting the close-on-exec flag + on open file descriptors. This should never fail but, if it + were to, there is the possibility of a file descriptor leak to + a child process (such as the command sudo runs). + + * Fixed CVE-2021-23239, a potential information leak in sudoedit + that could be used to test for the existence of directories not + normally accessible to the user in certain circumstances. When + creating a new file, sudoedit checks to make sure the parent + directory of the new file exists before running the editor. + However, a race condition exists if the invoking user can replace + (or create) the parent directory. If a symbolic link is created + in place of the parent directory, sudoedit will run the editor + as long as the target of the link exists. If the target of the + link does not exist, an error message will be displayed. The + race condition can be used to test for the existence of an + arbitrary directory. However, it _cannot_ be used to write to + an arbitrary location. + + * Fixed CVE-2021-23240, a flaw in the temporary file handling of + sudoedit's SELinux RBAC support. On systems where SELinux is + enabled, a user with sudoedit permissions may be able to set the + owner of an arbitrary file to the user-ID of the target user. + On Linux kernels that support "protected symlinks", setting + /proc/sys/fs/protected_symlinks to 1 will prevent the bug from + being exploited. For more information see + https://www.sudo.ws/alerts/sudoedit_selinux.html. + + * Added writability checks for sudoedit when SELinux RBAC is in use. + This makes sudoedit behavior consistent regardless of whether + or not SELinux RBAC is in use. Previously, the "sudoedit_checkdir" + setting had no effect for RBAC entries. + + * A new sudoers option "selinux" can be used to disable sudo's + SELinux RBAC support. + + * Quieted warnings from PVS Studio, clang analyzer, and cppcheck. + Added suppression annotations for PVS Studio false positives. + What's new in Sudo 1.9.4p2 * Fixed a bug introduced in sudo 1.9.4p1 which could lead to a crash diff -Nru sudo-1.9.4p2/plugins/audit_json/audit_json.c sudo-1.9.5p2/plugins/audit_json/audit_json.c --- sudo-1.9.4p2/plugins/audit_json/audit_json.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/audit_json/audit_json.c 2021-01-09 14:12:16.000000000 -0600 @@ -456,7 +456,7 @@ goto oom; } else { json_value.type = JSON_STRING; - json_value.u.string = signame; + json_value.u.string = signame; // -V507 if (!sudo_json_add_value(&json, "signal", &json_value)) goto oom; } diff -Nru sudo-1.9.4p2/plugins/audit_json/Makefile.in sudo-1.9.5p2/plugins/audit_json/Makefile.in --- sudo-1.9.4p2/plugins/audit_json/Makefile.in 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/audit_json/Makefile.in 2021-01-09 14:12:16.000000000 -0600 @@ -69,7 +69,7 @@ SSP_LDFLAGS = @SSP_LDFLAGS@ # cppcheck options, usually set in the top-level Makefile -CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 # splint options, usually set in the top-level Makefile SPLINT_OPTS = -D__restrict= -checks diff -Nru sudo-1.9.4p2/plugins/group_file/getgrent.c sudo-1.9.5p2/plugins/group_file/getgrent.c --- sudo-1.9.4p2/plugins/group_file/getgrent.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/group_file/getgrent.c 2021-01-09 14:12:16.000000000 -0600 @@ -64,8 +64,12 @@ { if (grf == NULL) { grf = fopen(grfile, "r"); - if (grf != NULL) - (void)fcntl(fileno(grf), F_SETFD, FD_CLOEXEC); + if (grf != NULL) { + if (fcntl(fileno(grf), F_SETFD, FD_CLOEXEC) == -1) { + fclose(grf); + grf = NULL; + } + } } else { rewind(grf); } @@ -139,7 +143,10 @@ if (grf == NULL) { if ((grf = fopen(grfile, "r")) == NULL) return NULL; - (void)fcntl(fileno(grf), F_SETFD, FD_CLOEXEC); + if (fcntl(fileno(grf), F_SETFD, FD_CLOEXEC) == -1) { + fclose(grf); + return NULL; + } } else { rewind(grf); } @@ -162,7 +169,10 @@ if (grf == NULL) { if ((grf = fopen(grfile, "r")) == NULL) return NULL; - (void)fcntl(fileno(grf), F_SETFD, FD_CLOEXEC); + if (fcntl(fileno(grf), F_SETFD, FD_CLOEXEC) == -1) { + fclose(grf); + return NULL; + } } else { rewind(grf); } diff -Nru sudo-1.9.4p2/plugins/group_file/Makefile.in sudo-1.9.5p2/plugins/group_file/Makefile.in --- sudo-1.9.4p2/plugins/group_file/Makefile.in 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/group_file/Makefile.in 2021-01-09 14:12:16.000000000 -0600 @@ -72,7 +72,7 @@ SSP_LDFLAGS = @SSP_LDFLAGS@ # cppcheck options, usually set in the top-level Makefile -CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 # splint options, usually set in the top-level Makefile SPLINT_OPTS = -D__restrict= -checks diff -Nru sudo-1.9.4p2/plugins/group_file/plugin_test.c sudo-1.9.5p2/plugins/group_file/plugin_test.c --- sudo-1.9.4p2/plugins/group_file/plugin_test.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/group_file/plugin_test.c 2021-01-09 14:12:16.000000000 -0600 @@ -108,7 +108,7 @@ if (SUDO_API_VERSION_GET_MAJOR(group_plugin->version) != GROUP_API_VERSION_MAJOR) { fprintf(stderr, - "%s: incompatible group plugin major version %d, expected %d\n", + "%s: incompatible group plugin major version %u, expected %d\n", path, SUDO_API_VERSION_GET_MAJOR(group_plugin->version), GROUP_API_VERSION_MAJOR); return -1; diff -Nru sudo-1.9.4p2/plugins/python/Makefile.in sudo-1.9.5p2/plugins/python/Makefile.in --- sudo-1.9.4p2/plugins/python/Makefile.in 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/python/Makefile.in 2021-01-09 14:12:16.000000000 -0600 @@ -76,7 +76,7 @@ SSP_LDFLAGS = @SSP_LDFLAGS@ # cppcheck options, usually set in the top-level Makefile -CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 # splint options, usually set in the top-level Makefile SPLINT_OPTS = -D__restrict= -checks diff -Nru sudo-1.9.4p2/plugins/python/python_convmessage.c sudo-1.9.5p2/plugins/python/python_convmessage.c --- sudo-1.9.4p2/plugins/python/python_convmessage.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/python/python_convmessage.c 2021-01-09 14:12:16.000000000 -0600 @@ -50,11 +50,11 @@ goto cleanup; py_object_set_attr_number(py_self, "timeout", conv_message.timeout); - if (PyErr_Occurred()) + if (PyErr_Occurred()) // -V547 goto cleanup; py_object_set_attr_string(py_self, "msg", conv_message.msg); - if (PyErr_Occurred()) + if (PyErr_Occurred()) // -V547 goto cleanup; cleanup: @@ -113,11 +113,11 @@ debug_return_int(SUDO_RC_ERROR); conv_message->timeout = (int)py_object_get_optional_attr_number(py_conv_message, "timeout"); - if (PyErr_Occurred()) + if (PyErr_Occurred()) // -V547 debug_return_int(SUDO_RC_ERROR); conv_message->msg = py_object_get_optional_attr_string(py_conv_message, "msg"); - if (PyErr_Occurred()) + if (PyErr_Occurred()) // -V547 debug_return_int(SUDO_RC_ERROR); debug_return_int(SUDO_RC_OK); diff -Nru sudo-1.9.4p2/plugins/python/python_importblocker.c sudo-1.9.5p2/plugins/python/python_importblocker.c --- sudo-1.9.4p2/plugins/python/python_importblocker.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/python/python_importblocker.c 2021-01-09 14:12:16.000000000 -0600 @@ -35,6 +35,8 @@ { debug_decl(_verify_import, PYTHON_DEBUG_INTERNAL); + // Check mode and owner similar to what we do in open_sudoers(). + // This is to help avoid loading a potentially insecure module. struct stat sb; if (stat(file_path, &sb) != 0) { PyErr_Format(PyExc_ImportError, "Failed to stat file '%s'", file_path); diff -Nru sudo-1.9.4p2/plugins/sample/Makefile.in sudo-1.9.5p2/plugins/sample/Makefile.in --- sudo-1.9.4p2/plugins/sample/Makefile.in 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/sample/Makefile.in 2021-01-09 14:12:16.000000000 -0600 @@ -71,7 +71,7 @@ SSP_LDFLAGS = @SSP_LDFLAGS@ # cppcheck options, usually set in the top-level Makefile -CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 # splint options, usually set in the top-level Makefile SPLINT_OPTS = -D__restrict= -checks diff -Nru sudo-1.9.4p2/plugins/sample_approval/Makefile.in sudo-1.9.5p2/plugins/sample_approval/Makefile.in --- sudo-1.9.4p2/plugins/sample_approval/Makefile.in 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/sample_approval/Makefile.in 2021-01-09 14:12:16.000000000 -0600 @@ -69,7 +69,7 @@ SSP_LDFLAGS = @SSP_LDFLAGS@ # cppcheck options, usually set in the top-level Makefile -CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 # splint options, usually set in the top-level Makefile SPLINT_OPTS = -D__restrict= -checks diff -Nru sudo-1.9.4p2/plugins/sudoers/auth/pam.c sudo-1.9.5p2/plugins/sudoers/auth/pam.c --- sudo-1.9.4p2/plugins/sudoers/auth/pam.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/auth/pam.c 2021-01-23 09:45:11.000000000 -0600 @@ -114,10 +114,10 @@ /* * Messages from PAM account management when trusted mode is enabled: - * 1 Last successful login for %s: %s - * 2 Last successful login for %s: %s on %s - * 3 Last unsuccessful login for %s: %s - * 4 Last unsuccessful login for %s: %s on %s + * 1 Last successful login for %s: %s + * 2 Last successful login for %s: %s on %s + * 3 Last unsuccessful login for %s: %s + * 4 Last unsuccessful login for %s: %s on %s */ if ((catd = catopen("pam_comsec", NL_CAT_LOCALE)) != -1) { maxfilters += 4; @@ -252,7 +252,7 @@ if (ttypath == NULL) ttypath = ""; #endif - if (ttypath != NULL) { + if (ttypath != NULL) { // -V547 rc = pam_set_item(pamh, PAM_TTY, ttypath); if (rc != PAM_SUCCESS) { errstr = sudo_pam_strerror(pamh, rc); @@ -288,6 +288,7 @@ int sudo_pam_verify(struct passwd *pw, char *prompt, sudo_auth *auth, struct sudo_conv_callback *callback) { + const char *envccname; const char *s; int *pam_status = (int *) auth->data; debug_decl(sudo_pam_verify, SUDOERS_DEBUG_AUTH); @@ -296,8 +297,27 @@ getpass_error = false; /* set by converse if user presses ^C */ conv_callback = callback; /* passed to conversation function */ + /* Set KRB5CCNAME from the user environment if not set to propagate this + * information to PAM modules that may use it to authentication. */ + envccname = sudo_getenv("KRB5CCNAME"); + if (envccname == NULL && user_ccname != NULL) { + if (sudo_setenv("KRB5CCNAME", user_ccname, true) != 0) { + sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO, + "unable to set KRB5CCNAME"); + debug_return_int(AUTH_FAILURE); + } + } + /* PAM_SILENT prevents the authentication service from generating output. */ *pam_status = pam_authenticate(pamh, PAM_SILENT); + + /* Restore KRB5CCNAME to its original value. */ + if (envccname == NULL && sudo_unsetenv("KRB5CCNAME") != 0) { + sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO, + "unable to restore KRB5CCNAME"); + debug_return_int(AUTH_FAILURE); + } + if (getpass_error) { /* error or ^C from tgetpass() */ debug_return_int(AUTH_INTR); diff -Nru sudo-1.9.4p2/plugins/sudoers/check.c sudo-1.9.5p2/plugins/sudoers/check.c --- sudo-1.9.4p2/plugins/sudoers/check.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/check.c 2021-01-09 14:12:16.000000000 -0600 @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -231,11 +232,12 @@ static bool display_lecture(int status) { - FILE *fp; - char buf[BUFSIZ]; - ssize_t nread; struct sudo_conv_message msg; struct sudo_conv_reply repl; + char buf[BUFSIZ]; + struct stat sb; + ssize_t nread; + int fd; debug_decl(lecture, SUDOERS_DEBUG_AUTH); if (def_lecture == never || @@ -245,24 +247,46 @@ memset(&msg, 0, sizeof(msg)); memset(&repl, 0, sizeof(repl)); - if (def_lecture_file && (fp = fopen(def_lecture_file, "r")) != NULL) { - while ((nread = fread(buf, sizeof(char), sizeof(buf) - 1, fp)) != 0) { - buf[nread] = '\0'; - msg.msg_type = SUDO_CONV_ERROR_MSG|SUDO_CONV_PREFER_TTY; - msg.msg = buf; - sudo_conv(1, &msg, &repl, NULL); + if (def_lecture_file) { + fd = open(def_lecture_file, O_RDONLY|O_NONBLOCK); + if (fd != -1 && fstat(fd, &sb) == 0) { + if (S_ISREG(sb.st_mode)) { + (void) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK); + while ((nread = read(fd, buf, sizeof(buf) - 1)) > 0) { + buf[nread] = '\0'; + msg.msg_type = SUDO_CONV_ERROR_MSG|SUDO_CONV_PREFER_TTY; + msg.msg = buf; + sudo_conv(1, &msg, &repl, NULL); + } + close(fd); + if (nread == -1) { + log_warning(SLOG_RAW_MSG, + N_("error reading lecture file %s"), def_lecture_file); + debug_return_bool(false); + } + debug_return_bool(true); + } else { + log_warningx(SLOG_RAW_MSG, + N_("ignoring lecture file %s: not a regular file"), + def_lecture_file); + } + } else { + log_warning(SLOG_RAW_MSG|SLOG_NO_STDERR, N_("unable to open %s"), + def_lecture_file); } - fclose(fp); - } else { - msg.msg_type = SUDO_CONV_ERROR_MSG|SUDO_CONV_PREFER_TTY; - msg.msg = _("\n" - "We trust you have received the usual lecture from the local System\n" - "Administrator. It usually boils down to these three things:\n\n" - " #1) Respect the privacy of others.\n" - " #2) Think before you type.\n" - " #3) With great power comes great responsibility.\n\n"); - sudo_conv(1, &msg, &repl, NULL); + if (fd != -1) + close(fd); } + + /* Default sudo lecture. */ + msg.msg_type = SUDO_CONV_ERROR_MSG|SUDO_CONV_PREFER_TTY; + msg.msg = _("\n" + "We trust you have received the usual lecture from the local System\n" + "Administrator. It usually boils down to these three things:\n\n" + " #1) Respect the privacy of others.\n" + " #2) Think before you type.\n" + " #3) With great power comes great responsibility.\n\n"); + sudo_conv(1, &msg, &repl, NULL); debug_return_bool(true); } diff -Nru sudo-1.9.4p2/plugins/sudoers/defaults.c sudo-1.9.5p2/plugins/sudoers/defaults.c --- sudo-1.9.4p2/plugins/sudoers/defaults.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/defaults.c 2021-01-09 14:12:16.000000000 -0600 @@ -526,6 +526,9 @@ #else def_pam_session = true; #endif +#ifdef HAVE_SELINUX + def_selinux = true; +#endif #ifdef HAVE_INNETGR def_use_netgroups = true; #endif diff -Nru sudo-1.9.4p2/plugins/sudoers/def_data.c sudo-1.9.5p2/plugins/sudoers/def_data.c --- sudo-1.9.4p2/plugins/sudoers/def_data.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/def_data.c 2021-01-09 14:12:16.000000000 -0600 @@ -570,6 +570,10 @@ N_("The format of logs to produce: %s"), def_data_log_format, }, { + "selinux", T_FLAG, + N_("Enable SELinux RBAC support"), + NULL, + }, { NULL, 0, NULL } }; diff -Nru sudo-1.9.4p2/plugins/sudoers/def_data.h sudo-1.9.5p2/plugins/sudoers/def_data.h --- sudo-1.9.4p2/plugins/sudoers/def_data.h 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/def_data.h 2021-01-09 14:12:16.000000000 -0600 @@ -262,6 +262,8 @@ #define def_runchroot (sudo_defs_table[I_RUNCHROOT].sd_un.str) #define I_LOG_FORMAT 130 #define def_log_format (sudo_defs_table[I_LOG_FORMAT].sd_un.tuple) +#define I_SELINUX 131 +#define def_selinux (sudo_defs_table[I_SELINUX].sd_un.flag) enum def_tuple { never, diff -Nru sudo-1.9.4p2/plugins/sudoers/def_data.in sudo-1.9.5p2/plugins/sudoers/def_data.in --- sudo-1.9.4p2/plugins/sudoers/def_data.in 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/def_data.in 2021-01-09 14:12:16.000000000 -0600 @@ -409,3 +409,6 @@ T_TUPLE "The format of logs to produce: %s" sudo json +selinux + T_FLAG + "Enable SELinux RBAC support" diff -Nru sudo-1.9.4p2/plugins/sudoers/editor.c sudo-1.9.5p2/plugins/sudoers/editor.c --- sudo-1.9.4p2/plugins/sudoers/editor.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/editor.c 2021-01-09 14:12:16.000000000 -0600 @@ -123,7 +123,7 @@ int *argc_out, char ***argv_out, char * const *allowlist) { char **nargv = NULL, *editor = NULL, *editor_path = NULL; - const char *cp, *ep, *tmp; + const char *tmp, *cp, *ep = NULL; const char *edend = ed + edlen; struct stat user_editor_sb; int nargc; diff -Nru sudo-1.9.4p2/plugins/sudoers/fmtsudoers.c sudo-1.9.5p2/plugins/sudoers/fmtsudoers.c --- sudo-1.9.4p2/plugins/sudoers/fmtsudoers.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/fmtsudoers.c 2021-01-09 14:12:16.000000000 -0600 @@ -177,7 +177,7 @@ struct defaults *d; debug_decl(sudoers_defaults_list_to_tags, SUDOERS_DEBUG_UTIL); - TAGS_INIT(*tags); + TAGS_INIT(tags); if (defs != NULL) { TAILQ_FOREACH(d, defs, entries) { if (!sudoers_defaults_to_tags(d->var, d->val, d->op, tags)) { diff -Nru sudo-1.9.4p2/plugins/sudoers/getdate.c sudo-1.9.5p2/plugins/sudoers/getdate.c --- sudo-1.9.4p2/plugins/sudoers/getdate.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/getdate.c 2021-01-09 14:12:16.000000000 -0600 @@ -29,6 +29,9 @@ /* SUPPRESS 287 on yaccpar_sccsid *//* Unused static variable */ /* SUPPRESS 288 on yyerrlab *//* Label unused */ +/* PVS Studio suppression*/ +/* -V::1037, 1042*/ + #include #include @@ -106,7 +109,7 @@ static int yylex(void); int yyparse(void); -#line 94 "getdate.y" +#line 97 "getdate.y" #ifndef YYSTYPE_DEFINED #define YYSTYPE_DEFINED typedef union { @@ -114,7 +117,7 @@ enum _MERIDIAN Meridian; } YYSTYPE; #endif /* YYSTYPE_DEFINED */ -#line 112 "getdate.c" +#line 115 "getdate.c" #define tAGO 257 #define tDAY 258 #define tDAYZONE 259 @@ -129,11 +132,7 @@ #define tZONE 268 #define tDST 269 #define YYERRCODE 256 -#if defined(__cplusplus) || defined(__STDC__) const short yylhs[] = -#else -short yylhs[] = -#endif { -1, 0, 0, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 6, 6, 6, 5, @@ -141,11 +140,7 @@ 9, 9, 9, 9, 9, 9, 9, 9, 8, 1, 1, }; -#if defined(__cplusplus) || defined(__STDC__) const short yylen[] = -#else -short yylen[] = -#endif { 2, 0, 2, 1, 1, 1, 1, 1, 1, 2, 4, 4, 6, 6, 1, 1, 2, 1, 2, 2, 3, @@ -153,11 +148,7 @@ 2, 1, 2, 2, 1, 2, 2, 1, 1, 0, 1, }; -#if defined(__cplusplus) || defined(__STDC__) const short yydefred[] = -#else -short yydefred[] = -#endif { 1, 0, 0, 15, 32, 0, 38, 35, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 0, 18, 0, @@ -165,50 +156,30 @@ 0, 0, 16, 28, 0, 23, 27, 22, 0, 0, 25, 41, 11, 0, 10, 0, 0, 21, 13, 12, }; -#if defined(__cplusplus) || defined(__STDC__) const short yydgoto[] = -#else -short yydgoto[] = -#endif { 1, 45, 11, 12, 13, 14, 15, 16, 17, 18, }; -#if defined(__cplusplus) || defined(__STDC__) const short yysindex[] = -#else -short yysindex[] = -#endif { 0, -249, -38, 0, 0, -260, 0, 0, -240, -47, -248, 0, 0, 0, 0, 0, 0, 0, -237, 0, -18, 0, 0, 0, 0, 0, 0, -262, 0, 0, -239, -238, -236, 0, 0, -235, 0, 0, 0, -56, -19, 0, 0, 0, -234, 0, -232, -258, 0, 0, 0,}; -#if defined(__cplusplus) || defined(__STDC__) const short yyrindex[] = -#else -short yyrindex[] = -#endif { 0, 0, 1, 0, 0, 0, 0, 0, 0, 69, 12, 0, 0, 0, 0, 0, 0, 0, 23, 0, 34, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 45, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0,}; -#if defined(__cplusplus) || defined(__STDC__) const short yygindex[] = -#else -short yygindex[] = -#endif { 0, -17, 0, 0, 0, 0, 0, 0, 0, 0, }; #define YYTABLESIZE 337 -#if defined(__cplusplus) || defined(__STDC__) const short yytable[] = -#else -short yytable[] = -#endif { 32, 17, 44, 42, 36, 37, 19, 20, 49, 2, 3, 31, 14, 4, 5, 6, 7, 8, 9, 10, 34, @@ -245,11 +216,7 @@ 40, 0, 40, 40, 26, 26, 0, 39, 26, 26, 26, 26, 0, 0, 26, 39, 39, }; -#if defined(__cplusplus) || defined(__STDC__) const short yycheck[] = -#else -short yycheck[] = -#endif { 47, 0, 58, 261, 266, 267, 44, 267, 266, 258, 259, 58, 0, 262, 263, 264, 265, 266, 267, 268, 257, @@ -292,11 +259,7 @@ #endif #define YYMAXTOKEN 269 #if YYDEBUG -#if defined(__cplusplus) || defined(__STDC__) const char * const yyname[] = -#else -char *yyname[] = -#endif { "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,"','",0,0,"'/'",0,0,0,0,0,0,0,0,0,0,"':'",0,0,0,0,0,0,0,0,0, @@ -308,11 +271,7 @@ "tDAYZONE","tID","tMERIDIAN","tMINUTE_UNIT","tMONTH","tMONTH_UNIT","tSEC_UNIT", "tSNUMBER","tUNUMBER","tZONE","tDST", }; -#if defined(__cplusplus) || defined(__STDC__) const char * const yyrule[] = -#else -char *yyrule[] = -#endif {"$accept : spec", "spec :", "spec : spec item", @@ -383,7 +342,7 @@ YYSTYPE *yyvs; unsigned int yystacksize; int yyparse(void); -#line 313 "getdate.y" +#line 316 "getdate.y" /* Month and day table. */ static TABLE const MonthDayTable[] = { @@ -1005,13 +964,9 @@ /* NOTREACHED */ } #endif /* TEST */ -#line 951 "getdate.c" +#line 954 "getdate.c" /* allocate initial stack or double stack size, up to YYMAXDEPTH */ -#if defined(__cplusplus) || defined(__STDC__) static int yygrowstack(void) -#else -static int yygrowstack() -#endif { unsigned int newsize; long sslen; @@ -1027,23 +982,19 @@ #ifdef SIZE_MAX #define YY_SIZE_MAX SIZE_MAX #else -#ifdef __STDC__ #define YY_SIZE_MAX 0xffffffffU -#else -#define YY_SIZE_MAX (unsigned int)0xffffffff -#endif #endif if (YY_SIZE_MAX / newsize < sizeof *newss) goto bail; sslen = yyssp - yyss; - newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) : - (short *)malloc(newsize * sizeof *newss); /* overflow check above */ + newss = yyss ? realloc(yyss, newsize * sizeof *newss) : + malloc(newsize * sizeof *newss); /* overflow check above */ if (newss == NULL) goto bail; yyss = newss; yyssp = newss + sslen; - newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) : - (YYSTYPE *)malloc(newsize * sizeof *newvs); /* overflow check above */ + newvs = yyvs ? realloc(yyvs, newsize * sizeof *newvs) : + malloc(newsize * sizeof *newvs); /* overflow check above */ if (newvs == NULL) goto bail; yyvs = newvs; @@ -1052,10 +1003,8 @@ yysslim = yyss + newsize - 1; return 0; bail: - if (yyss) - free(yyss); - if (yyvs) - free(yyvs); + free(yyss); + free(yyvs); yyss = yyssp = NULL; yyvs = yyvsp = NULL; yystacksize = 0; @@ -1067,19 +1016,11 @@ #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab int -#if defined(__cplusplus) || defined(__STDC__) yyparse(void) -#else -yyparse() -#endif { int yym, yyn, yystate; #if YYDEBUG -#if defined(__cplusplus) || defined(__STDC__) const char *yys; -#else /* !(defined(__cplusplus) || defined(__STDC__)) */ - char *yys; -#endif /* !(defined(__cplusplus) || defined(__STDC__)) */ if ((yys = getenv("YYDEBUG"))) { @@ -1214,37 +1155,37 @@ switch (yyn) { case 3: -#line 112 "getdate.y" +#line 115 "getdate.y" { yyHaveTime++; } break; case 4: -#line 115 "getdate.y" +#line 118 "getdate.y" { yyHaveZone++; } break; case 5: -#line 118 "getdate.y" +#line 121 "getdate.y" { yyHaveDate++; } break; case 6: -#line 121 "getdate.y" +#line 124 "getdate.y" { yyHaveDay++; } break; case 7: -#line 124 "getdate.y" +#line 127 "getdate.y" { yyHaveRel++; } break; case 9: -#line 130 "getdate.y" +#line 133 "getdate.y" { yyHour = yyvsp[-1].Number; yyMinutes = 0; @@ -1253,7 +1194,7 @@ } break; case 10: -#line 136 "getdate.y" +#line 139 "getdate.y" { yyHour = yyvsp[-3].Number; yyMinutes = yyvsp[-1].Number; @@ -1262,7 +1203,7 @@ } break; case 11: -#line 142 "getdate.y" +#line 145 "getdate.y" { yyHour = yyvsp[-3].Number; yyMinutes = yyvsp[-1].Number; @@ -1272,7 +1213,7 @@ } break; case 12: -#line 149 "getdate.y" +#line 152 "getdate.y" { yyHour = yyvsp[-5].Number; yyMinutes = yyvsp[-3].Number; @@ -1281,7 +1222,7 @@ } break; case 13: -#line 155 "getdate.y" +#line 158 "getdate.y" { yyHour = yyvsp[-5].Number; yyMinutes = yyvsp[-3].Number; @@ -1292,56 +1233,56 @@ } break; case 14: -#line 165 "getdate.y" +#line 168 "getdate.y" { yyTimezone = yyvsp[0].Number; yyDSTmode = DSToff; } break; case 15: -#line 169 "getdate.y" +#line 172 "getdate.y" { yyTimezone = yyvsp[0].Number; yyDSTmode = DSTon; } break; case 16: -#line 174 "getdate.y" +#line 177 "getdate.y" { yyTimezone = yyvsp[-1].Number; yyDSTmode = DSTon; } break; case 17: -#line 180 "getdate.y" +#line 183 "getdate.y" { yyDayOrdinal = 1; yyDayNumber = yyvsp[0].Number; } break; case 18: -#line 184 "getdate.y" +#line 187 "getdate.y" { yyDayOrdinal = 1; yyDayNumber = yyvsp[-1].Number; } break; case 19: -#line 188 "getdate.y" +#line 191 "getdate.y" { yyDayOrdinal = yyvsp[-1].Number; yyDayNumber = yyvsp[0].Number; } break; case 20: -#line 194 "getdate.y" +#line 197 "getdate.y" { yyMonth = yyvsp[-2].Number; yyDay = yyvsp[0].Number; } break; case 21: -#line 198 "getdate.y" +#line 201 "getdate.y" { if (yyvsp[-4].Number >= 100) { yyYear = yyvsp[-4].Number; @@ -1355,7 +1296,7 @@ } break; case 22: -#line 209 "getdate.y" +#line 212 "getdate.y" { /* ISO 8601 format. yyyy-mm-dd. */ yyYear = yyvsp[-2].Number; @@ -1364,7 +1305,7 @@ } break; case 23: -#line 215 "getdate.y" +#line 218 "getdate.y" { /* e.g. 17-JUN-1992. */ yyDay = yyvsp[-2].Number; @@ -1373,14 +1314,14 @@ } break; case 24: -#line 221 "getdate.y" +#line 224 "getdate.y" { yyMonth = yyvsp[-1].Number; yyDay = yyvsp[0].Number; } break; case 25: -#line 225 "getdate.y" +#line 228 "getdate.y" { yyMonth = yyvsp[-3].Number; yyDay = yyvsp[-2].Number; @@ -1388,14 +1329,14 @@ } break; case 26: -#line 230 "getdate.y" +#line 233 "getdate.y" { yyMonth = yyvsp[0].Number; yyDay = yyvsp[-1].Number; } break; case 27: -#line 234 "getdate.y" +#line 237 "getdate.y" { yyMonth = yyvsp[-1].Number; yyDay = yyvsp[-2].Number; @@ -1403,68 +1344,68 @@ } break; case 28: -#line 241 "getdate.y" +#line 244 "getdate.y" { yyRelSeconds = -yyRelSeconds; yyRelMonth = -yyRelMonth; } break; case 30: -#line 248 "getdate.y" +#line 251 "getdate.y" { yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number * 60L; } break; case 31: -#line 251 "getdate.y" +#line 254 "getdate.y" { yyRelSeconds += yyvsp[-1].Number * yyvsp[0].Number * 60L; } break; case 32: -#line 254 "getdate.y" +#line 257 "getdate.y" { yyRelSeconds += yyvsp[0].Number * 60L; } break; case 33: -#line 257 "getdate.y" +#line 260 "getdate.y" { yyRelSeconds += yyvsp[-1].Number; } break; case 34: -#line 260 "getdate.y" +#line 263 "getdate.y" { yyRelSeconds += yyvsp[-1].Number; } break; case 35: -#line 263 "getdate.y" +#line 266 "getdate.y" { yyRelSeconds++; } break; case 36: -#line 266 "getdate.y" +#line 269 "getdate.y" { yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number; } break; case 37: -#line 269 "getdate.y" +#line 272 "getdate.y" { yyRelMonth += yyvsp[-1].Number * yyvsp[0].Number; } break; case 38: -#line 272 "getdate.y" +#line 275 "getdate.y" { yyRelMonth += yyvsp[0].Number; } break; case 39: -#line 277 "getdate.y" +#line 280 "getdate.y" { if (yyHaveTime && yyHaveDate && !yyHaveRel) yyYear = yyvsp[0].Number; @@ -1492,18 +1433,18 @@ } break; case 40: -#line 304 "getdate.y" +#line 307 "getdate.y" { yyval.Meridian = MER24; } break; case 41: -#line 307 "getdate.y" +#line 310 "getdate.y" { yyval.Meridian = yyvsp[0].Meridian; } break; -#line 1449 "getdate.c" +#line 1434 "getdate.c" } yyssp -= yym; yystate = *yyssp; @@ -1556,19 +1497,15 @@ yyoverflow: yyerror("yacc stack overflow"); yyabort: - if (yyss) - free(yyss); - if (yyvs) - free(yyvs); + free(yyss); + free(yyvs); yyss = yyssp = NULL; yyvs = yyvsp = NULL; yystacksize = 0; return (1); yyaccept: - if (yyss) - free(yyss); - if (yyvs) - free(yyvs); + free(yyss); + free(yyvs); yyss = yyssp = NULL; yyvs = yyvsp = NULL; yystacksize = 0; diff -Nru sudo-1.9.4p2/plugins/sudoers/getdate.y sudo-1.9.5p2/plugins/sudoers/getdate.y --- sudo-1.9.4p2/plugins/sudoers/getdate.y 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/getdate.y 2021-01-09 14:12:16.000000000 -0600 @@ -12,6 +12,9 @@ /* SUPPRESS 287 on yaccpar_sccsid *//* Unused static variable */ /* SUPPRESS 288 on yyerrlab *//* Label unused */ +// PVS Studio suppression +// -V::1037, 1042 + #include #include diff -Nru sudo-1.9.4p2/plugins/sudoers/goodpath.c sudo-1.9.5p2/plugins/sudoers/goodpath.c --- sudo-1.9.4p2/plugins/sudoers/goodpath.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/goodpath.c 2021-01-09 14:12:16.000000000 -0600 @@ -55,7 +55,7 @@ errno = ENAMETOOLONG; goto done; } - path = pathbuf; + path = pathbuf; // -V507 } if (sbp == NULL) sbp = &sb; diff -Nru sudo-1.9.4p2/plugins/sudoers/gram.c sudo-1.9.5p2/plugins/sudoers/gram.c --- sudo-1.9.4p2/plugins/sudoers/gram.c 2020-12-16 19:34:30.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/gram.c 2021-01-09 14:12:16.000000000 -0600 @@ -128,6 +128,9 @@ /* If we last saw a newline the entry is on the preceding line. */ #define this_lineno (sudoerschar == '\n' ? sudolineno - 1 : sudolineno) +// PVS Studio suppression +// -V::1037, 1042 + /* * Globals */ @@ -159,7 +162,7 @@ static struct command_digest *new_digest(int, char *); static void alias_error(const char *name, int errnum); -#line 157 "gram.c" +#line 160 "gram.c" # ifndef YY_CAST # ifdef __cplusplus @@ -316,7 +319,7 @@ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 80 "gram.y" +#line 83 "gram.y" struct cmndspec *cmndspec; struct defaults *defaults; @@ -330,7 +333,7 @@ char *string; int tok; -#line 328 "gram.c" +#line 331 "gram.c" }; typedef union YYSTYPE YYSTYPE; @@ -836,21 +839,21 @@ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 189, 189, 192, 195, 196, 199, 202, 205, 212, - 219, 225, 228, 231, 234, 237, 241, 245, 249, 253, - 259, 262, 268, 271, 277, 278, 284, 291, 298, 305, - 312, 321, 322, 326, 332, 346, 350, 356, 363, 370, - 377, 384, 393, 394, 453, 508, 515, 522, 529, 538, - 539, 545, 548, 569, 573, 579, 591, 603, 608, 612, - 617, 622, 627, 631, 636, 639, 644, 659, 668, 677, - 686, 703, 704, 705, 706, 707, 708, 709, 710, 711, - 712, 715, 721, 724, 728, 732, 740, 748, 759, 765, - 771, 777, 785, 788, 791, 794, 797, 800, 803, 806, - 809, 812, 815, 818, 821, 824, 827, 832, 839, 846, - 862, 863, 866, 866, 876, 879, 880, 886, 887, 890, - 890, 900, 903, 904, 910, 911, 914, 914, 924, 927, - 928, 931, 931, 941, 944, 945, 951, 955, 961, 968, - 975, 982, 989, 998, 999, 1005, 1009, 1015, 1022, 1029 + 0, 192, 192, 195, 198, 199, 202, 205, 208, 215, + 222, 228, 231, 234, 237, 240, 244, 248, 252, 256, + 262, 265, 271, 274, 280, 281, 287, 294, 301, 308, + 315, 324, 325, 329, 335, 349, 353, 359, 366, 373, + 380, 387, 396, 397, 456, 511, 518, 525, 532, 541, + 542, 548, 551, 572, 576, 582, 594, 606, 611, 615, + 620, 625, 630, 634, 639, 642, 647, 662, 671, 680, + 689, 706, 707, 708, 709, 710, 711, 712, 713, 714, + 715, 718, 724, 727, 731, 735, 743, 751, 762, 768, + 774, 780, 788, 791, 794, 797, 800, 803, 806, 809, + 812, 815, 818, 821, 824, 827, 830, 835, 842, 849, + 865, 866, 869, 869, 879, 882, 883, 889, 890, 893, + 893, 903, 906, 907, 913, 914, 917, 917, 927, 930, + 931, 934, 934, 944, 947, 948, 954, 958, 964, 971, + 978, 985, 992, 1001, 1002, 1008, 1012, 1018, 1025, 1032 }; #endif @@ -1619,31 +1622,31 @@ switch (yyn) { case 2: /* file: %empty */ -#line 189 "gram.y" +#line 192 "gram.y" { ; /* empty file */ } -#line 1621 "gram.c" +#line 1624 "gram.c" break; case 6: /* entry: '\n' */ -#line 199 "gram.y" +#line 202 "gram.y" { ; /* blank line */ } -#line 1629 "gram.c" +#line 1632 "gram.c" break; case 7: /* entry: error '\n' */ -#line 202 "gram.y" +#line 205 "gram.y" { yyerrok; } -#line 1637 "gram.c" +#line 1640 "gram.c" break; case 8: /* entry: include */ -#line 205 "gram.y" +#line 208 "gram.y" { if (!push_include((yyvsp[0].string), false)) { free((yyvsp[0].string)); @@ -1651,11 +1654,11 @@ } free((yyvsp[0].string)); } -#line 1649 "gram.c" +#line 1652 "gram.c" break; case 9: /* entry: includedir */ -#line 212 "gram.y" +#line 215 "gram.y" { if (!push_include((yyvsp[0].string), true)) { free((yyvsp[0].string)); @@ -1663,142 +1666,142 @@ } free((yyvsp[0].string)); } -#line 1661 "gram.c" +#line 1664 "gram.c" break; case 10: /* entry: userlist privileges '\n' */ -#line 219 "gram.y" +#line 222 "gram.y" { if (!add_userspec((yyvsp[-2].member), (yyvsp[-1].privilege))) { sudoerserror(N_("unable to allocate memory")); YYERROR; } } -#line 1672 "gram.c" +#line 1675 "gram.c" break; case 11: /* entry: USERALIAS useraliases '\n' */ -#line 225 "gram.y" +#line 228 "gram.y" { ; } -#line 1680 "gram.c" +#line 1683 "gram.c" break; case 12: /* entry: HOSTALIAS hostaliases '\n' */ -#line 228 "gram.y" +#line 231 "gram.y" { ; } -#line 1688 "gram.c" +#line 1691 "gram.c" break; case 13: /* entry: CMNDALIAS cmndaliases '\n' */ -#line 231 "gram.y" +#line 234 "gram.y" { ; } -#line 1696 "gram.c" +#line 1699 "gram.c" break; case 14: /* entry: RUNASALIAS runasaliases '\n' */ -#line 234 "gram.y" +#line 237 "gram.y" { ; } -#line 1704 "gram.c" +#line 1707 "gram.c" break; case 15: /* entry: DEFAULTS defaults_list '\n' */ -#line 237 "gram.y" +#line 240 "gram.y" { if (!add_defaults(DEFAULTS, NULL, (yyvsp[-1].defaults))) YYERROR; } -#line 1713 "gram.c" +#line 1716 "gram.c" break; case 16: /* entry: DEFAULTS_USER userlist defaults_list '\n' */ -#line 241 "gram.y" +#line 244 "gram.y" { if (!add_defaults(DEFAULTS_USER, (yyvsp[-2].member), (yyvsp[-1].defaults))) YYERROR; } -#line 1722 "gram.c" +#line 1725 "gram.c" break; case 17: /* entry: DEFAULTS_RUNAS userlist defaults_list '\n' */ -#line 245 "gram.y" +#line 248 "gram.y" { if (!add_defaults(DEFAULTS_RUNAS, (yyvsp[-2].member), (yyvsp[-1].defaults))) YYERROR; } -#line 1731 "gram.c" +#line 1734 "gram.c" break; case 18: /* entry: DEFAULTS_HOST hostlist defaults_list '\n' */ -#line 249 "gram.y" +#line 252 "gram.y" { if (!add_defaults(DEFAULTS_HOST, (yyvsp[-2].member), (yyvsp[-1].defaults))) YYERROR; } -#line 1740 "gram.c" +#line 1743 "gram.c" break; case 19: /* entry: DEFAULTS_CMND cmndlist defaults_list '\n' */ -#line 253 "gram.y" +#line 256 "gram.y" { if (!add_defaults(DEFAULTS_CMND, (yyvsp[-2].member), (yyvsp[-1].defaults))) YYERROR; } -#line 1749 "gram.c" +#line 1752 "gram.c" break; case 20: /* include: INCLUDE WORD '\n' */ -#line 259 "gram.y" +#line 262 "gram.y" { (yyval.string) = (yyvsp[-1].string); } -#line 1757 "gram.c" +#line 1760 "gram.c" break; case 21: /* include: INCLUDE WORD error '\n' */ -#line 262 "gram.y" +#line 265 "gram.y" { yyerrok; (yyval.string) = (yyvsp[-2].string); } -#line 1766 "gram.c" +#line 1769 "gram.c" break; case 22: /* includedir: INCLUDEDIR WORD '\n' */ -#line 268 "gram.y" +#line 271 "gram.y" { (yyval.string) = (yyvsp[-1].string); } -#line 1774 "gram.c" +#line 1777 "gram.c" break; case 23: /* includedir: INCLUDEDIR WORD error '\n' */ -#line 271 "gram.y" +#line 274 "gram.y" { yyerrok; (yyval.string) = (yyvsp[-2].string); } -#line 1783 "gram.c" +#line 1786 "gram.c" break; case 25: /* defaults_list: defaults_list ',' defaults_entry */ -#line 278 "gram.y" +#line 281 "gram.y" { HLTQ_CONCAT((yyvsp[-2].defaults), (yyvsp[0].defaults), entries); (yyval.defaults) = (yyvsp[-2].defaults); } -#line 1792 "gram.c" +#line 1795 "gram.c" break; case 26: /* defaults_entry: DEFVAR */ -#line 284 "gram.y" +#line 287 "gram.y" { (yyval.defaults) = new_default((yyvsp[0].string), NULL, true); if ((yyval.defaults) == NULL) { @@ -1806,11 +1809,11 @@ YYERROR; } } -#line 1804 "gram.c" +#line 1807 "gram.c" break; case 27: /* defaults_entry: '!' DEFVAR */ -#line 291 "gram.y" +#line 294 "gram.y" { (yyval.defaults) = new_default((yyvsp[0].string), NULL, false); if ((yyval.defaults) == NULL) { @@ -1818,11 +1821,11 @@ YYERROR; } } -#line 1816 "gram.c" +#line 1819 "gram.c" break; case 28: /* defaults_entry: DEFVAR '=' WORD */ -#line 298 "gram.y" +#line 301 "gram.y" { (yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), true); if ((yyval.defaults) == NULL) { @@ -1830,11 +1833,11 @@ YYERROR; } } -#line 1828 "gram.c" +#line 1831 "gram.c" break; case 29: /* defaults_entry: DEFVAR '+' WORD */ -#line 305 "gram.y" +#line 308 "gram.y" { (yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), '+'); if ((yyval.defaults) == NULL) { @@ -1842,11 +1845,11 @@ YYERROR; } } -#line 1840 "gram.c" +#line 1843 "gram.c" break; case 30: /* defaults_entry: DEFVAR '-' WORD */ -#line 312 "gram.y" +#line 315 "gram.y" { (yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), '-'); if ((yyval.defaults) == NULL) { @@ -1854,29 +1857,29 @@ YYERROR; } } -#line 1852 "gram.c" +#line 1855 "gram.c" break; case 32: /* privileges: privileges ':' privilege */ -#line 322 "gram.y" +#line 325 "gram.y" { HLTQ_CONCAT((yyvsp[-2].privilege), (yyvsp[0].privilege), entries); (yyval.privilege) = (yyvsp[-2].privilege); } -#line 1861 "gram.c" +#line 1864 "gram.c" break; case 33: /* privileges: privileges ':' error */ -#line 326 "gram.y" +#line 329 "gram.y" { yyerrok; (yyval.privilege) = (yyvsp[-2].privilege); } -#line 1870 "gram.c" +#line 1873 "gram.c" break; case 34: /* privilege: hostlist '=' cmndspeclist */ -#line 332 "gram.y" +#line 335 "gram.y" { struct privilege *p = calloc(1, sizeof(*p)); if (p == NULL) { @@ -1889,29 +1892,29 @@ HLTQ_INIT(p, entries); (yyval.privilege) = p; } -#line 1887 "gram.c" +#line 1890 "gram.c" break; case 35: /* ophost: host */ -#line 346 "gram.y" +#line 349 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = false; } -#line 1896 "gram.c" +#line 1899 "gram.c" break; case 36: /* ophost: '!' host */ -#line 350 "gram.y" +#line 353 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = true; } -#line 1905 "gram.c" +#line 1908 "gram.c" break; case 37: /* host: ALIAS */ -#line 356 "gram.y" +#line 359 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), ALIAS); if ((yyval.member) == NULL) { @@ -1919,11 +1922,11 @@ YYERROR; } } -#line 1917 "gram.c" +#line 1920 "gram.c" break; case 38: /* host: ALL */ -#line 363 "gram.y" +#line 366 "gram.y" { (yyval.member) = new_member(NULL, ALL); if ((yyval.member) == NULL) { @@ -1931,11 +1934,11 @@ YYERROR; } } -#line 1929 "gram.c" +#line 1932 "gram.c" break; case 39: /* host: NETGROUP */ -#line 370 "gram.y" +#line 373 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), NETGROUP); if ((yyval.member) == NULL) { @@ -1943,11 +1946,11 @@ YYERROR; } } -#line 1941 "gram.c" +#line 1944 "gram.c" break; case 40: /* host: NTWKADDR */ -#line 377 "gram.y" +#line 380 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), NTWKADDR); if ((yyval.member) == NULL) { @@ -1955,11 +1958,11 @@ YYERROR; } } -#line 1953 "gram.c" +#line 1956 "gram.c" break; case 41: /* host: WORD */ -#line 384 "gram.y" +#line 387 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), WORD); if ((yyval.member) == NULL) { @@ -1967,11 +1970,11 @@ YYERROR; } } -#line 1965 "gram.c" +#line 1968 "gram.c" break; case 43: /* cmndspeclist: cmndspeclist ',' cmndspec */ -#line 394 "gram.y" +#line 397 "gram.y" { struct cmndspec *prev; prev = HLTQ_LAST((yyvsp[-2].cmndspec), cmndspec, entries); @@ -2029,11 +2032,11 @@ } (yyval.cmndspec) = (yyvsp[-2].cmndspec); } -#line 2027 "gram.c" +#line 2030 "gram.c" break; case 44: /* cmndspec: runasspec options cmndtag digcmnd */ -#line 453 "gram.y" +#line 456 "gram.y" { struct cmndspec *cs = calloc(1, sizeof(*cs)); if (cs == NULL) { @@ -2087,11 +2090,11 @@ cs->tags.setenv = IMPLIED; (yyval.cmndspec) = cs; } -#line 2085 "gram.c" +#line 2088 "gram.c" break; case 45: /* digestspec: SHA224_TOK ':' DIGEST */ -#line 508 "gram.y" +#line 511 "gram.y" { (yyval.digest) = new_digest(SUDO_DIGEST_SHA224, (yyvsp[0].string)); if ((yyval.digest) == NULL) { @@ -2099,11 +2102,11 @@ YYERROR; } } -#line 2097 "gram.c" +#line 2100 "gram.c" break; case 46: /* digestspec: SHA256_TOK ':' DIGEST */ -#line 515 "gram.y" +#line 518 "gram.y" { (yyval.digest) = new_digest(SUDO_DIGEST_SHA256, (yyvsp[0].string)); if ((yyval.digest) == NULL) { @@ -2111,11 +2114,11 @@ YYERROR; } } -#line 2109 "gram.c" +#line 2112 "gram.c" break; case 47: /* digestspec: SHA384_TOK ':' DIGEST */ -#line 522 "gram.y" +#line 525 "gram.y" { (yyval.digest) = new_digest(SUDO_DIGEST_SHA384, (yyvsp[0].string)); if ((yyval.digest) == NULL) { @@ -2123,11 +2126,11 @@ YYERROR; } } -#line 2121 "gram.c" +#line 2124 "gram.c" break; case 48: /* digestspec: SHA512_TOK ':' DIGEST */ -#line 529 "gram.y" +#line 532 "gram.y" { (yyval.digest) = new_digest(SUDO_DIGEST_SHA512, (yyvsp[0].string)); if ((yyval.digest) == NULL) { @@ -2135,28 +2138,28 @@ YYERROR; } } -#line 2133 "gram.c" +#line 2136 "gram.c" break; case 50: /* digestlist: digestlist ',' digestspec */ -#line 539 "gram.y" +#line 542 "gram.y" { HLTQ_CONCAT((yyvsp[-2].digest), (yyvsp[0].digest), entries); (yyval.digest) = (yyvsp[-2].digest); } -#line 2142 "gram.c" +#line 2145 "gram.c" break; case 51: /* digcmnd: opcmnd */ -#line 545 "gram.y" +#line 548 "gram.y" { (yyval.member) = (yyvsp[0].member); } -#line 2150 "gram.c" +#line 2153 "gram.c" break; case 52: /* digcmnd: digestlist opcmnd */ -#line 548 "gram.y" +#line 551 "gram.y" { struct sudo_command *c = (struct sudo_command *) (yyvsp[0].member)->name; @@ -2176,29 +2179,29 @@ HLTQ_TO_TAILQ(&c->digests, (yyvsp[-1].digest), entries); (yyval.member) = (yyvsp[0].member); } -#line 2174 "gram.c" +#line 2177 "gram.c" break; case 53: /* opcmnd: cmnd */ -#line 569 "gram.y" +#line 572 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = false; } -#line 2183 "gram.c" +#line 2186 "gram.c" break; case 54: /* opcmnd: '!' cmnd */ -#line 573 "gram.y" +#line 576 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = true; } -#line 2192 "gram.c" +#line 2195 "gram.c" break; case 55: /* chdirspec: CWD '=' WORD */ -#line 579 "gram.y" +#line 582 "gram.y" { if ((yyvsp[0].string)[0] != '/' && (yyvsp[0].string)[0] != '~') { if (strcmp((yyvsp[0].string), "*") != 0) { @@ -2209,11 +2212,11 @@ } (yyval.string) = (yyvsp[0].string); } -#line 2207 "gram.c" +#line 2210 "gram.c" break; case 56: /* chrootspec: CHROOT '=' WORD */ -#line 591 "gram.y" +#line 594 "gram.y" { if ((yyvsp[0].string)[0] != '/' && (yyvsp[0].string)[0] != '~') { if (strcmp((yyvsp[0].string), "*") != 0) { @@ -2224,83 +2227,83 @@ } (yyval.string) = (yyvsp[0].string); } -#line 2222 "gram.c" +#line 2225 "gram.c" break; case 57: /* timeoutspec: CMND_TIMEOUT '=' WORD */ -#line 603 "gram.y" +#line 606 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2230 "gram.c" +#line 2233 "gram.c" break; case 58: /* notbeforespec: NOTBEFORE '=' WORD */ -#line 608 "gram.y" +#line 611 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2238 "gram.c" +#line 2241 "gram.c" break; case 59: /* notafterspec: NOTAFTER '=' WORD */ -#line 612 "gram.y" +#line 615 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2246 "gram.c" +#line 2249 "gram.c" break; case 60: /* rolespec: ROLE '=' WORD */ -#line 617 "gram.y" +#line 620 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2254 "gram.c" +#line 2257 "gram.c" break; case 61: /* typespec: TYPE '=' WORD */ -#line 622 "gram.y" +#line 625 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2262 "gram.c" +#line 2265 "gram.c" break; case 62: /* privsspec: PRIVS '=' WORD */ -#line 627 "gram.y" +#line 630 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2270 "gram.c" +#line 2273 "gram.c" break; case 63: /* limitprivsspec: LIMITPRIVS '=' WORD */ -#line 631 "gram.y" +#line 634 "gram.y" { (yyval.string) = (yyvsp[0].string); } -#line 2278 "gram.c" +#line 2281 "gram.c" break; case 64: /* runasspec: %empty */ -#line 636 "gram.y" +#line 639 "gram.y" { (yyval.runas) = NULL; } -#line 2286 "gram.c" +#line 2289 "gram.c" break; case 65: /* runasspec: '(' runaslist ')' */ -#line 639 "gram.y" +#line 642 "gram.y" { (yyval.runas) = (yyvsp[-1].runas); } -#line 2294 "gram.c" +#line 2297 "gram.c" break; case 66: /* runaslist: %empty */ -#line 644 "gram.y" +#line 647 "gram.y" { (yyval.runas) = calloc(1, sizeof(struct runascontainer)); if ((yyval.runas) != NULL) { @@ -2316,11 +2319,11 @@ YYERROR; } } -#line 2314 "gram.c" +#line 2317 "gram.c" break; case 67: /* runaslist: userlist */ -#line 659 "gram.y" +#line 662 "gram.y" { (yyval.runas) = calloc(1, sizeof(struct runascontainer)); if ((yyval.runas) == NULL) { @@ -2330,11 +2333,11 @@ (yyval.runas)->runasusers = (yyvsp[0].member); /* $$->runasgroups = NULL; */ } -#line 2328 "gram.c" +#line 2331 "gram.c" break; case 68: /* runaslist: userlist ':' grouplist */ -#line 668 "gram.y" +#line 671 "gram.y" { (yyval.runas) = calloc(1, sizeof(struct runascontainer)); if ((yyval.runas) == NULL) { @@ -2344,11 +2347,11 @@ (yyval.runas)->runasusers = (yyvsp[-2].member); (yyval.runas)->runasgroups = (yyvsp[0].member); } -#line 2342 "gram.c" +#line 2345 "gram.c" break; case 69: /* runaslist: ':' grouplist */ -#line 677 "gram.y" +#line 680 "gram.y" { (yyval.runas) = calloc(1, sizeof(struct runascontainer)); if ((yyval.runas) == NULL) { @@ -2358,11 +2361,11 @@ /* $$->runasusers = NULL; */ (yyval.runas)->runasgroups = (yyvsp[0].member); } -#line 2356 "gram.c" +#line 2359 "gram.c" break; case 70: /* runaslist: ':' */ -#line 686 "gram.y" +#line 689 "gram.y" { (yyval.runas) = calloc(1, sizeof(struct runascontainer)); if ((yyval.runas) != NULL) { @@ -2378,106 +2381,106 @@ YYERROR; } } -#line 2376 "gram.c" +#line 2379 "gram.c" break; case 71: /* reserved_word: ALL */ -#line 703 "gram.y" +#line 706 "gram.y" { (yyval.string) = "ALL"; } -#line 2382 "gram.c" +#line 2385 "gram.c" break; case 72: /* reserved_word: CHROOT */ -#line 704 "gram.y" +#line 707 "gram.y" { (yyval.string) = "CHROOT"; } -#line 2388 "gram.c" +#line 2391 "gram.c" break; case 73: /* reserved_word: CWD */ -#line 705 "gram.y" +#line 708 "gram.y" { (yyval.string) = "CWD"; } -#line 2394 "gram.c" +#line 2397 "gram.c" break; case 74: /* reserved_word: CMND_TIMEOUT */ -#line 706 "gram.y" +#line 709 "gram.y" { (yyval.string) = "CMND_TIMEOUT"; } -#line 2400 "gram.c" +#line 2403 "gram.c" break; case 75: /* reserved_word: NOTBEFORE */ -#line 707 "gram.y" +#line 710 "gram.y" { (yyval.string) = "NOTBEFORE"; } -#line 2406 "gram.c" +#line 2409 "gram.c" break; case 76: /* reserved_word: NOTAFTER */ -#line 708 "gram.y" +#line 711 "gram.y" { (yyval.string) = "NOTAFTER"; } -#line 2412 "gram.c" +#line 2415 "gram.c" break; case 77: /* reserved_word: ROLE */ -#line 709 "gram.y" +#line 712 "gram.y" { (yyval.string) = "ROLE"; } -#line 2418 "gram.c" +#line 2421 "gram.c" break; case 78: /* reserved_word: TYPE */ -#line 710 "gram.y" +#line 713 "gram.y" { (yyval.string) = "TYPE"; } -#line 2424 "gram.c" +#line 2427 "gram.c" break; case 79: /* reserved_word: PRIVS */ -#line 711 "gram.y" +#line 714 "gram.y" { (yyval.string) = "PRIVS"; } -#line 2430 "gram.c" +#line 2433 "gram.c" break; case 80: /* reserved_word: LIMITPRIVS */ -#line 712 "gram.y" +#line 715 "gram.y" { (yyval.string) = "LIMITPRIVS"; } -#line 2436 "gram.c" +#line 2439 "gram.c" break; case 81: /* reserved_alias: reserved_word */ -#line 715 "gram.y" +#line 718 "gram.y" { sudoerserrorf(U_("syntax error, reserved word %s used as an alias name"), (yyvsp[0].string)); YYERROR; } -#line 2445 "gram.c" +#line 2448 "gram.c" break; case 82: /* options: %empty */ -#line 721 "gram.y" +#line 724 "gram.y" { init_options(&(yyval.options)); } -#line 2453 "gram.c" +#line 2456 "gram.c" break; case 83: /* options: options chdirspec */ -#line 724 "gram.y" +#line 727 "gram.y" { free((yyval.options).runcwd); (yyval.options).runcwd = (yyvsp[0].string); } -#line 2462 "gram.c" +#line 2465 "gram.c" break; case 84: /* options: options chrootspec */ -#line 728 "gram.y" +#line 731 "gram.y" { free((yyval.options).runchroot); (yyval.options).runchroot = (yyvsp[0].string); } -#line 2471 "gram.c" +#line 2474 "gram.c" break; case 85: /* options: options notbeforespec */ -#line 732 "gram.y" +#line 735 "gram.y" { (yyval.options).notbefore = parse_gentime((yyvsp[0].string)); free((yyvsp[0].string)); @@ -2486,11 +2489,11 @@ YYERROR; } } -#line 2484 "gram.c" +#line 2487 "gram.c" break; case 86: /* options: options notafterspec */ -#line 740 "gram.y" +#line 743 "gram.y" { (yyval.options).notafter = parse_gentime((yyvsp[0].string)); free((yyvsp[0].string)); @@ -2499,11 +2502,11 @@ YYERROR; } } -#line 2497 "gram.c" +#line 2500 "gram.c" break; case 87: /* options: options timeoutspec */ -#line 748 "gram.y" +#line 751 "gram.y" { (yyval.options).timeout = parse_timeout((yyvsp[0].string)); free((yyvsp[0].string)); @@ -2515,175 +2518,175 @@ YYERROR; } } -#line 2513 "gram.c" +#line 2516 "gram.c" break; case 88: /* options: options rolespec */ -#line 759 "gram.y" +#line 762 "gram.y" { #ifdef HAVE_SELINUX free((yyval.options).role); (yyval.options).role = (yyvsp[0].string); #endif } -#line 2524 "gram.c" +#line 2527 "gram.c" break; case 89: /* options: options typespec */ -#line 765 "gram.y" +#line 768 "gram.y" { #ifdef HAVE_SELINUX free((yyval.options).type); (yyval.options).type = (yyvsp[0].string); #endif } -#line 2535 "gram.c" +#line 2538 "gram.c" break; case 90: /* options: options privsspec */ -#line 771 "gram.y" +#line 774 "gram.y" { #ifdef HAVE_PRIV_SET free((yyval.options).privs); (yyval.options).privs = (yyvsp[0].string); #endif } -#line 2546 "gram.c" +#line 2549 "gram.c" break; case 91: /* options: options limitprivsspec */ -#line 777 "gram.y" +#line 780 "gram.y" { #ifdef HAVE_PRIV_SET free((yyval.options).limitprivs); (yyval.options).limitprivs = (yyvsp[0].string); #endif } -#line 2557 "gram.c" +#line 2560 "gram.c" break; case 92: /* cmndtag: %empty */ -#line 785 "gram.y" +#line 788 "gram.y" { - TAGS_INIT((yyval.tag)); + TAGS_INIT(&(yyval.tag)); } -#line 2565 "gram.c" +#line 2568 "gram.c" break; case 93: /* cmndtag: cmndtag NOPASSWD */ -#line 788 "gram.y" +#line 791 "gram.y" { (yyval.tag).nopasswd = true; } -#line 2573 "gram.c" +#line 2576 "gram.c" break; case 94: /* cmndtag: cmndtag PASSWD */ -#line 791 "gram.y" +#line 794 "gram.y" { (yyval.tag).nopasswd = false; } -#line 2581 "gram.c" +#line 2584 "gram.c" break; case 95: /* cmndtag: cmndtag NOEXEC */ -#line 794 "gram.y" +#line 797 "gram.y" { (yyval.tag).noexec = true; } -#line 2589 "gram.c" +#line 2592 "gram.c" break; case 96: /* cmndtag: cmndtag EXEC */ -#line 797 "gram.y" +#line 800 "gram.y" { (yyval.tag).noexec = false; } -#line 2597 "gram.c" +#line 2600 "gram.c" break; case 97: /* cmndtag: cmndtag SETENV */ -#line 800 "gram.y" +#line 803 "gram.y" { (yyval.tag).setenv = true; } -#line 2605 "gram.c" +#line 2608 "gram.c" break; case 98: /* cmndtag: cmndtag NOSETENV */ -#line 803 "gram.y" +#line 806 "gram.y" { (yyval.tag).setenv = false; } -#line 2613 "gram.c" +#line 2616 "gram.c" break; case 99: /* cmndtag: cmndtag LOG_INPUT */ -#line 806 "gram.y" +#line 809 "gram.y" { (yyval.tag).log_input = true; } -#line 2621 "gram.c" +#line 2624 "gram.c" break; case 100: /* cmndtag: cmndtag NOLOG_INPUT */ -#line 809 "gram.y" +#line 812 "gram.y" { (yyval.tag).log_input = false; } -#line 2629 "gram.c" +#line 2632 "gram.c" break; case 101: /* cmndtag: cmndtag LOG_OUTPUT */ -#line 812 "gram.y" +#line 815 "gram.y" { (yyval.tag).log_output = true; } -#line 2637 "gram.c" +#line 2640 "gram.c" break; case 102: /* cmndtag: cmndtag NOLOG_OUTPUT */ -#line 815 "gram.y" +#line 818 "gram.y" { (yyval.tag).log_output = false; } -#line 2645 "gram.c" +#line 2648 "gram.c" break; case 103: /* cmndtag: cmndtag FOLLOWLNK */ -#line 818 "gram.y" +#line 821 "gram.y" { (yyval.tag).follow = true; } -#line 2653 "gram.c" +#line 2656 "gram.c" break; case 104: /* cmndtag: cmndtag NOFOLLOWLNK */ -#line 821 "gram.y" +#line 824 "gram.y" { (yyval.tag).follow = false; } -#line 2661 "gram.c" +#line 2664 "gram.c" break; case 105: /* cmndtag: cmndtag MAIL */ -#line 824 "gram.y" +#line 827 "gram.y" { (yyval.tag).send_mail = true; } -#line 2669 "gram.c" +#line 2672 "gram.c" break; case 106: /* cmndtag: cmndtag NOMAIL */ -#line 827 "gram.y" +#line 830 "gram.y" { (yyval.tag).send_mail = false; } -#line 2677 "gram.c" +#line 2680 "gram.c" break; case 107: /* cmnd: ALL */ -#line 832 "gram.y" +#line 835 "gram.y" { (yyval.member) = new_member(NULL, ALL); if ((yyval.member) == NULL) { @@ -2691,11 +2694,11 @@ YYERROR; } } -#line 2689 "gram.c" +#line 2692 "gram.c" break; case 108: /* cmnd: ALIAS */ -#line 839 "gram.y" +#line 842 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), ALIAS); if ((yyval.member) == NULL) { @@ -2703,11 +2706,11 @@ YYERROR; } } -#line 2701 "gram.c" +#line 2704 "gram.c" break; case 109: /* cmnd: COMMAND */ -#line 846 "gram.y" +#line 849 "gram.y" { struct sudo_command *c; @@ -2722,20 +2725,20 @@ YYERROR; } } -#line 2720 "gram.c" +#line 2723 "gram.c" break; case 112: /* $@1: %empty */ -#line 866 "gram.y" +#line 869 "gram.y" { alias_line = this_lineno; alias_column = sudolinebuf.toke_start + 1; } -#line 2729 "gram.c" +#line 2732 "gram.c" break; case 113: /* hostalias: ALIAS $@1 '=' hostlist */ -#line 869 "gram.y" +#line 872 "gram.y" { if (!alias_add(&parsed_policy, (yyvsp[-3].string), HOSTALIAS, sudoers, alias_line, alias_column, (yyvsp[0].member))) { @@ -2743,29 +2746,29 @@ YYERROR; } } -#line 2741 "gram.c" +#line 2744 "gram.c" break; case 116: /* hostlist: hostlist ',' ophost */ -#line 880 "gram.y" +#line 883 "gram.y" { HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries); (yyval.member) = (yyvsp[-2].member); } -#line 2750 "gram.c" +#line 2753 "gram.c" break; case 119: /* $@2: %empty */ -#line 890 "gram.y" +#line 893 "gram.y" { alias_line = this_lineno; alias_column = sudolinebuf.toke_start + 1; } -#line 2759 "gram.c" +#line 2762 "gram.c" break; case 120: /* cmndalias: ALIAS $@2 '=' cmndlist */ -#line 893 "gram.y" +#line 896 "gram.y" { if (!alias_add(&parsed_policy, (yyvsp[-3].string), CMNDALIAS, sudoers, alias_line, alias_column, (yyvsp[0].member))) { @@ -2773,29 +2776,29 @@ YYERROR; } } -#line 2771 "gram.c" +#line 2774 "gram.c" break; case 123: /* cmndlist: cmndlist ',' digcmnd */ -#line 904 "gram.y" +#line 907 "gram.y" { HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries); (yyval.member) = (yyvsp[-2].member); } -#line 2780 "gram.c" +#line 2783 "gram.c" break; case 126: /* $@3: %empty */ -#line 914 "gram.y" +#line 917 "gram.y" { alias_line = this_lineno; alias_column = sudolinebuf.toke_start + 1; } -#line 2789 "gram.c" +#line 2792 "gram.c" break; case 127: /* runasalias: ALIAS $@3 '=' userlist */ -#line 917 "gram.y" +#line 920 "gram.y" { if (!alias_add(&parsed_policy, (yyvsp[-3].string), RUNASALIAS, sudoers, alias_line, alias_column, (yyvsp[0].member))) { @@ -2803,20 +2806,20 @@ YYERROR; } } -#line 2801 "gram.c" +#line 2804 "gram.c" break; case 131: /* $@4: %empty */ -#line 931 "gram.y" +#line 934 "gram.y" { alias_line = this_lineno; alias_column = sudolinebuf.toke_start + 1; } -#line 2810 "gram.c" +#line 2813 "gram.c" break; case 132: /* useralias: ALIAS $@4 '=' userlist */ -#line 934 "gram.y" +#line 937 "gram.y" { if (!alias_add(&parsed_policy, (yyvsp[-3].string), USERALIAS, sudoers, alias_line, alias_column, (yyvsp[0].member))) { @@ -2824,38 +2827,38 @@ YYERROR; } } -#line 2822 "gram.c" +#line 2825 "gram.c" break; case 135: /* userlist: userlist ',' opuser */ -#line 945 "gram.y" +#line 948 "gram.y" { HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries); (yyval.member) = (yyvsp[-2].member); } -#line 2831 "gram.c" +#line 2834 "gram.c" break; case 136: /* opuser: user */ -#line 951 "gram.y" +#line 954 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = false; } -#line 2840 "gram.c" +#line 2843 "gram.c" break; case 137: /* opuser: '!' user */ -#line 955 "gram.y" +#line 958 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = true; } -#line 2849 "gram.c" +#line 2852 "gram.c" break; case 138: /* user: ALIAS */ -#line 961 "gram.y" +#line 964 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), ALIAS); if ((yyval.member) == NULL) { @@ -2863,11 +2866,11 @@ YYERROR; } } -#line 2861 "gram.c" +#line 2864 "gram.c" break; case 139: /* user: ALL */ -#line 968 "gram.y" +#line 971 "gram.y" { (yyval.member) = new_member(NULL, ALL); if ((yyval.member) == NULL) { @@ -2875,11 +2878,11 @@ YYERROR; } } -#line 2873 "gram.c" +#line 2876 "gram.c" break; case 140: /* user: NETGROUP */ -#line 975 "gram.y" +#line 978 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), NETGROUP); if ((yyval.member) == NULL) { @@ -2887,11 +2890,11 @@ YYERROR; } } -#line 2885 "gram.c" +#line 2888 "gram.c" break; case 141: /* user: USERGROUP */ -#line 982 "gram.y" +#line 985 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), USERGROUP); if ((yyval.member) == NULL) { @@ -2899,11 +2902,11 @@ YYERROR; } } -#line 2897 "gram.c" +#line 2900 "gram.c" break; case 142: /* user: WORD */ -#line 989 "gram.y" +#line 992 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), WORD); if ((yyval.member) == NULL) { @@ -2911,38 +2914,38 @@ YYERROR; } } -#line 2909 "gram.c" +#line 2912 "gram.c" break; case 144: /* grouplist: grouplist ',' opgroup */ -#line 999 "gram.y" +#line 1002 "gram.y" { HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries); (yyval.member) = (yyvsp[-2].member); } -#line 2918 "gram.c" +#line 2921 "gram.c" break; case 145: /* opgroup: group */ -#line 1005 "gram.y" +#line 1008 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = false; } -#line 2927 "gram.c" +#line 2930 "gram.c" break; case 146: /* opgroup: '!' group */ -#line 1009 "gram.y" +#line 1012 "gram.y" { (yyval.member) = (yyvsp[0].member); (yyval.member)->negated = true; } -#line 2936 "gram.c" +#line 2939 "gram.c" break; case 147: /* group: ALIAS */ -#line 1015 "gram.y" +#line 1018 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), ALIAS); if ((yyval.member) == NULL) { @@ -2950,11 +2953,11 @@ YYERROR; } } -#line 2948 "gram.c" +#line 2951 "gram.c" break; case 148: /* group: ALL */ -#line 1022 "gram.y" +#line 1025 "gram.y" { (yyval.member) = new_member(NULL, ALL); if ((yyval.member) == NULL) { @@ -2962,11 +2965,11 @@ YYERROR; } } -#line 2960 "gram.c" +#line 2963 "gram.c" break; case 149: /* group: WORD */ -#line 1029 "gram.y" +#line 1032 "gram.y" { (yyval.member) = new_member((yyvsp[0].string), WORD); if ((yyval.member) == NULL) { @@ -2974,11 +2977,11 @@ YYERROR; } } -#line 2972 "gram.c" +#line 2975 "gram.c" break; -#line 2976 "gram.c" +#line 2979 "gram.c" default: break; } @@ -3172,7 +3175,7 @@ return yyresult; } -#line 1037 "gram.y" +#line 1040 "gram.y" /* Like yyerror() but takes a printf-style format string. */ void @@ -3205,7 +3208,9 @@ /* Optimize common case, a single string. */ s = _(va_arg(ap, char *)); } else { - if (vasprintf(&s, fmt, ap) == -1) + if (vasprintf(&s, fmt, ap) != -1) + tofree = s; + else s = _("syntax error"); } sudo_printf(SUDO_CONV_ERROR_MSG, _("%s:%d:%d: %s\n"), sudoers, @@ -3241,6 +3246,7 @@ void sudoerserror(const char *s) { + // -V:sudoerserror:575, 618 if (s == NULL) sudoerserrorf(NULL); else diff -Nru sudo-1.9.4p2/plugins/sudoers/gram.h sudo-1.9.5p2/plugins/sudoers/gram.h --- sudo-1.9.4p2/plugins/sudoers/gram.h 2020-12-16 19:34:30.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/gram.h 2021-01-09 14:12:16.000000000 -0600 @@ -167,7 +167,7 @@ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 80 "gram.y" +#line 83 "gram.y" struct cmndspec *cmndspec; struct defaults *defaults; diff -Nru sudo-1.9.4p2/plugins/sudoers/gram.y sudo-1.9.5p2/plugins/sudoers/gram.y --- sudo-1.9.4p2/plugins/sudoers/gram.y 2020-12-16 19:34:30.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/gram.y 2021-01-09 14:12:16.000000000 -0600 @@ -45,6 +45,9 @@ /* If we last saw a newline the entry is on the preceding line. */ #define this_lineno (sudoerschar == '\n' ? sudolineno - 1 : sudolineno) +// PVS Studio suppression +// -V::1037, 1042 + /* * Globals */ @@ -783,7 +786,7 @@ ; cmndtag : /* empty */ { - TAGS_INIT($$); + TAGS_INIT(&$$); } | cmndtag NOPASSWD { $$.nopasswd = true; @@ -1066,7 +1069,9 @@ /* Optimize common case, a single string. */ s = _(va_arg(ap, char *)); } else { - if (vasprintf(&s, fmt, ap) == -1) + if (vasprintf(&s, fmt, ap) != -1) + tofree = s; + else s = _("syntax error"); } sudo_printf(SUDO_CONV_ERROR_MSG, _("%s:%d:%d: %s\n"), sudoers, @@ -1102,6 +1107,7 @@ void sudoerserror(const char *s) { + // -V:sudoerserror:575, 618 if (s == NULL) sudoerserrorf(NULL); else diff -Nru sudo-1.9.4p2/plugins/sudoers/ldap_util.c sudo-1.9.5p2/plugins/sudoers/ldap_util.c --- sudo-1.9.4p2/plugins/sudoers/ldap_util.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/ldap_util.c 2021-01-09 14:12:16.000000000 -0600 @@ -458,7 +458,7 @@ TAILQ_INSERT_TAIL(&priv->cmndlist, cmndspec, entries); /* Initialize cmndspec */ - TAGS_INIT(cmndspec->tags); + TAGS_INIT(&cmndspec->tags); cmndspec->notbefore = UNSPEC; cmndspec->notafter = UNSPEC; cmndspec->timeout = UNSPEC; diff -Nru sudo-1.9.4p2/plugins/sudoers/linux_audit.c sudo-1.9.5p2/plugins/sudoers/linux_audit.c --- sudo-1.9.4p2/plugins/sudoers/linux_audit.c 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/linux_audit.c 2021-01-09 14:12:16.000000000 -0600 @@ -56,8 +56,10 @@ au_fd = AUDIT_NOT_CONFIGURED; else sudo_warn("%s", U_("unable to open audit system")); - } else { - (void)fcntl(au_fd, F_SETFD, FD_CLOEXEC); + } else if (fcntl(au_fd, F_SETFD, FD_CLOEXEC) == -1) { + sudo_warn("%s", U_("unable to open audit system")); + audit_close(au_fd); + au_fd = -1; } debug_return_int(au_fd); } diff -Nru sudo-1.9.4p2/plugins/sudoers/log_client.c sudo-1.9.5p2/plugins/sudoers/log_client.c --- sudo-1.9.4p2/plugins/sudoers/log_client.c 2020-12-16 19:34:30.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/log_client.c 2021-01-23 09:45:11.000000000 -0600 @@ -1700,7 +1700,8 @@ } closure->temporary_write_event = true; } - closure->write_instead_of_read = true; + /* Redirect write event to finish SSL_read() */ + closure->read_instead_of_write = true; debug_return; case SSL_ERROR_SSL: /* @@ -1842,6 +1843,7 @@ /* ssl wants to read, read event always active */ sudo_debug_printf(SUDO_DEBUG_NOTICE|SUDO_DEBUG_LINENO, "SSL_write returns SSL_ERROR_WANT_READ"); + /* Redirect read event to finish SSL_write() */ closure->write_instead_of_read = true; debug_return; case SSL_ERROR_WANT_WRITE: @@ -1888,9 +1890,6 @@ if (!client_message_completion(closure)) goto bad; } - } else { - /* not done yet */ - TAILQ_INSERT_HEAD(&closure->write_bufs, buf, entries); } debug_return; diff -Nru sudo-1.9.4p2/plugins/sudoers/logging.c sudo-1.9.5p2/plugins/sudoers/logging.c --- sudo-1.9.4p2/plugins/sudoers/logging.c 2020-12-16 19:34:30.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/logging.c 2021-01-09 14:12:16.000000000 -0600 @@ -669,7 +669,7 @@ } if (def_runcwd && strcmp(def_runcwd, "*") != 0) { evlog->runcwd = def_runcwd; - } else if (ISSET(sudo_mode, MODE_LOGIN_SHELL)) { + } else if (ISSET(sudo_mode, MODE_LOGIN_SHELL) && runas_pw != NULL) { evlog->runcwd = runas_pw->pw_dir; } else { evlog->runcwd = user_cwd; diff -Nru sudo-1.9.4p2/plugins/sudoers/Makefile.in sudo-1.9.5p2/plugins/sudoers/Makefile.in --- sudo-1.9.4p2/plugins/sudoers/Makefile.in 2020-12-16 19:33:43.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/Makefile.in 2021-01-09 14:12:16.000000000 -0600 @@ -101,7 +101,7 @@ SSP_LDFLAGS = @SSP_LDFLAGS@ # cppcheck options, usually set in the top-level Makefile -CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 # splint options, usually set in the top-level Makefile SPLINT_OPTS = -D__restrict= -checks @@ -1662,10 +1662,9 @@ $(CC) -E -o $@ $(CPPFLAGS) $< kerb5.plog: kerb5.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(authdir)/kerb5.c --i-file $< --output-file $@ -ldap.lo: $(srcdir)/ldap.c $(devdir)/def_data.h $(devdir)/gram.h \ - $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ - $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h $(incdir)/sudo_dso.h \ - $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ +ldap.lo: $(srcdir)/ldap.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_dso.h $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ $(incdir)/sudo_gettext.h $(incdir)/sudo_lbuf.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \ @@ -1673,10 +1672,9 @@ $(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) $(SSP_CFLAGS) $(srcdir)/ldap.c -ldap.i: $(srcdir)/ldap.c $(devdir)/def_data.h $(devdir)/gram.h \ - $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ - $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h $(incdir)/sudo_dso.h \ - $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ +ldap.i: $(srcdir)/ldap.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_dso.h $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ $(incdir)/sudo_gettext.h $(incdir)/sudo_lbuf.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \ @@ -2308,10 +2306,9 @@ $(CC) -E -o $@ $(CPPFLAGS) $< solaris_audit.plog: solaris_audit.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/solaris_audit.c --i-file $< --output-file $@ -sssd.lo: $(srcdir)/sssd.c $(devdir)/def_data.h $(devdir)/gram.h \ - $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ - $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h $(incdir)/sudo_dso.h \ - $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ +sssd.lo: $(srcdir)/sssd.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_dso.h $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ $(incdir)/sudo_gettext.h $(incdir)/sudo_lbuf.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \ @@ -2319,10 +2316,9 @@ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \ $(top_builddir)/pathnames.h $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/sssd.c -sssd.i: $(srcdir)/sssd.c $(devdir)/def_data.h $(devdir)/gram.h \ - $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ - $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h $(incdir)/sudo_dso.h \ - $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ +sssd.i: $(srcdir)/sssd.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \ + $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \ + $(incdir)/sudo_dso.h $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \ $(incdir)/sudo_gettext.h $(incdir)/sudo_lbuf.h \ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \ diff -Nru sudo-1.9.4p2/plugins/sudoers/match_command.c sudo-1.9.5p2/plugins/sudoers/match_command.c --- sudo-1.9.4p2/plugins/sudoers/match_command.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/match_command.c 2021-01-09 14:12:16.000000000 -0600 @@ -115,14 +115,10 @@ char magic[2]; debug_decl(is_script, SUDOERS_DEBUG_MATCH); - if (read(fd, magic, 2) == 2) { + if (pread(fd, magic, 2, 0) == 2) { if (magic[0] == '#' && magic[1] == '!') ret = true; } - if (lseek(fd, (off_t)0, SEEK_SET) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO|SUDO_DEBUG_LINENO, - "unable to rewind script fd"); - } debug_return_int(ret); } diff -Nru sudo-1.9.4p2/plugins/sudoers/parse.h sudo-1.9.5p2/plugins/sudoers/parse.h --- sudo-1.9.4p2/plugins/sudoers/parse.h 2020-12-16 19:34:30.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/parse.h 2021-01-09 14:12:16.000000000 -0600 @@ -42,13 +42,13 @@ * Initialize all tags to UNSPEC. */ #define TAGS_INIT(t) do { \ - (t).follow = UNSPEC; \ - (t).log_input = UNSPEC; \ - (t).log_output = UNSPEC; \ - (t).noexec = UNSPEC; \ - (t).nopasswd = UNSPEC; \ - (t).send_mail = UNSPEC; \ - (t).setenv = UNSPEC; \ + (t)->follow = UNSPEC; \ + (t)->log_input = UNSPEC; \ + (t)->log_output = UNSPEC; \ + (t)->noexec = UNSPEC; \ + (t)->nopasswd = UNSPEC; \ + (t)->send_mail = UNSPEC; \ + (t)->setenv = UNSPEC; \ } while (0) /* @@ -318,7 +318,7 @@ void free_userspecs(struct userspec_list *usl); void free_default(struct defaults *def, struct member_list **binding); void free_defaults(struct defaults_list *defs); -void init_parse_tree(struct sudoers_parse_tree *parse_tree, const char *shost, const char *lhost); +void init_parse_tree(struct sudoers_parse_tree *parse_tree, const char *lhost, const char *shost); void free_parse_tree(struct sudoers_parse_tree *parse_tree); void reparent_parse_tree(struct sudoers_parse_tree *new_tree); Binary files /tmp/iZuZwXTqez/sudo-1.9.4p2/plugins/sudoers/po/hr.mo and /tmp/cZR8a_TUxF/sudo-1.9.5p2/plugins/sudoers/po/hr.mo differ diff -Nru sudo-1.9.4p2/plugins/sudoers/po/hr.po sudo-1.9.5p2/plugins/sudoers/po/hr.po --- sudo-1.9.4p2/plugins/sudoers/po/hr.po 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/po/hr.po 2021-01-09 14:12:16.000000000 -0600 @@ -1164,7 +1164,7 @@ #: plugins/sudoers/cvtsudoers.c:220 #, c-format msgid "order padding: %s: %s" -msgstr "popuna redoslijeda (order): %s: %s" +msgstr "ispuna redoslijeda (order): %s: %s" #: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179 #, c-format @@ -1282,8 +1282,8 @@ " -b, --base=dn osnovni DN za sudo LDAP upite\n" " -c, --config=conf_file staza do konfiguracijske datoteke\n" " -d, --defaults=deftypes pretvori samo Defaults od specificiranih deftypes\n" -" -e, --expand-aliases proširuje aliase kada pretvara\n" -" -f, --output-format=format izlazni format jedan od: JSON, LDIF ili sudoers\n" +" -e, --expand-aliases proširuje aliase prilikom pretvaranja\n" +" -f, --output-format=format izlazni format je jedan od: JSON, LDIF ili sudoers\n" " -i, --input-format=format ulazni format jedan od: LDIF ili sudoers\n" " -I, --increment=num inkrement za num svaki sudoOrder\n" " -h, --help pokaže ovu pomoć i završi\n" @@ -1292,7 +1292,7 @@ " -o, --output=output_file pretvoreni sudoers zapiše u output_file\n" " -O, --order-start=num prvi sudoOrder započinje od num\n" " -p, --prune-matches izreže nepodudarne korisnike, grupe i računala\n" -" -P, --padding=num osnovna popuna za sudoOrder inkrement\n" +" -P, --padding=num osnovna ispuna za sudoOrder inkrement\n" " -s, --suppress=sections izostavi izlaz od sections sekcija\n" " -V, --version informira o inačici ovog programa i završi" Binary files /tmp/iZuZwXTqez/sudo-1.9.4p2/plugins/sudoers/po/it.mo and /tmp/cZR8a_TUxF/sudo-1.9.5p2/plugins/sudoers/po/it.mo differ diff -Nru sudo-1.9.4p2/plugins/sudoers/po/it.po sudo-1.9.5p2/plugins/sudoers/po/it.po --- sudo-1.9.4p2/plugins/sudoers/po/it.po 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/po/it.po 2021-01-09 14:12:16.000000000 -0600 @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers-1.9.3b2\n" +"Project-Id-Version: sudoers-1.9.4b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2020-09-14 06:53-0600\n" -"PO-Revision-Date: 2020-09-28 09:10+0200\n" +"POT-Creation-Date: 2020-11-14 06:24-0700\n" +"PO-Revision-Date: 2020-12-03 09:48+0100\n" "Last-Translator: Milo Casagrande \n" "Language-Team: Italian \n" "Language: it\n" @@ -19,7 +19,7 @@ "X-Generator: Poedit 2.4.1\n" "X-Poedit-SourceCharset: UTF-8\n" -#: confstr.sh:1 +#: confstr.sh:1 gram.y:1077 msgid "syntax error" msgstr "errore di sintassi" @@ -43,70 +43,70 @@ msgid "Sorry, try again." msgstr "Riprovare." -#: gram.y:218 gram.y:284 gram.y:291 gram.y:298 gram.y:305 gram.y:312 -#: gram.y:332 gram.y:356 gram.y:363 gram.y:370 gram.y:377 gram.y:384 -#: gram.y:453 gram.y:462 gram.y:473 gram.y:508 gram.y:515 gram.y:522 -#: gram.y:529 gram.y:556 gram.y:652 gram.y:659 gram.y:668 gram.y:677 -#: gram.y:694 gram.y:814 gram.y:821 gram.y:829 gram.y:835 gram.y:935 -#: gram.y:942 gram.y:949 gram.y:956 gram.y:963 gram.y:989 gram.y:996 -#: gram.y:1003 gram.y:1176 gram.y:1465 lib/iolog/iolog_fileio.c:1111 -#: lib/iolog/iolog_json.c:119 lib/iolog/iolog_json.c:304 -#: lib/iolog/iolog_json.c:334 lib/iolog/iolog_json.c:456 -#: lib/iolog/iolog_util.c:105 lib/iolog/iolog_util.c:114 -#: lib/iolog/iolog_util.c:124 lib/iolog/iolog_util.c:132 -#: lib/iolog/iolog_util.c:136 lib/iolog/iolog_util.c:195 -#: logsrvd/eventlog.c:233 logsrvd/sendlog.c:464 plugins/sudoers/alias.c:125 -#: plugins/sudoers/alias.c:132 plugins/sudoers/alias.c:148 -#: plugins/sudoers/audit.c:108 plugins/sudoers/audit.c:217 -#: plugins/sudoers/auth/bsdauth.c:143 plugins/sudoers/auth/kerb5.c:118 -#: plugins/sudoers/auth/kerb5.c:144 plugins/sudoers/auth/pam.c:669 -#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 -#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 -#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 -#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428 -#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578 -#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756 -#: plugins/sudoers/cvtsudoers.c:764 plugins/sudoers/cvtsudoers.c:1178 -#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284 -#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 -#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 -#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 -#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 -#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 -#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:626 -#: plugins/sudoers/defaults.c:918 plugins/sudoers/defaults.c:1093 -#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:85 -#: plugins/sudoers/editor.c:96 plugins/sudoers/env.c:261 -#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 -#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56 -#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:491 plugins/sudoers/iolog_client.c:104 -#: plugins/sudoers/iolog_client.c:381 plugins/sudoers/iolog_client.c:547 -#: plugins/sudoers/iolog_client.c:561 plugins/sudoers/iolog_client.c:680 -#: plugins/sudoers/iolog_client.c:698 plugins/sudoers/iolog_client.c:1192 -#: plugins/sudoers/iolog_client.c:1421 plugins/sudoers/iolog_client.c:1739 -#: plugins/sudoers/iolog_client.c:1767 plugins/sudoers/ldap.c:183 -#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431 -#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440 -#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743 -#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279 -#: plugins/sudoers/ldap.c:1707 plugins/sudoers/ldap.c:1744 -#: plugins/sudoers/ldap.c:1825 plugins/sudoers/ldap.c:1960 -#: plugins/sudoers/ldap.c:2061 plugins/sudoers/ldap.c:2077 +#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314 +#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386 +#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524 +#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679 +#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971 +#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032 +#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280 +#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753 +#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062 +#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120 +#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335 +#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106 +#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125 +#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137 +#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480 +#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134 +#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115 +#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143 +#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 +#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119 +#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177 +#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300 +#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561 +#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641 +#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764 +#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182 +#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76 +#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194 +#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300 +#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421 +#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440 +#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460 +#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615 +#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923 +#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181 +#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92 +#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 +#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133 +#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596 +#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184 +#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 +#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 +#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 +#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 +#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 +#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 +#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 #: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 #: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 #: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 #: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 #: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760 #: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333 -#: plugins/sudoers/ldap_util.c:604 plugins/sudoers/linux_audit.c:84 -#: plugins/sudoers/logging.c:102 plugins/sudoers/logging.c:191 -#: plugins/sudoers/logging.c:518 plugins/sudoers/logging.c:544 -#: plugins/sudoers/logging.c:585 plugins/sudoers/logging.c:722 -#: plugins/sudoers/logging.c:1091 plugins/sudoers/match_command.c:280 -#: plugins/sudoers/match_command.c:448 plugins/sudoers/match_command.c:498 -#: plugins/sudoers/match_command.c:572 plugins/sudoers/match_digest.c:80 +#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84 +#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381 +#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706 +#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620 +#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999 +#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166 +#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446 +#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281 +#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499 +#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93 #: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213 #: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244 #: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275 @@ -119,27 +119,27 @@ #: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624 #: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707 #: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752 -#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:521 -#: plugins/sudoers/policy.c:869 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526 +#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93 #: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265 #: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517 #: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652 #: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867 #: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968 -#: plugins/sudoers/sssd.c:146 plugins/sudoers/sssd.c:409 -#: plugins/sudoers/sssd.c:472 plugins/sudoers/sssd.c:516 -#: plugins/sudoers/sssd.c:563 plugins/sudoers/sssd.c:756 -#: plugins/sudoers/stubs.c:103 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/sudoers.c:303 plugins/sudoers/sudoers.c:328 -#: plugins/sudoers/sudoers.c:372 plugins/sudoers/sudoers.c:383 -#: plugins/sudoers/sudoers.c:393 plugins/sudoers/sudoers.c:435 -#: plugins/sudoers/sudoers.c:797 plugins/sudoers/sudoers.c:960 -#: plugins/sudoers/sudoers.c:994 plugins/sudoers/sudoers.c:1298 -#: plugins/sudoers/sudoreplay.c:551 plugins/sudoers/sudoreplay.c:554 -#: plugins/sudoers/sudoreplay.c:1258 plugins/sudoers/sudoreplay.c:1468 -#: plugins/sudoers/sudoreplay.c:1472 plugins/sudoers/testsudoers.c:128 +#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407 +#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 +#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 +#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118 +#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326 +#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381 +#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433 +#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927 +#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265 +#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 +#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 +#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128 #: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:432 +#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432 #: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986 #: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104 #: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157 @@ -147,53 +147,60 @@ #: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329 #: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615 #: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008 -#: plugins/sudoers/visudo.c:1127 toke.l:922 toke.l:1042 toke.l:1100 +#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091 msgid "unable to allocate memory" msgstr "impossibile allocare memoria" -#: gram.y:550 +#: gram.y:552 msgid "a digest requires a path name" msgstr "un digest richiede il nome di percorso" -#: gram.y:579 +#: gram.y:581 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "i valori per \"CWD\" devono iniziare con un carattere \"/\", \"~\" o \"*\"" -#: gram.y:591 +#: gram.y:593 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "i valori per \"CHROOT\" devono iniziare con un carattere \"/\", \"~\" o \"*\"" #: gram.y:715 +#, c-format +msgid "syntax error, reserved word %s used as an alias name" +msgstr "errore di sintassi, parola riservata %s utilizzata come alias" + +#: gram.y:735 msgid "invalid notbefore value" msgstr "valore notbefore non valido" -#: gram.y:723 +#: gram.y:743 msgid "invalid notafter value" msgstr "valore notafter non valido" -#: gram.y:732 plugins/sudoers/policy.c:330 +#: gram.y:752 plugins/sudoers/policy.c:335 msgid "timeout value too large" msgstr "valore timeout troppo grande" -#: gram.y:734 plugins/sudoers/policy.c:332 +#: gram.y:754 plugins/sudoers/policy.c:337 msgid "invalid timeout value" msgstr "valore timeout non valido" -#: gram.y:1041 +#: gram.y:1079 #, c-format -msgid "%s:%d: %s\n" -msgstr "%s:%d: %s\n" +msgid "%s:%d:%d: %s\n" +msgstr "%s:%d:%d: %s\n" -#: gram.y:1465 lib/iolog/iolog_fileio.c:1111 lib/iolog/iolog_json.c:119 -#: lib/iolog/iolog_json.c:303 lib/iolog/iolog_json.c:334 -#: lib/iolog/iolog_json.c:456 lib/iolog/iolog_json.c:734 -#: lib/iolog/iolog_util.c:105 lib/iolog/iolog_util.c:114 -#: lib/iolog/iolog_util.c:124 lib/iolog/iolog_util.c:132 -#: lib/iolog/iolog_util.c:136 lib/iolog/iolog_util.c:195 -#: logsrvd/eventlog.c:233 logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1221 -#: logsrvd/logsrvd.c:1266 logsrvd/sendlog.c:464 logsrvd/sendlog.c:1305 -#: logsrvd/sendlog.c:1312 logsrvd/sendlog.c:1730 plugins/sudoers/audit.c:108 -#: plugins/sudoers/audit.c:217 plugins/sudoers/auth/pam.c:482 +#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753 +#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816 +#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998 +#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304 +#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457 +#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106 +#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125 +#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137 +#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293 +#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321 +#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115 +#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482 #: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 #: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 @@ -208,93 +215,144 @@ #: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428 #: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446 #: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467 -#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:626 -#: plugins/sudoers/defaults.c:918 plugins/sudoers/defaults.c:1093 -#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:85 -#: plugins/sudoers/editor.c:96 plugins/sudoers/env.c:261 +#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630 +#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098 +#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56 #: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72 -#: plugins/sudoers/iolog.c:491 plugins/sudoers/iolog_client.c:104 -#: plugins/sudoers/iolog_client.c:214 plugins/sudoers/iolog_client.c:235 -#: plugins/sudoers/iolog_client.c:248 plugins/sudoers/iolog_client.c:381 -#: plugins/sudoers/iolog_client.c:680 plugins/sudoers/iolog_client.c:698 -#: plugins/sudoers/iolog_client.c:1192 plugins/sudoers/iolog_client.c:1421 -#: plugins/sudoers/iolog_client.c:1739 plugins/sudoers/iolog_client.c:1767 -#: plugins/sudoers/ldap.c:183 plugins/sudoers/ldap.c:421 -#: plugins/sudoers/ldap.c:431 plugins/sudoers/ldap.c:436 -#: plugins/sudoers/ldap.c:440 plugins/sudoers/ldap.c:452 -#: plugins/sudoers/ldap.c:743 plugins/sudoers/ldap.c:907 -#: plugins/sudoers/ldap.c:1279 plugins/sudoers/ldap.c:1707 -#: plugins/sudoers/ldap.c:1744 plugins/sudoers/ldap.c:1825 -#: plugins/sudoers/ldap.c:1960 plugins/sudoers/ldap.c:2061 -#: plugins/sudoers/ldap.c:2077 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 #: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 #: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 #: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 #: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 #: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325 -#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:604 -#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/logging.c:102 -#: plugins/sudoers/logging.c:191 plugins/sudoers/logging.c:518 -#: plugins/sudoers/logging.c:544 plugins/sudoers/logging.c:584 -#: plugins/sudoers/logging.c:1091 plugins/sudoers/match_command.c:279 -#: plugins/sudoers/match_command.c:447 plugins/sudoers/match_command.c:497 -#: plugins/sudoers/match_command.c:572 plugins/sudoers/match_digest.c:80 -#: plugins/sudoers/parse.c:198 plugins/sudoers/parse.c:212 -#: plugins/sudoers/parse.c:229 plugins/sudoers/parse.c:243 -#: plugins/sudoers/parse.c:263 plugins/sudoers/parse.c:274 -#: plugins/sudoers/parse_ldif.c:152 plugins/sudoers/parse_ldif.c:183 -#: plugins/sudoers/parse_ldif.c:252 plugins/sudoers/parse_ldif.c:259 -#: plugins/sudoers/parse_ldif.c:264 plugins/sudoers/parse_ldif.c:340 -#: plugins/sudoers/parse_ldif.c:351 plugins/sudoers/parse_ldif.c:378 -#: plugins/sudoers/parse_ldif.c:395 plugins/sudoers/parse_ldif.c:407 -#: plugins/sudoers/parse_ldif.c:411 plugins/sudoers/parse_ldif.c:425 -#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:623 -#: plugins/sudoers/parse_ldif.c:648 plugins/sudoers/parse_ldif.c:706 -#: plugins/sudoers/parse_ldif.c:723 plugins/sudoers/parse_ldif.c:751 -#: plugins/sudoers/parse_ldif.c:758 plugins/sudoers/policy.c:134 -#: plugins/sudoers/policy.c:143 plugins/sudoers/policy.c:152 -#: plugins/sudoers/policy.c:178 plugins/sudoers/policy.c:315 -#: plugins/sudoers/policy.c:330 plugins/sudoers/policy.c:332 -#: plugins/sudoers/policy.c:361 plugins/sudoers/policy.c:370 -#: plugins/sudoers/policy.c:413 plugins/sudoers/policy.c:423 -#: plugins/sudoers/policy.c:432 plugins/sudoers/policy.c:441 -#: plugins/sudoers/policy.c:521 plugins/sudoers/policy.c:869 -#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:194 -#: plugins/sudoers/pwutil.c:265 plugins/sudoers/pwutil.c:343 -#: plugins/sudoers/pwutil.c:517 plugins/sudoers/pwutil.c:581 -#: plugins/sudoers/pwutil.c:652 plugins/sudoers/pwutil.c:811 -#: plugins/sudoers/pwutil.c:867 plugins/sudoers/pwutil.c:911 -#: plugins/sudoers/pwutil.c:968 plugins/sudoers/set_perms.c:359 -#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061 -#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529 -#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:409 -#: plugins/sudoers/sssd.c:472 plugins/sudoers/sssd.c:516 -#: plugins/sudoers/sssd.c:563 plugins/sudoers/sssd.c:756 -#: plugins/sudoers/stubs.c:103 plugins/sudoers/stubs.c:111 -#: plugins/sudoers/sudoers.c:303 plugins/sudoers/sudoers.c:328 -#: plugins/sudoers/sudoers.c:372 plugins/sudoers/sudoers.c:383 -#: plugins/sudoers/sudoers.c:393 plugins/sudoers/sudoers.c:435 -#: plugins/sudoers/sudoers.c:797 plugins/sudoers/sudoers.c:960 -#: plugins/sudoers/sudoers.c:994 plugins/sudoers/sudoers.c:1298 -#: plugins/sudoers/sudoreplay.c:551 plugins/sudoers/sudoreplay.c:554 -#: plugins/sudoers/sudoreplay.c:1258 plugins/sudoers/sudoreplay.c:1468 -#: plugins/sudoers/sudoreplay.c:1472 plugins/sudoers/testsudoers.c:128 -#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:432 -#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986 -#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104 -#: plugins/sudoers/toke_util.c:128 plugins/sudoers/toke_util.c:157 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145 -#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329 -#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615 -#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008 -#: plugins/sudoers/visudo.c:1127 toke.l:922 toke.l:1042 toke.l:1100 +#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603 +#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105 +#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235 +#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381 +#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706 +#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620 +#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999 +#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165 +#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425 +#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527 +#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448 +#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573 +#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 +#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229 +#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263 +#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 +#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 +#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 +#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395 +#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411 +#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594 +#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648 +#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723 +#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758 +#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183 +#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335 +#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418 +#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437 +#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526 +#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265 +#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517 +#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652 +#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867 +#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968 +#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 +#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 +#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110 +#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300 +#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370 +#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391 +#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794 +#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961 +#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552 +#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 +#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228 +#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587 +#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476 +#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51 +#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128 +#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123 +#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323 +#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439 +#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935 +#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913 +#: toke.l:1033 toke.l:1091 #, c-format msgid "%s: %s" msgstr "%s: %s" +#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463 +#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468 +#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244 +#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571 +#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330 +#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618 +#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748 +#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222 +#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711 +#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161 +#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249 +#: plugins/sudoers/toke_util.c:169 +#, c-format +msgid "internal error, %s overflow" +msgstr "errore interno, overflow di %s" + +#: lib/eventlog/eventlog.c:343 +#, c-format +msgid "unable to dup stdin: %m" +msgstr "impossibile eseguire dup sullo stdin: %m" + +#: lib/eventlog/eventlog.c:388 +#, c-format +msgid "unable to execute %s: %m" +msgstr "impossibile eseguire %s: %m" + +#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198 +msgid "unable to fork" +msgstr "impossibile eseguire fork" + +#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490 +#, c-format +msgid "unable to fork: %m" +msgstr "impossibile eseguire fork: %m" + +#: lib/eventlog/eventlog.c:480 +#, c-format +msgid "unable to open pipe: %m" +msgstr "impossibile aprire una pipe: %m" + +#: lib/eventlog/eventlog.c:894 +#, c-format +msgid "%8s : %s" +msgstr "%8s : %s" + +#: lib/eventlog/eventlog.c:923 +#, c-format +msgid "%8s : (command continued) %s" +msgstr "%8s : (comando continuato) %s" + #: lib/iolog/iolog_fileio.c:155 #, c-format msgid "%s exists but is not a directory (0%o)" @@ -312,132 +370,104 @@ msgid "unable to change mode of %s to 0%o" msgstr "impossibile modificare la modalità di %s a 0%o" -#: lib/iolog/iolog_json.c:113 +#: lib/iolog/iolog_json.c:114 #, c-format msgid "expected JSON_STRING, got %d" msgstr "atteso JSON_STRING, ottenuto %d" -#: lib/iolog/iolog_json.c:326 +#: lib/iolog/iolog_json.c:327 msgid "missing double quote in name" msgstr "virgolette doppie mancanti nel nome" -#: lib/iolog/iolog_json.c:413 +#: lib/iolog/iolog_json.c:414 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "atteso JSON_OBJECT, ottenuto %d" -#: lib/iolog/iolog_json.c:462 lib/iolog/iolog_json.c:465 -#: lib/iolog/iolog_json.c:467 lib/iolog/iolog_json.c:559 -#: logsrvd/eventlog.c:238 plugins/sudoers/cvtsudoers_ldif.c:244 -#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571 -#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330 -#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:571 -#: plugins/sudoers/iolog.c:587 plugins/sudoers/ldap.c:516 -#: plugins/sudoers/ldap.c:747 plugins/sudoers/ldap.c:1080 -#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:90 plugins/sudoers/logging.c:1096 -#: plugins/sudoers/policy.c:551 plugins/sudoers/policy.c:706 -#: plugins/sudoers/policy.c:716 plugins/sudoers/prompt.c:161 -#: plugins/sudoers/sudoers.c:1016 plugins/sudoers/testsudoers.c:249 -#: plugins/sudoers/toke_util.c:169 -#, c-format -msgid "internal error, %s overflow" -msgstr "errore interno, overflow di %s" - -#: lib/iolog/iolog_json.c:628 lib/iolog/iolog_json.c:752 +#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753 msgid "unmatched close brace" msgstr "parentesi graffa di chiusura senza corrispondenza" -#: lib/iolog/iolog_json.c:637 +#: lib/iolog/iolog_json.c:638 msgid "unexpected array" msgstr "array non atteso" -#: lib/iolog/iolog_json.c:650 lib/iolog/iolog_json.c:754 +#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755 msgid "unmatched close bracket" msgstr "parentesi quadra di chiusura senza corrispondenza" -#: lib/iolog/iolog_json.c:658 +#: lib/iolog/iolog_json.c:659 msgid "unexpected string" msgstr "stringa non attesa" -#: lib/iolog/iolog_json.c:668 +#: lib/iolog/iolog_json.c:669 msgid "missing colon after name" msgstr "due punti mancanti dopo il nome" -#: lib/iolog/iolog_json.c:679 lib/iolog/iolog_json.c:694 -#: lib/iolog/iolog_json.c:709 +#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695 +#: lib/iolog/iolog_json.c:710 msgid "unexpected boolean" msgstr "booleano non atteso" -#: lib/iolog/iolog_json.c:725 +#: lib/iolog/iolog_json.c:726 msgid "unexpected number" msgstr "numero non atteso" -#: lib/iolog/iolog_json.c:762 +#: lib/iolog/iolog_json.c:763 #, c-format msgid "%s:%u unable to parse \"%s\"" msgstr "%s:%u impossibile analizzare \"%s\"" -#: lib/iolog/iolog_util.c:70 +#: lib/iolog/iolog_util.c:71 #, c-format msgid "%s: invalid log file" msgstr "%s: file di registro non valido" -#: lib/iolog/iolog_util.c:88 +#: lib/iolog/iolog_util.c:89 #, c-format msgid "%s: time stamp field is missing" msgstr "%s: manca il campo della marcatura temporale" -#: lib/iolog/iolog_util.c:94 +#: lib/iolog/iolog_util.c:95 #, c-format msgid "%s: time stamp %s: %s" msgstr "%s: marcatura temporale %s: %s" -#: lib/iolog/iolog_util.c:101 +#: lib/iolog/iolog_util.c:102 #, c-format msgid "%s: user field is missing" msgstr "%s: manca il campo utente" -#: lib/iolog/iolog_util.c:110 +#: lib/iolog/iolog_util.c:111 #, c-format msgid "%s: runas user field is missing" msgstr "%s: manca il campo utente di runas" -#: lib/iolog/iolog_util.c:119 +#: lib/iolog/iolog_util.c:120 #, c-format msgid "%s: runas group field is missing" msgstr "%s: manca il campo gruppo di runas" -#: lib/iolog/iolog_util.c:418 +#: lib/iolog/iolog_util.c:419 #, c-format msgid "error reading timing file: %s" msgstr "errore nel leggere il file di timing: %s" -#: lib/iolog/iolog_util.c:425 +#: lib/iolog/iolog_util.c:426 #, c-format msgid "invalid timing file line: %s" msgstr "riga di timing del file non valida: %s" -#: logsrvd/eventlog.c:440 plugins/sudoers/logging.c:111 -#, c-format -msgid "%8s : %s" -msgstr "%8s : %s" - -#: logsrvd/eventlog.c:469 plugins/sudoers/logging.c:135 -#, c-format -msgid "%8s : (command continued) %s" -msgstr "%8s : (comando continuato) %s" - -#: logsrvd/iolog_writer.c:977 +#: logsrvd/iolog_writer.c:919 msgid "log is already complete, cannot be restarted" msgstr "il registro è già completo, non può essere riavviato" -#: logsrvd/iolog_writer.c:1008 +#: logsrvd/iolog_writer.c:950 msgid "unable to restart log" msgstr "impossibile riavviare il registro" #: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 -#: plugins/sudoers/sudoreplay.c:351 plugins/sudoers/sudoreplay.c:357 +#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 #, c-format msgid "unable to open %s/%s" msgstr "impossibile aprire %s/%s" @@ -457,147 +487,155 @@ msgid "unable to find resume point [%lld, %ld] in %s/%s" msgstr "impossibile trovare il punto di ripristino [%lld, %ld] in %s/%s" -#: logsrvd/logsrvd.c:230 logsrvd/logsrvd.c:299 logsrvd/logsrvd.c:343 -#: logsrvd/logsrvd.c:398 logsrvd/logsrvd.c:445 logsrvd/logsrvd.c:496 -#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:560 +#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394 +#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568 +#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632 msgid "state machine error" msgstr "errore della macchina di stato" -#: logsrvd/logsrvd.c:239 +#: logsrvd/logsrvd.c:299 msgid "invalid AcceptMessage" -msgstr "AcceoptMessage non valido" +msgstr "AcceptMessage non valido" -#: logsrvd/logsrvd.c:250 +#: logsrvd/logsrvd.c:307 msgid "error parsing AcceptMessage" msgstr "errore nell'analizzare AcceptMessage" -#: logsrvd/logsrvd.c:257 +#: logsrvd/logsrvd.c:314 msgid "error creating I/O log" msgstr "errore nel creare il registro I/O" -#: logsrvd/logsrvd.c:265 +#: logsrvd/logsrvd.c:321 msgid "error logging accept event" msgstr "errore nel registrare l'evento accept" -#: logsrvd/logsrvd.c:308 +#: logsrvd/logsrvd.c:362 msgid "invalid RejectMessage" msgstr "RejectMessage non valido" -#: logsrvd/logsrvd.c:319 +#: logsrvd/logsrvd.c:370 msgid "error parsing RejectMessage" msgstr "errore nell'analizzare RejectMessage" -#: logsrvd/logsrvd.c:325 +#: logsrvd/logsrvd.c:376 msgid "error logging reject event" msgstr "errore nel registrare l'evento reject" -#: logsrvd/logsrvd.c:430 +#: logsrvd/logsrvd.c:486 +msgid "invalid AlertMessage" +msgstr "AlertMessage non valido" + +#: logsrvd/logsrvd.c:494 +msgid "error parsing AlertMessage" +msgstr "errore nell'analizzare AlertMessage" + +#: logsrvd/logsrvd.c:502 msgid "error logging alert event" msgstr "errore nel registrare l'evento alert" -#: logsrvd/logsrvd.c:451 logsrvd/logsrvd.c:502 logsrvd/logsrvd.c:534 +#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606 msgid "protocol error" msgstr "errore di protocollo" -#: logsrvd/logsrvd.c:461 +#: logsrvd/logsrvd.c:533 msgid "error writing IoBuffer" msgstr "errore nello scrivere IoBuffer" -#: logsrvd/logsrvd.c:513 +#: logsrvd/logsrvd.c:585 msgid "error writing ChangeWindowSize" msgstr "errore nello scrivere ChangeWindowSize" -#: logsrvd/logsrvd.c:545 +#: logsrvd/logsrvd.c:617 msgid "error writing CommandSuspend" msgstr "errore nello scrivere CommandSuspend" -#: logsrvd/logsrvd.c:630 +#: logsrvd/logsrvd.c:702 msgid "unrecognized ClientMessage type" msgstr "tipo di ClientMessage non riconosciuto" -#: logsrvd/logsrvd.c:895 +#: logsrvd/logsrvd.c:967 msgid "client message too large" msgstr "messaggio client troppo grande" -#: logsrvd/logsrvd.c:1125 logsrvd/logsrvd.c:1133 +#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "impossibile impostare il cifrario per TLS 1.2 a %s: %s" -#: logsrvd/logsrvd.c:1153 logsrvd/logsrvd.c:1161 +#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "impossibile impostare il cifrario per TLS 1.3 a %s: %s" -#: logsrvd/logsrvd.c:1197 +#: logsrvd/logsrvd.c:1269 #, c-format msgid "unable to get TLS server method: %s" msgstr "impossibile ottenere il metodo TLS del server: %s" -#: logsrvd/logsrvd.c:1202 +#: logsrvd/logsrvd.c:1274 #, c-format msgid "unable to create TLS context: %s" msgstr "impossibile creare il contesyo TLS: %s" -#: logsrvd/logsrvd.c:1209 plugins/sudoers/iolog_client.c:236 +#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236 #, c-format msgid "unable to load certificate %s" msgstr "impossibile caricare il certificato %s" -#: logsrvd/logsrvd.c:1222 plugins/sudoers/iolog_client.c:216 +#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "impossibile caricare il bundle CA %s" -#: logsrvd/logsrvd.c:1267 plugins/sudoers/iolog_client.c:249 +#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249 #, c-format msgid "unable to load private key %s" msgstr "impossibile caricare la chiave privata %s" -#: logsrvd/logsrvd.c:1284 logsrvd/logsrvd.c:1293 +#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "impossibile impostare i parametri diffie-hellman: %s" -#: logsrvd/logsrvd.c:1306 +#: logsrvd/logsrvd.c:1378 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "impossibile impostare la versione minima del protocollo a TLS 1.2: %s" -#: logsrvd/logsrvd.c:1491 +#: logsrvd/logsrvd.c:1563 msgid "unable to get remote IP addr" msgstr "impossibile ottenere indirizzo IP remoto" -#: logsrvd/logsrvd.c:1519 plugins/sudoers/iolog_client.c:263 +#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Impossibile allegare dati utenti all'oggetto ssl: %s" -#: logsrvd/logsrvd.c:1527 logsrvd/logsrvd.c:1649 logsrvd/logsrvd.c:1749 -#: logsrvd/sendlog.c:1109 logsrvd/sendlog.c:1465 logsrvd/sendlog.c:1480 -#: logsrvd/sendlog.c:1538 plugins/sudoers/iolog.c:931 -#: plugins/sudoers/iolog.c:1064 plugins/sudoers/iolog.c:1162 -#: plugins/sudoers/iolog_client.c:108 plugins/sudoers/iolog_client.c:324 -#: plugins/sudoers/iolog_client.c:340 plugins/sudoers/iolog_client.c:386 -#: plugins/sudoers/iolog_client.c:569 plugins/sudoers/iolog_client.c:576 -#: plugins/sudoers/iolog_client.c:1166 plugins/sudoers/iolog_client.c:1202 -#: plugins/sudoers/iolog_client.c:1210 plugins/sudoers/iolog_client.c:1270 -#: plugins/sudoers/iolog_client.c:1377 plugins/sudoers/iolog_client.c:1493 -#: plugins/sudoers/iolog_client.c:1775 plugins/sudoers/iolog_client.c:1783 -#: plugins/sudoers/sudoreplay.c:511 plugins/sudoers/sudoreplay.c:558 -#: plugins/sudoers/sudoreplay.c:790 plugins/sudoers/sudoreplay.c:902 -#: plugins/sudoers/sudoreplay.c:992 plugins/sudoers/sudoreplay.c:1007 -#: plugins/sudoers/sudoreplay.c:1014 plugins/sudoers/sudoreplay.c:1021 -#: plugins/sudoers/sudoreplay.c:1028 plugins/sudoers/sudoreplay.c:1035 -#: plugins/sudoers/sudoreplay.c:1162 +#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823 +#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496 +#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956 +#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187 +#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 +#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594 +#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376 +#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425 +#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692 +#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015 +#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 +#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 +#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 +#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1163 msgid "unable to add event to queue" msgstr "impossibile aggiungere l'evento alla coda" -#: logsrvd/logsrvd.c:1703 logsrvd/logsrvd.c:1937 +#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011 msgid "unable setup listen socket" msgstr "impossibile impostare il socket di ascolto" -#: logsrvd/logsrvd.c:1843 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124 #, c-format msgid "" "%s - send sudo I/O log to remote server\n" @@ -606,7 +644,7 @@ "%s - Invia registro I/O di sudo a un server remoto\n" "\n" -#: logsrvd/logsrvd.c:1846 +#: logsrvd/logsrvd.c:1920 msgid "" "\n" "Options:\n" @@ -624,78 +662,78 @@ " -R, --random-drop Percentuale di connessioni chiuse\n" " -V, --version Visualizza la versione ed esce\n" -#: logsrvd/logsrvd.c:1898 logsrvd/sendlog.c:1703 +#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719 msgid "Protobuf-C version 1.3 or higher required" msgstr "È richiesto Protobuf-C 1.3 o successivo" -#: logsrvd/logsrvd.c:1916 +#: logsrvd/logsrvd.c:1990 #, c-format msgid "invalid random drop value: %s" msgstr "valore drop casuale non valido: %s" -#: logsrvd/logsrvd.c:1920 logsrvd/sendlog.c:1753 -#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:298 +#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 #: plugins/sudoers/visudo.c:177 #, c-format msgid "%s version %s\n" msgstr "%s versione %s\n" -#: logsrvd/logsrvd_conf.c:393 +#: logsrvd/logsrvd_conf.c:331 msgid "TLS not supported" msgstr "TLS non supportato" -#: logsrvd/logsrvd_conf.c:405 +#: logsrvd/logsrvd_conf.c:343 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:471 logsrvd/logsrvd_conf.c:715 +#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: non è un percorso completo" -#: logsrvd/logsrvd_conf.c:829 +#: logsrvd/logsrvd_conf.c:767 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d \"[\" non corrispondente: %s" -#: logsrvd/logsrvd_conf.c:840 +#: logsrvd/logsrvd_conf.c:778 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s:%d sezione configurazione non valida: %s" -#: logsrvd/logsrvd_conf.c:848 +#: logsrvd/logsrvd_conf.c:786 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d riga di configurazione non valida: %s" -#: logsrvd/logsrvd_conf.c:854 +#: logsrvd/logsrvd_conf.c:792 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d atteso nome di sezione: %s" -#: logsrvd/logsrvd_conf.c:868 +#: logsrvd/logsrvd_conf.c:806 #, c-format msgid "invalid value for %s: %s" msgstr "valore non valido per \"%s\": %s" -#: logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:814 #, c-format msgid "%s:%d unknown key: %s" msgstr "%s:%d chiave sconosciuta: %s" -#: logsrvd/logsrvd_conf.c:1032 +#: logsrvd/logsrvd_conf.c:1003 #, c-format msgid "unknown syslog facility %s" msgstr "strumento syslog %s sconosciuto" -#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1040 -#: logsrvd/logsrvd_conf.c:1044 +#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011 +#: logsrvd/logsrvd_conf.c:1015 #, c-format msgid "unknown syslog priority %s" msgstr "priorità syslog %s sconosciuta" -#: logsrvd/sendlog.c:126 +#: logsrvd/sendlog.c:127 msgid "" "\n" "Options:\n" @@ -730,143 +768,146 @@ " selezionato N volte in parallelo\n" " -V, --version Visualizza la versione ed esce\n" -#: logsrvd/sendlog.c:163 plugins/sudoers/iolog_client.c:432 +#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432 #, c-format msgid "unable to look up %s:%s: %s" msgstr "impossibile cercare %s:%s: %s" -#: logsrvd/sendlog.c:186 +#: logsrvd/sendlog.c:202 msgid "unable to get server IP addr" msgstr "impossibile ottenere indirizzo IP del server" -#: logsrvd/sendlog.c:240 plugins/sudoers/sudoreplay.c:850 +#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851 #, c-format msgid "unable to read %s/%s: %s" msgstr "impossibile leggere %s/%s: %s" -#: logsrvd/sendlog.c:261 plugins/sudoers/iolog_client.c:686 +#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694 #, c-format msgid "client message too large: %zu" msgstr "messaggio client troppo grande: %zu" -#: logsrvd/sendlog.c:794 +#: logsrvd/sendlog.c:810 #, c-format msgid "%s: write buffer already in use" msgstr "%s: buffer di scrittura già in uso" -#: logsrvd/sendlog.c:846 plugins/sudoers/iolog.c:855 -#: plugins/sudoers/iolog.c:924 +#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880 +#: plugins/sudoers/iolog.c:949 #, c-format msgid "unexpected I/O event %d" msgstr "evento I/O %d non atteso" -#: logsrvd/sendlog.c:892 logsrvd/sendlog.c:909 logsrvd/sendlog.c:943 -#: plugins/sudoers/iolog_client.c:1171 plugins/sudoers/iolog_client.c:1241 -#: plugins/sudoers/iolog_client.c:1289 +#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959 +#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386 +#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490 #, c-format msgid "%s: unexpected state %d" msgstr "%s: stato %d non atteso" -#: logsrvd/sendlog.c:915 plugins/sudoers/iolog_client.c:1247 +#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460 msgid "invalid ServerHello" msgstr "ServerHello non valido" -#: logsrvd/sendlog.c:979 plugins/sudoers/iolog_client.c:1333 +#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534 #, c-format msgid "error message received from server: %s" msgstr "messaggio di errore ricevuto dal server: %s" -#: logsrvd/sendlog.c:992 plugins/sudoers/iolog_client.c:1346 +#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547 #, c-format msgid "abort message received from server: %s" msgstr "messaggio di abort ricevuto dal server: %s" -#: logsrvd/sendlog.c:1011 plugins/sudoers/iolog_client.c:1365 +#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566 msgid "unable to unpack ServerMessage" msgstr "impossibile aprire ServerMessage" -#: logsrvd/sendlog.c:1051 plugins/sudoers/iolog_client.c:1398 +#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: valore type_case %d non atteso" -#: logsrvd/sendlog.c:1080 +#: logsrvd/sendlog.c:1096 msgid "timeout reading from server" msgstr "timeout nel leggere dal server" -#: logsrvd/sendlog.c:1158 +#: logsrvd/sendlog.c:1174 msgid "premature EOF" msgstr "EOF prematuro" -#: logsrvd/sendlog.c:1171 plugins/sudoers/iolog_client.c:1552 +#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751 #, c-format msgid "server message too large: %u" msgstr "messaggio server troppo grande: %u" -#: logsrvd/sendlog.c:1222 +#: logsrvd/sendlog.c:1238 msgid "timeout writing to server" msgstr "timeout nello scrivere sul server" -#: logsrvd/sendlog.c:1441 plugins/sudoers/iolog_client.c:296 +#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296 msgid "TLS handshake timeout occurred" msgstr "timeout handshake TLS" -#: logsrvd/sendlog.c:1460 logsrvd/sendlog.c:1475 -#: plugins/sudoers/iolog_client.c:318 plugins/sudoers/iolog_client.c:334 +#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491 +#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 msgid "unable to set event" msgstr "impossibile impostare evento" -#: logsrvd/sendlog.c:1485 logsrvd/sendlog.c:1489 +#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505 #, c-format msgid "TLS connection failed: %s" msgstr "Connessione TLS non riuscita: %s" -#: logsrvd/sendlog.c:1522 +#: logsrvd/sendlog.c:1538 #, c-format msgid "Unable to initialize ssl context: %s" msgstr "Impossibile inizializzare il conteso ssl: %s" -#: logsrvd/sendlog.c:1527 plugins/sudoers/iolog_client.c:258 +#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "Impossibile allocare l'oggetto ssl: %s" -#: logsrvd/sendlog.c:1532 +#: logsrvd/sendlog.c:1548 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "Impossibile collegare il socket all'oggetto ssl: %s" -#: logsrvd/sendlog.c:1776 +#: logsrvd/sendlog.c:1792 msgid "both restart point and iolog ID must be specified" msgstr "devono essere specificati sia il punto di inizio che l'ID di iolog" -#: logsrvd/sendlog.c:1780 +#: logsrvd/sendlog.c:1796 msgid "a restart point may not be set when no I/O is sent" msgstr "un punto di partenza non può essere impostato quando non è inviato alcun I/O" -#: logsrvd/sendlog.c:1855 +#: logsrvd/sendlog.c:1871 #, c-format msgid "exited prematurely with state %d" msgstr "uscito inaspettatamente con stato %d" -#: logsrvd/sendlog.c:1856 +#: logsrvd/sendlog.c:1872 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "tempo trascorso inviato al server [%lld, %ld]" -#: logsrvd/sendlog.c:1858 +#: logsrvd/sendlog.c:1874 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "punto di commit ricevuto dal server [%lld, %ld]" -#: plugins/sudoers/alias.c:144 +#: plugins/sudoers/alias.c:148 #, c-format msgid "Alias \"%s\" already defined" msgstr "Alias \"%s\" già definito" -#: plugins/sudoers/auth/aix_auth.c:198 plugins/sudoers/logging.c:783 -msgid "unable to fork" -msgstr "impossibile eseguire fork" +#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343 +#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002 +#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175 +#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114 +msgid "unable to get time of day" +msgstr "impossibile ottenere l'ora" #: plugins/sudoers/auth/aix_auth.c:277 #, c-format @@ -1095,17 +1136,16 @@ "\n" #: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311 -#: plugins/sudoers/sudoers.c:840 plugins/sudoers/sudoers.c:891 +#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858 #: plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid: %u" msgstr "uid sconosciuto: %u" #: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:117 plugins/sudoers/policy.c:1083 -#: plugins/sudoers/sudoers.c:442 plugins/sudoers/sudoers.c:443 -#: plugins/sudoers/sudoers.c:1340 plugins/sudoers/testsudoers.c:219 -#: plugins/sudoers/testsudoers.c:386 +#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088 +#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307 +#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386 #, c-format msgid "unknown user: %s" msgstr "utente sconosciuto: %s" @@ -1145,7 +1185,7 @@ msgid "%s: input and output files must be different" msgstr "%s: i file di input e output devono essere diversi" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:182 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178 #: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249 #: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926 msgid "unable to initialize sudoers default values" @@ -1178,8 +1218,8 @@ #: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634 #: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872 -#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1086 -#: plugins/sudoers/sudoreplay.c:1434 plugins/sudoers/timestamp.c:441 +#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053 +#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441 #: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922 #, c-format msgid "unable to open %s" @@ -1200,7 +1240,7 @@ msgid "parse error in %s\n" msgstr "errore di analisi in %s\n" -#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1123 +#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124 #: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328 #, c-format msgid "unable to write to %s" @@ -1264,13 +1304,13 @@ #: plugins/sudoers/cvtsudoers_json.c:651 plugins/sudoers/cvtsudoers_json.c:664 #: plugins/sudoers/cvtsudoers_ldif.c:346 plugins/sudoers/cvtsudoers_ldif.c:357 -#: plugins/sudoers/ldap.c:502 +#: plugins/sudoers/ldap.c:503 msgid "unable to get GMT time" msgstr "impossibile ottenere l'ora GMT" #: plugins/sudoers/cvtsudoers_json.c:654 plugins/sudoers/cvtsudoers_json.c:667 #: plugins/sudoers/cvtsudoers_ldif.c:349 plugins/sudoers/cvtsudoers_ldif.c:360 -#: plugins/sudoers/ldap.c:508 +#: plugins/sudoers/ldap.c:509 msgid "unable to format timestamp" msgstr "impossibile formattare la marcatura temporale" @@ -1283,646 +1323,651 @@ msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "la variabile d'ambiente SUDOERS_BASE non è impostata e non è stata specificata l'opzione -b." -#: plugins/sudoers/def_data.c:44 +#: plugins/sudoers/def_data.c:50 #, c-format msgid "Syslog facility if syslog is being used for logging: %s" msgstr "Infrastruttura syslog se syslog viene utilizzato per le registrazioni: %s" -#: plugins/sudoers/def_data.c:48 +#: plugins/sudoers/def_data.c:54 #, c-format msgid "Syslog priority to use when user authenticates successfully: %s" msgstr "Priorità di syslog se l'utente si identifica con successo: %s" -#: plugins/sudoers/def_data.c:52 +#: plugins/sudoers/def_data.c:58 #, c-format msgid "Syslog priority to use when user authenticates unsuccessfully: %s" msgstr "Priorità di syslog se l'utente non si identifica con successo: %s" -#: plugins/sudoers/def_data.c:56 +#: plugins/sudoers/def_data.c:62 msgid "Put OTP prompt on its own line" msgstr "Mette il prompt OTP su una riga a parte" -#: plugins/sudoers/def_data.c:60 +#: plugins/sudoers/def_data.c:66 msgid "Ignore '.' in $PATH" msgstr "Ignora \".\" in $PATH" -#: plugins/sudoers/def_data.c:64 +#: plugins/sudoers/def_data.c:70 msgid "Always send mail when sudo is run" msgstr "Invia sempre una email quando viene eseguito sudo" -#: plugins/sudoers/def_data.c:68 +#: plugins/sudoers/def_data.c:74 msgid "Send mail if user authentication fails" msgstr "Invia una email se l'autenticazione utente non riesce" -#: plugins/sudoers/def_data.c:72 +#: plugins/sudoers/def_data.c:78 msgid "Send mail if the user is not in sudoers" msgstr "Invia una email se l'utente non è tra i sudoers" -#: plugins/sudoers/def_data.c:76 +#: plugins/sudoers/def_data.c:82 msgid "Send mail if the user is not in sudoers for this host" msgstr "Invia una email se l'utente non è tra i sudoers per questo host" -#: plugins/sudoers/def_data.c:80 +#: plugins/sudoers/def_data.c:86 msgid "Send mail if the user is not allowed to run a command" msgstr "Invia una email se l'utente non è abilitato a eseguire un comando" -#: plugins/sudoers/def_data.c:84 +#: plugins/sudoers/def_data.c:90 msgid "Send mail if the user tries to run a command" msgstr "Invia una email se l'utente tenta di eseguire un comando" -#: plugins/sudoers/def_data.c:88 +#: plugins/sudoers/def_data.c:94 msgid "Use a separate timestamp for each user/tty combo" msgstr "Usa una marcatura temporale diversa per ogni combinazione utente/tty" -#: plugins/sudoers/def_data.c:92 +#: plugins/sudoers/def_data.c:98 msgid "Lecture user the first time they run sudo" msgstr "Aiuta gli utenti alla prima esecuzione di sudo" -#: plugins/sudoers/def_data.c:96 +#: plugins/sudoers/def_data.c:102 #, c-format msgid "File containing the sudo lecture: %s" msgstr "File contenente la lezione su sudo: %s" -#: plugins/sudoers/def_data.c:100 +#: plugins/sudoers/def_data.c:106 msgid "Require users to authenticate by default" msgstr "Richiede in modo predefinito l'autenticazione degli utenti" -#: plugins/sudoers/def_data.c:104 +#: plugins/sudoers/def_data.c:110 msgid "Root may run sudo" msgstr "Root può eseguire sudo" -#: plugins/sudoers/def_data.c:108 +#: plugins/sudoers/def_data.c:114 msgid "Log the hostname in the (non-syslog) log file" msgstr "Registra il nome host nel file di registro (non-syslog)" -#: plugins/sudoers/def_data.c:112 +#: plugins/sudoers/def_data.c:118 msgid "Log the year in the (non-syslog) log file" msgstr "Registra l'anno nel file di registro (non-syslog)" -#: plugins/sudoers/def_data.c:116 +#: plugins/sudoers/def_data.c:122 msgid "If sudo is invoked with no arguments, start a shell" msgstr "Se sudo viene lanciato senza alcun argomento, avvia una shell" -#: plugins/sudoers/def_data.c:120 +#: plugins/sudoers/def_data.c:126 msgid "Set $HOME to the target user when starting a shell with -s" msgstr "Imposta $HOME all'utente definito quando viene avviata una shell con -s" -#: plugins/sudoers/def_data.c:124 +#: plugins/sudoers/def_data.c:130 msgid "Always set $HOME to the target user's home directory" msgstr "Imposta sempre $HOME alla directory home dell'utente definito" -#: plugins/sudoers/def_data.c:128 +#: plugins/sudoers/def_data.c:134 msgid "Allow some information gathering to give useful error messages" msgstr "Consente la raccolta di alcune informazioni per dare messaggi di errore utili" -#: plugins/sudoers/def_data.c:132 +#: plugins/sudoers/def_data.c:138 msgid "Require fully-qualified hostnames in the sudoers file" msgstr "Richiede nomi host completi nel file sudoers" -#: plugins/sudoers/def_data.c:136 +#: plugins/sudoers/def_data.c:142 msgid "Insult the user when they enter an incorrect password" msgstr "Apostrofa l'utente quando inserisce una password errata" -#: plugins/sudoers/def_data.c:140 +#: plugins/sudoers/def_data.c:146 msgid "Only allow the user to run sudo if they have a tty" msgstr "Consente all'utente di seguire sudo solo se dispone di un tty" -#: plugins/sudoers/def_data.c:144 +#: plugins/sudoers/def_data.c:150 msgid "Visudo will honor the EDITOR environment variable" msgstr "visudo utilizzerà il valore definito nella variabile EDITOR" -#: plugins/sudoers/def_data.c:148 +#: plugins/sudoers/def_data.c:154 msgid "Prompt for root's password, not the users's" msgstr "Chiede la password di root, non quella dell'utente" -#: plugins/sudoers/def_data.c:152 +#: plugins/sudoers/def_data.c:158 msgid "Prompt for the runas_default user's password, not the users's" msgstr "Chiede la password dell'utente runas_default, non quella dell'utente" -#: plugins/sudoers/def_data.c:156 +#: plugins/sudoers/def_data.c:162 msgid "Prompt for the target user's password, not the users's" msgstr "Chiede la password dell'utente definito, non quella dell'invocante" -#: plugins/sudoers/def_data.c:160 +#: plugins/sudoers/def_data.c:166 msgid "Apply defaults in the target user's login class if there is one" msgstr "Applica i Defaults nella classe di login dell'utente definito, se presente" -#: plugins/sudoers/def_data.c:164 +#: plugins/sudoers/def_data.c:170 msgid "Set the LOGNAME and USER environment variables" msgstr "Imposta le variabili d'ambiente LOGNAME e USER" -#: plugins/sudoers/def_data.c:168 +#: plugins/sudoers/def_data.c:174 msgid "Only set the effective uid to the target user, not the real uid" msgstr "Imposta lo uid effettivo all'utente definito, non lo uid reale" -#: plugins/sudoers/def_data.c:172 +#: plugins/sudoers/def_data.c:178 msgid "Don't initialize the group vector to that of the target user" msgstr "Non inizializza il vettore di gruppo con quello dell'utente definito" -#: plugins/sudoers/def_data.c:176 +#: plugins/sudoers/def_data.c:182 #, c-format msgid "Length at which to wrap log file lines (0 for no wrap): %u" msgstr "Lunghezza a cui andare a capo nei file di registro (0 per non andare a capo): %u" -#: plugins/sudoers/def_data.c:180 +#: plugins/sudoers/def_data.c:186 #, c-format msgid "Authentication timestamp timeout: %.1f minutes" msgstr "Timeout marcatura temporale di autenticazione: %.1f minuti" -#: plugins/sudoers/def_data.c:184 +#: plugins/sudoers/def_data.c:190 #, c-format msgid "Password prompt timeout: %.1f minutes" msgstr "Timeout per inserimento password: %.1f minuti" -#: plugins/sudoers/def_data.c:188 +#: plugins/sudoers/def_data.c:194 #, c-format msgid "Number of tries to enter a password: %u" msgstr "Numero di tentativi per l'inserimento della password: %u" -#: plugins/sudoers/def_data.c:192 +#: plugins/sudoers/def_data.c:198 #, c-format msgid "Umask to use or 0777 to use user's: 0%o" msgstr "umask da utilizzare o 0777 per utilizzare quella dell'utente: 0%o" -#: plugins/sudoers/def_data.c:196 +#: plugins/sudoers/def_data.c:202 #, c-format msgid "Path to log file: %s" msgstr "Percorso al file di registro: %s" -#: plugins/sudoers/def_data.c:200 +#: plugins/sudoers/def_data.c:206 #, c-format msgid "Path to mail program: %s" msgstr "Percorso al programma email: %s" -#: plugins/sudoers/def_data.c:204 +#: plugins/sudoers/def_data.c:210 #, c-format msgid "Flags for mail program: %s" msgstr "Flag per il programma email: %s" -#: plugins/sudoers/def_data.c:208 +#: plugins/sudoers/def_data.c:214 #, c-format msgid "Address to send mail to: %s" msgstr "Indirizzo a cui mandare l'email: %s" -#: plugins/sudoers/def_data.c:212 +#: plugins/sudoers/def_data.c:218 #, c-format msgid "Address to send mail from: %s" msgstr "Indirizzo da cui mandare l'email: %s" -#: plugins/sudoers/def_data.c:216 +#: plugins/sudoers/def_data.c:222 #, c-format msgid "Subject line for mail messages: %s" msgstr "Oggetto dell'email: %s" -#: plugins/sudoers/def_data.c:220 +#: plugins/sudoers/def_data.c:226 #, c-format msgid "Incorrect password message: %s" msgstr "Messaggio password errata: %s" -#: plugins/sudoers/def_data.c:224 +#: plugins/sudoers/def_data.c:230 #, c-format msgid "Path to lecture status dir: %s" msgstr "Percorso directory di stato della lezione: %s" -#: plugins/sudoers/def_data.c:228 +#: plugins/sudoers/def_data.c:234 #, c-format msgid "Path to authentication timestamp dir: %s" msgstr "Percorso directory con la marcatura temporale di autenticazione: %s" -#: plugins/sudoers/def_data.c:232 +#: plugins/sudoers/def_data.c:238 #, c-format msgid "Owner of the authentication timestamp dir: %s" msgstr "Proprietario directory con la marcatura temporale di autenticazione: %s" -#: plugins/sudoers/def_data.c:236 +#: plugins/sudoers/def_data.c:242 #, c-format msgid "Users in this group are exempt from password and PATH requirements: %s" msgstr "Agli utenti di questo gruppo non sono richiesti password e PATH: %s" -#: plugins/sudoers/def_data.c:240 +#: plugins/sudoers/def_data.c:246 #, c-format msgid "Default password prompt: %s" msgstr "Prompt predefinito per la password: %s" -#: plugins/sudoers/def_data.c:244 +#: plugins/sudoers/def_data.c:250 msgid "If set, passprompt will override system prompt in all cases." msgstr "Se impostato, passprompt scavalcherà sempre il prompt di sistema." -#: plugins/sudoers/def_data.c:248 +#: plugins/sudoers/def_data.c:254 #, c-format msgid "Default user to run commands as: %s" msgstr "Utente predefinito con cui eseguire i comandi: %s" -#: plugins/sudoers/def_data.c:252 +#: plugins/sudoers/def_data.c:258 #, c-format msgid "Value to override user's $PATH with: %s" msgstr "Valore con cui sovrascrivere la variabile $PATH dell'utente: %s" -#: plugins/sudoers/def_data.c:256 +#: plugins/sudoers/def_data.c:262 #, c-format msgid "Path to the editor for use by visudo: %s" msgstr "Percorso all'editor per visudo: %s" -#: plugins/sudoers/def_data.c:260 +#: plugins/sudoers/def_data.c:266 #, c-format msgid "When to require a password for 'list' pseudocommand: %s" msgstr "Quando richiedere una password per il pseudo-comando \"list\": %s" -#: plugins/sudoers/def_data.c:264 +#: plugins/sudoers/def_data.c:270 #, c-format msgid "When to require a password for 'verify' pseudocommand: %s" msgstr "Quando richiedere una password per il pseudo-comando \"verify\": %s" -#: plugins/sudoers/def_data.c:268 -msgid "Preload the dummy exec functions contained in the sudo_noexec library" -msgstr "Pre-carica le funzioni exec dummy contenute nella libreria sudo_noexec" +#: plugins/sudoers/def_data.c:274 +msgid "Preload the sudo_noexec library which replaces the exec functions" +msgstr "Carica la libreria sudo_noexec che sostituisce le funzioni exec" -#: plugins/sudoers/def_data.c:272 +#: plugins/sudoers/def_data.c:278 msgid "If LDAP directory is up, do we ignore local sudoers file" msgstr "Se LDAP è funzionante, viene ignorato il file sudoers locale" -#: plugins/sudoers/def_data.c:276 +#: plugins/sudoers/def_data.c:282 #, c-format msgid "File descriptors >= %d will be closed before executing a command" msgstr "I descrittori di file >= %d verranno chiusi prima dell'esecuzione di un comando" -#: plugins/sudoers/def_data.c:280 +#: plugins/sudoers/def_data.c:286 msgid "If set, users may override the value of \"closefrom\" with the -C option" msgstr "Se impostata, gli utenti possono sovrascrivere il valore di \"closefrom\" con l'opzione -C" -#: plugins/sudoers/def_data.c:284 +#: plugins/sudoers/def_data.c:290 msgid "Allow users to set arbitrary environment variables" msgstr "Consente agli utenti di impostare variabili d'ambiente" -#: plugins/sudoers/def_data.c:288 +#: plugins/sudoers/def_data.c:294 msgid "Reset the environment to a default set of variables" msgstr "Reimposta l'ambiente con le variabili predefinite" -#: plugins/sudoers/def_data.c:292 -msgid "Environment variables to check for sanity:" -msgstr "Variabile d'ambienti da validare:" +#: plugins/sudoers/def_data.c:298 +msgid "Environment variables to check for safety:" +msgstr "Variabile d'ambienti da verificare per la sicurezza:" -#: plugins/sudoers/def_data.c:296 +#: plugins/sudoers/def_data.c:302 msgid "Environment variables to remove:" msgstr "Variabili d'ambiente da rimuovere:" -#: plugins/sudoers/def_data.c:300 +#: plugins/sudoers/def_data.c:306 msgid "Environment variables to preserve:" msgstr "Variabili d'ambiente da preservare:" -#: plugins/sudoers/def_data.c:304 +#: plugins/sudoers/def_data.c:310 #, c-format msgid "SELinux role to use in the new security context: %s" msgstr "Ruolo SELinux da usare nel nuovo contesto di sicurezza: %s" -#: plugins/sudoers/def_data.c:308 +#: plugins/sudoers/def_data.c:314 #, c-format msgid "SELinux type to use in the new security context: %s" msgstr "Tipologia di SELinux da usare nel nuovo contesto di sicurezza: %s" -#: plugins/sudoers/def_data.c:312 +#: plugins/sudoers/def_data.c:318 #, c-format msgid "Path to the sudo-specific environment file: %s" msgstr "Percorso al file d'ambiente specifico di sudo: %s" -#: plugins/sudoers/def_data.c:316 +#: plugins/sudoers/def_data.c:322 #, c-format msgid "Path to the restricted sudo-specific environment file: %s" msgstr "Percorso al file d'ambiente riservato specifico di sudo: %s" -#: plugins/sudoers/def_data.c:320 +#: plugins/sudoers/def_data.c:326 #, c-format msgid "Locale to use while parsing sudoers: %s" msgstr "Localizzazione da usare durante l'analisi del file sudoers: %s" -#: plugins/sudoers/def_data.c:324 +#: plugins/sudoers/def_data.c:330 msgid "Allow sudo to prompt for a password even if it would be visible" msgstr "Abilita sudo a chiedere una password anche se sarebbe visibile" -#: plugins/sudoers/def_data.c:328 +#: plugins/sudoers/def_data.c:334 msgid "Provide visual feedback at the password prompt when there is user input" msgstr "Fornisce riscontro visibile al prompt della password nel caso di input utente" -#: plugins/sudoers/def_data.c:332 +#: plugins/sudoers/def_data.c:338 msgid "Use faster globbing that is less accurate but does not access the filesystem" msgstr "Usa glob più veloce e meno preciso, ma non accede al file system" -#: plugins/sudoers/def_data.c:336 +#: plugins/sudoers/def_data.c:342 msgid "The umask specified in sudoers will override the user's, even if it is more permissive" msgstr "La umask definita in sudoers scavalca quella dell'utente, anche se è più permissiva" -#: plugins/sudoers/def_data.c:340 +#: plugins/sudoers/def_data.c:346 msgid "Log user's input for the command being run" msgstr "Registra l'input dell'utente per il comando in esecuzione" -#: plugins/sudoers/def_data.c:344 +#: plugins/sudoers/def_data.c:350 msgid "Log the output of the command being run" msgstr "Registra l'output del comando in esecuzione" -#: plugins/sudoers/def_data.c:348 +#: plugins/sudoers/def_data.c:354 msgid "Compress I/O logs using zlib" msgstr "Comprime i registri utilizzando zlib" -#: plugins/sudoers/def_data.c:352 +#: plugins/sudoers/def_data.c:358 msgid "Always run commands in a pseudo-tty" msgstr "Esegue sempre i comandi in uno pseudo-tty" -#: plugins/sudoers/def_data.c:356 +#: plugins/sudoers/def_data.c:362 #, c-format msgid "Plugin for non-Unix group support: %s" msgstr "Plugin per supporto ai gruppi non-Unix: %s" -#: plugins/sudoers/def_data.c:360 +#: plugins/sudoers/def_data.c:366 #, c-format msgid "Directory in which to store input/output logs: %s" msgstr "Directory in cui salvare i registri di I/O: %s" -#: plugins/sudoers/def_data.c:364 +#: plugins/sudoers/def_data.c:370 #, c-format msgid "File in which to store the input/output log: %s" msgstr "File in cui salvare il registro I/O: %s" -#: plugins/sudoers/def_data.c:368 +#: plugins/sudoers/def_data.c:374 msgid "Add an entry to the utmp/utmpx file when allocating a pty" msgstr "Aggiunge una voce al file utmp/utmpx quando viene allocato un pty" -#: plugins/sudoers/def_data.c:372 +#: plugins/sudoers/def_data.c:378 msgid "Set the user in utmp to the runas user, not the invoking user" msgstr "Imposta l'utente in utmp all'utente runas, non l'utente invocante" -#: plugins/sudoers/def_data.c:376 +#: plugins/sudoers/def_data.c:382 #, c-format msgid "Set of permitted privileges: %s" msgstr "Insieme di privilegi concessi: %s" -#: plugins/sudoers/def_data.c:380 +#: plugins/sudoers/def_data.c:386 #, c-format msgid "Set of limit privileges: %s" msgstr "Insieme di privilegi non concessi: %s" -#: plugins/sudoers/def_data.c:384 +#: plugins/sudoers/def_data.c:390 msgid "Run commands on a pty in the background" msgstr "Esegue i comandi in un pty in background" -#: plugins/sudoers/def_data.c:388 +#: plugins/sudoers/def_data.c:394 #, c-format msgid "PAM service name to use: %s" msgstr "Nome del servizio PAM da usare: %s" -#: plugins/sudoers/def_data.c:392 +#: plugins/sudoers/def_data.c:398 #, c-format msgid "PAM service name to use for login shells: %s" msgstr "Nome del servizio PAM da usare per le shell di login: %s" -#: plugins/sudoers/def_data.c:396 +#: plugins/sudoers/def_data.c:402 msgid "Attempt to establish PAM credentials for the target user" msgstr "Tentativo di stabilire le credenziali PAM per l'utente finale" -#: plugins/sudoers/def_data.c:400 +#: plugins/sudoers/def_data.c:406 msgid "Create a new PAM session for the command to run in" msgstr "Crea una nuova sessione PAM in cui eseguire il comando" -#: plugins/sudoers/def_data.c:404 +#: plugins/sudoers/def_data.c:410 msgid "Perform PAM account validation management" msgstr "Esegue la gestione della convalida dell'account PAM" -#: plugins/sudoers/def_data.c:408 +#: plugins/sudoers/def_data.c:414 #, c-format msgid "Maximum I/O log sequence number: %s" msgstr "Numero massimo di sequenze I/O di registro: %s" -#: plugins/sudoers/def_data.c:412 +#: plugins/sudoers/def_data.c:418 msgid "Enable sudoers netgroup support" msgstr "Abilita support netgroup in sudoers" -#: plugins/sudoers/def_data.c:416 +#: plugins/sudoers/def_data.c:422 msgid "Check parent directories for writability when editing files with sudoedit" msgstr "Controlla le directory superiori per accesso in scrittura durante le modifiche con sudoedit" -#: plugins/sudoers/def_data.c:420 +#: plugins/sudoers/def_data.c:426 msgid "Follow symbolic links when editing files with sudoedit" msgstr "Segue i collegamenti simbolici durante le modifiche con sudoedit" -#: plugins/sudoers/def_data.c:424 +#: plugins/sudoers/def_data.c:430 msgid "Query the group plugin for unknown system groups" msgstr "Interroga il plugin dei gruppi per gruppi di sistema sconosciuti" -#: plugins/sudoers/def_data.c:428 +#: plugins/sudoers/def_data.c:434 msgid "Match netgroups based on the entire tuple: user, host and domain" msgstr "Corrispondenza gruppi di rete con tutti i valori: utente, host e dominio" -#: plugins/sudoers/def_data.c:432 +#: plugins/sudoers/def_data.c:438 msgid "Allow commands to be run even if sudo cannot write to the audit log" msgstr "Consente di eseguire i comandi anche se sudo non può scrivere sul registro di controllo" -#: plugins/sudoers/def_data.c:436 +#: plugins/sudoers/def_data.c:442 msgid "Allow commands to be run even if sudo cannot write to the I/O log" msgstr "Consente di eseguire i comandi anche se sudo non può scrivere sul registro di I/O" -#: plugins/sudoers/def_data.c:440 +#: plugins/sudoers/def_data.c:446 msgid "Allow commands to be run even if sudo cannot write to the log file" msgstr "Consente di eseguire i comandi anche se sudo non può scrivere sul file di registro" -#: plugins/sudoers/def_data.c:444 +#: plugins/sudoers/def_data.c:450 msgid "Resolve groups in sudoers and match on the group ID, not the name" msgstr "Gestisce i gruppi attraverso sudoers ed esegue la corrispondenza sull'ID del gruppo, non sul nome" -#: plugins/sudoers/def_data.c:448 +#: plugins/sudoers/def_data.c:454 #, c-format msgid "Log entries larger than this value will be split into multiple syslog messages: %u" msgstr "Voci di registro più grandi di questo valore vengono divise su più messaggi: %u" -#: plugins/sudoers/def_data.c:452 +#: plugins/sudoers/def_data.c:458 #, c-format msgid "User that will own the I/O log files: %s" msgstr "Utente proprietario dei file di registro di I/O: %s" -#: plugins/sudoers/def_data.c:456 +#: plugins/sudoers/def_data.c:462 #, c-format msgid "Group that will own the I/O log files: %s" msgstr "Gruppo proprietario dei file di registro di I/O: %s" -#: plugins/sudoers/def_data.c:460 +#: plugins/sudoers/def_data.c:466 #, c-format msgid "File mode to use for the I/O log files: 0%o" msgstr "Modalità dei file di registro di I/O: 0%o" -#: plugins/sudoers/def_data.c:464 +#: plugins/sudoers/def_data.c:470 #, c-format msgid "Execute commands by file descriptor instead of by path: %s" msgstr "Esegue comandi in base al descrittore del file e non sul percorso: %s" -#: plugins/sudoers/def_data.c:468 +#: plugins/sudoers/def_data.c:474 msgid "Ignore unknown Defaults entries in sudoers instead of producing a warning" msgstr "Ignora le voci Defaults sconosciute nel file sudoers invece di inviare un avviso" -#: plugins/sudoers/def_data.c:472 +#: plugins/sudoers/def_data.c:478 #, c-format msgid "Time in seconds after which the command will be terminated: %u" msgstr "Tempo in secondi dopo il quale il comando viene terminato: %u" -#: plugins/sudoers/def_data.c:476 +#: plugins/sudoers/def_data.c:482 msgid "Allow the user to specify a timeout on the command line" msgstr "Consente all'utente di specificare un timeout attraverso la riga di comando" -#: plugins/sudoers/def_data.c:480 +#: plugins/sudoers/def_data.c:486 msgid "Flush I/O log data to disk immediately instead of buffering it" msgstr "Scrive immediatamente i dati I/O del registro sul disco invece di tenerli in memoria" -#: plugins/sudoers/def_data.c:484 +#: plugins/sudoers/def_data.c:490 msgid "Include the process ID when logging via syslog" msgstr "Include l'ID del processo quando viene usato syslog" -#: plugins/sudoers/def_data.c:488 +#: plugins/sudoers/def_data.c:494 #, c-format msgid "Type of authentication timestamp record: %s" msgstr "Tipo di marcatura temporale di autenticazione: %s" -#: plugins/sudoers/def_data.c:492 +#: plugins/sudoers/def_data.c:498 #, c-format msgid "Authentication failure message: %s" msgstr "Messaggio di autenticazione non riuscita: %s" -#: plugins/sudoers/def_data.c:496 +#: plugins/sudoers/def_data.c:502 msgid "Ignore case when matching user names" msgstr "Ignora maiuscole/minuscole nella corrispondenza coi nomi utente" -#: plugins/sudoers/def_data.c:500 +#: plugins/sudoers/def_data.c:506 msgid "Ignore case when matching group names" msgstr "Ignora maiuscole/minuscole nella corrispondenza coi gruppi" -#: plugins/sudoers/def_data.c:504 +#: plugins/sudoers/def_data.c:510 msgid "Log when a command is allowed by sudoers" msgstr "Registra quando un comando è consentito da sudoers" -#: plugins/sudoers/def_data.c:508 +#: plugins/sudoers/def_data.c:514 msgid "Log when a command is denied by sudoers" msgstr "Registra quando un comando viene negato da sudoers" -#: plugins/sudoers/def_data.c:512 +#: plugins/sudoers/def_data.c:518 msgid "Sudo log server(s) to connect to with optional port" msgstr "Server di registro per sudo a cui connettersi, con la porta opzionale" -#: plugins/sudoers/def_data.c:516 +#: plugins/sudoers/def_data.c:522 #, c-format msgid "Sudo log server timeout in seconds: %u" msgstr "Timeout server di registro per sudo, in secondi: %u" -#: plugins/sudoers/def_data.c:520 +#: plugins/sudoers/def_data.c:526 msgid "Enable SO_KEEPALIVE socket option on the socket connected to the logserver" msgstr "Abilita l'opzione SO_KEEPALIVE sul socket connesso al server di registro" -#: plugins/sudoers/def_data.c:524 +#: plugins/sudoers/def_data.c:530 #, c-format msgid "Path to the audit server's CA bundle file: %s" msgstr "Percorso al file bundle CA del server di audit: %s" -#: plugins/sudoers/def_data.c:528 +#: plugins/sudoers/def_data.c:534 #, c-format msgid "Path to the sudoers certificate file: %s" msgstr "Percorso al file certificato di sudoers: %s" -#: plugins/sudoers/def_data.c:532 +#: plugins/sudoers/def_data.c:538 #, c-format msgid "Path to the sudoers private key file: %s" msgstr "Percorso al file chiave privata di sudoers: %s" -#: plugins/sudoers/def_data.c:536 +#: plugins/sudoers/def_data.c:542 msgid "Verify that the log server's certificate is valid" msgstr "Verifica che il certificato del server di registro è valido" -#: plugins/sudoers/def_data.c:540 +#: plugins/sudoers/def_data.c:546 msgid "Allow the use of unknown runas user and/or group ID" msgstr "Consente l'uso di ID utente o gruppo sconosciuto per runas" -#: plugins/sudoers/def_data.c:544 +#: plugins/sudoers/def_data.c:550 msgid "Only permit running commands as a user with a valid shell" msgstr "Consente di eseguire i comandi a un utente con una shell valida" -#: plugins/sudoers/def_data.c:548 +#: plugins/sudoers/def_data.c:554 msgid "Set the pam remote user to the user running sudo" msgstr "Imposta l'utente remoto pam all'utente che esegue sudo" -#: plugins/sudoers/def_data.c:552 +#: plugins/sudoers/def_data.c:558 msgid "Set the pam remote host to the local host name" msgstr "Imposta l'host remoto pam al nome host locale" -#: plugins/sudoers/def_data.c:556 +#: plugins/sudoers/def_data.c:562 #, c-format msgid "Working directory to change to before executing the command: %s" msgstr "Directory di lavoro a cui passare prima dell'esecuzione del comando: %s" -#: plugins/sudoers/def_data.c:560 +#: plugins/sudoers/def_data.c:566 #, c-format msgid "Root directory to change to before executing the command: %s" msgstr "Directory root a cui passare prima dell'esecuzione del comando: %s" -#: plugins/sudoers/defaults.c:184 +#: plugins/sudoers/def_data.c:570 #, c-format -msgid "%s:%d: unknown defaults entry \"%s\"" -msgstr "%s:%d: voce Defaults \"%s\" sconosciuta" +msgid "The format of logs to produce: %s" +msgstr "Il formato dei registri da creare: %s" -#: plugins/sudoers/defaults.c:187 +#: plugins/sudoers/defaults.c:185 +#, c-format +msgid "%s:%d:%d: unknown defaults entry \"%s\"" +msgstr "%s:%d:%d: voce Defaults \"%s\" sconosciuta" + +#: plugins/sudoers/defaults.c:188 #, c-format msgid "%s: unknown defaults entry \"%s\"" msgstr "%s: voce Defaults \"%s\" sconosciuta" -#: plugins/sudoers/defaults.c:233 +#: plugins/sudoers/defaults.c:234 #, c-format -msgid "%s:%d: no value specified for \"%s\"" -msgstr "%s:%d: nessun valore specificato per \"%s\"" +msgid "%s:%d:%d: no value specified for \"%s\"" +msgstr "%s:%d:%d: nessun valore specificato per \"%s\"" -#: plugins/sudoers/defaults.c:236 +#: plugins/sudoers/defaults.c:237 #, c-format msgid "%s: no value specified for \"%s\"" msgstr "%s: nessun valore specificato per \"%s\"" -#: plugins/sudoers/defaults.c:274 +#: plugins/sudoers/defaults.c:275 #, c-format -msgid "%s:%d: option \"%s\" does not take a value" -msgstr "%s:%d: l'opzione \"%s\" non accetta un valore" +msgid "%s:%d:%d: option \"%s\" does not take a value" +msgstr "%s:%d:%d: l'opzione \"%s\" non accetta un valore" -#: plugins/sudoers/defaults.c:277 +#: plugins/sudoers/defaults.c:278 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s: l'opzione \"%s\" non accetta un valore" -#: plugins/sudoers/defaults.c:302 +#: plugins/sudoers/defaults.c:303 #, c-format -msgid "%s:%d: invalid Defaults type 0x%x for option \"%s\"" -msgstr "%s:%d: tipo Defaults 0x%x non valido per l'opzione \"%s\"" +msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" +msgstr "%s:%d:%d: tipo Defaults 0x%x non valido per l'opzione \"%s\"" -#: plugins/sudoers/defaults.c:305 +#: plugins/sudoers/defaults.c:306 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s: tipo Defaults 0x%x non valido per l'opzione \"%s\"" -#: plugins/sudoers/defaults.c:315 +#: plugins/sudoers/defaults.c:316 #, c-format -msgid "%s:%d: value \"%s\" is invalid for option \"%s\"" -msgstr "%s:%d: il valore \"%s\" non è valido per l'opzione \"%s\"" +msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" +msgstr "%s:%d:%d: il valore \"%s\" non è valido per l'opzione \"%s\"" -#: plugins/sudoers/defaults.c:318 +#: plugins/sudoers/defaults.c:319 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s: il valore \"%s\" non è valido per l'opzione \"%s\"" -#: plugins/sudoers/defaults.c:1025 +#: plugins/sudoers/defaults.c:1030 #, c-format -msgid "%s:%d: values for \"%s\" must start with a '/', '~', or '*'" -msgstr "%s:%d: i valori per \"%s\" devono iniziare con un carattere \"/\", \"~\" o \"*\"" +msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" +msgstr "%s:%d:%d: i valori per \"%s\" devono iniziare con un carattere \"/\", \"~\" o \"*\"" -#: plugins/sudoers/defaults.c:1029 +#: plugins/sudoers/defaults.c:1034 #, c-format msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "%s: i valori per \"%s\" devono iniziare con un carattere \"/\", \"~\" o \"*\"" -#: plugins/sudoers/defaults.c:1040 +#: plugins/sudoers/defaults.c:1045 #, c-format -msgid "%s:%d: values for \"%s\" must start with a '/'" -msgstr "%s:%d: i valori per \"%s\" devono iniziare con un carattere \"/\"" +msgid "%s:%d:%d: values for \"%s\" must start with a '/'" +msgstr "%s:%d:%d: i valori per \"%s\" devono iniziare con un carattere \"/\"" -#: plugins/sudoers/defaults.c:1044 +#: plugins/sudoers/defaults.c:1049 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "%s: i valori per \"%s\" devono iniziare con un carattere \"/\"" @@ -1970,7 +2015,7 @@ msgid "%s must only be writable by owner" msgstr "%s deve essere scrivibile solo dal proprietario" -#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:571 +#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:569 #, c-format msgid "unable to load %s: %s" msgstr "impossibile caricare %s: %s" @@ -1999,115 +2044,70 @@ msgid "Local IP address and netmask pairs:\n" msgstr "Coppia indirizzo IP locale e maschera di rete:\n" -#: plugins/sudoers/iolog.c:142 plugins/sudoers/sudoers.c:448 -#: plugins/sudoers/sudoers.c:449 plugins/sudoers/sudoers.c:1374 -#: plugins/sudoers/testsudoers.c:410 +#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410 #, c-format msgid "unknown group: %s" msgstr "gruppo sconosciuto: %s" -#: plugins/sudoers/iolog.c:527 plugins/sudoers/iolog.c:817 -#: plugins/sudoers/iolog.c:969 plugins/sudoers/iolog.c:976 -#: plugins/sudoers/iolog.c:1097 plugins/sudoers/iolog.c:1104 -#: plugins/sudoers/iolog.c:1203 plugins/sudoers/iolog.c:1210 +#: plugins/sudoers/iolog.c:622 +msgid "unable to update sequence file" +msgstr "impossibile aggiornare il file sequenza" + +#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841 +#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001 +#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129 +#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235 #, c-format msgid "unable to write to I/O log file: %s" msgstr "impossibile scrivere sul file di registro di I/O: %s" -#: plugins/sudoers/iolog.c:576 -msgid "unable to update sequence file" -msgstr "impossibile aggiornare il file sequenza" - -#: plugins/sudoers/iolog.c:615 +#: plugins/sudoers/iolog.c:661 #, c-format msgid "unable to create %s/%s" msgstr "impossibile creare %s/%s" -#: plugins/sudoers/iolog.c:641 -msgid "unable to connect to log server" -msgstr "impossibile connettersi al server del registro" - -#: plugins/sudoers/iolog.c:861 +#: plugins/sudoers/iolog.c:886 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: errore interno, file registro IO per l'evento %d non aperto" -#: plugins/sudoers/iolog.c:954 plugins/sudoers/iolog.c:1082 -#: plugins/sudoers/iolog.c:1187 plugins/sudoers/timestamp.c:855 +#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107 +#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855 #: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493 #: plugins/sudoers/visudo.c:499 msgid "unable to read the clock" msgstr "impossibile leggere l'orologio" -#: plugins/sudoers/iolog.c:1179 plugins/sudoers/iolog_client.c:993 +#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: errore interno, segnale %d non valido" -#: plugins/sudoers/iolog_client.c:112 plugins/sudoers/iolog_client.c:391 -#: plugins/sudoers/iolog_client.c:1216 plugins/sudoers/iolog_client.c:1791 -msgid "error in event loop" -msgstr "errore nel ciclo dell'evento" - -#: plugins/sudoers/iolog_client.c:193 -#, c-format -msgid "Creation of new SSL_CTX object failed: %s" -msgstr "Creazione di un nuovo oggetto SSL_CTX non riuscita: %s" - -#: plugins/sudoers/iolog_client.c:345 plugins/sudoers/iolog_client.c:350 -#, c-format -msgid "TLS connection to %s:%s failed: %s" -msgstr "Connessione TLS a %s:%s non riuscita: %s" - -#: plugins/sudoers/iolog_client.c:495 -msgid "TLS initialization was unsuccessful" -msgstr "inizializzazione TLS non riuscita" - -#: plugins/sudoers/iolog_client.c:504 -msgid "TLS handshake was unsuccessful" -msgstr "handshake TLS non riuscito" - -#: plugins/sudoers/iolog_client.c:769 plugins/sudoers/iolog_client.c:975 -msgid "unable to get time of day" -msgstr "impossibile ottenere l'ora" - -#: plugins/sudoers/iolog_client.c:1002 -#, c-format -msgid "%s: internal error, invalid exit status %d" -msgstr "%s: errore interno, stato di uscita %d non valido" - -#: plugins/sudoers/iolog_client.c:1539 -msgid "lost connection to log server" -msgstr "connessione al server del registro persa" - -#: plugins/sudoers/iolog_client.c:1616 -msgid "missing write buffer" -msgstr "manca il buffer in scrittura" - -#: plugins/sudoers/ldap.c:176 plugins/sudoers/ldap_conf.c:291 +#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:291 msgid "starttls not supported when using ldaps" msgstr "starttls non supportato quando viene utilizzato ldaps" -#: plugins/sudoers/ldap.c:247 +#: plugins/sudoers/ldap.c:248 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "impossibile inizializzare il certificato SSL e il database delle chiavi: %s" -#: plugins/sudoers/ldap.c:250 +#: plugins/sudoers/ldap.c:251 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "è necessario impostare TLS_CERT in %s per usare SSL" -#: plugins/sudoers/ldap.c:1658 +#: plugins/sudoers/ldap.c:1660 #, c-format msgid "unable to initialize LDAP: %s" msgstr "impossibile inizializzare LDAP: %s" -#: plugins/sudoers/ldap.c:1695 +#: plugins/sudoers/ldap.c:1697 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "specificato start_tls ma le librerie LDAP non supportano ldap_start_tls_s() o ldap_start_tls_s_np()" -#: plugins/sudoers/ldap.c:1832 plugins/sudoers/parse_ldif.c:744 +#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "attributo sudoOrder non valido: %s" @@ -2126,7 +2126,7 @@ msgid "unable to mix ldap and ldaps URIs" msgstr "impossibile utilizzare URI ldap e ldaps assieme" -#: plugins/sudoers/ldap_util.c:554 plugins/sudoers/ldap_util.c:556 +#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "impossibile convertire sudoOption: %s%s%s" @@ -2139,62 +2139,87 @@ msgid "unable to send audit message" msgstr "impossibile inviare il messaggio di audit" -#: plugins/sudoers/logging.c:166 +#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 +#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023 +msgid "error in event loop" +msgstr "errore nel ciclo dell'evento" + +#: plugins/sudoers/log_client.c:193 #, c-format -msgid "unable to open log file: %s" -msgstr "impossibile aprire il file di registro: %s" +msgid "Creation of new SSL_CTX object failed: %s" +msgstr "Creazione di un nuovo oggetto SSL_CTX non riuscita: %s" -#: plugins/sudoers/logging.c:174 +#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 #, c-format -msgid "unable to lock log file: %s" -msgstr "impossibile impostare il blocco sul file di registro: %s" +msgid "TLS connection to %s:%s failed: %s" +msgstr "Connessione TLS a %s:%s non riuscita: %s" + +#: plugins/sudoers/log_client.c:519 +msgid "TLS initialization was unsuccessful" +msgstr "inizializzazione TLS non riuscita" -#: plugins/sudoers/logging.c:207 +#: plugins/sudoers/log_client.c:528 +msgid "TLS handshake was unsuccessful" +msgstr "handshake TLS non riuscito" + +#: plugins/sudoers/log_client.c:1202 #, c-format -msgid "unable to write log file: %s" -msgstr "impossibile scrivere sul file di registro: %s" +msgid "%s: internal error, invalid exit status %d" +msgstr "%s: errore interno, stato di uscita %d non valido" + +#: plugins/sudoers/log_client.c:1738 +msgid "lost connection to log server" +msgstr "connessione al server del registro persa" + +#: plugins/sudoers/log_client.c:1815 +msgid "missing write buffer" +msgstr "manca il buffer in scrittura" + +#: plugins/sudoers/log_client.c:1964 +msgid "unable to connect to log server" +msgstr "impossibile connettersi al server del registro" -#: plugins/sudoers/logging.c:240 +#: plugins/sudoers/logging.c:244 msgid "user NOT in sudoers" msgstr "utente non tra i sudoers" -#: plugins/sudoers/logging.c:242 +#: plugins/sudoers/logging.c:246 msgid "user NOT authorized on host" msgstr "utente non autorizzato sull'host" -#: plugins/sudoers/logging.c:244 +#: plugins/sudoers/logging.c:248 msgid "command not allowed" msgstr "comando non consentito" -#: plugins/sudoers/logging.c:287 +#: plugins/sudoers/logging.c:269 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s non è nel file sudoers. Questo evento verrà segnalato.\n" -#: plugins/sudoers/logging.c:290 +#: plugins/sudoers/logging.c:272 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "A %s non è consentito eseguire sudo su %s. Questo evento verrà segnalato.\n" -#: plugins/sudoers/logging.c:294 +#: plugins/sudoers/logging.c:276 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "L'utente %s non può eseguire sudo su %s.\n" -#: plugins/sudoers/logging.c:297 +#: plugins/sudoers/logging.c:279 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "All'utente %s non è consentito eseguire \"%s%s%s\" come %s%s%s su %s.\n" -#: plugins/sudoers/logging.c:334 plugins/sudoers/sudoers.c:587 -#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:591 -#: plugins/sudoers/sudoers.c:593 plugins/sudoers/sudoers.c:742 -#: plugins/sudoers/sudoers.c:744 +#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583 +#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587 +#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739 +#: plugins/sudoers/sudoers.c:741 #, c-format msgid "%s: command not found" msgstr "%s: comando non trovato" -#: plugins/sudoers/logging.c:336 plugins/sudoers/sudoers.c:583 +#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2203,42 +2228,32 @@ "viene ignorato \"%s\" trovato in \".\"\n" "Usare \"sudo ./%s\" per eseguire \"%s\"." -#: plugins/sudoers/logging.c:353 -msgid "authentication failure" -msgstr "autenticazione non riuscita" - -#: plugins/sudoers/logging.c:379 -msgid "a password is required" -msgstr "è necessaria una password" - -#: plugins/sudoers/logging.c:449 +#: plugins/sudoers/logging.c:337 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "%u tentativo di immissione password non corretto" msgstr[1] "%u tentativi di immissione password non corretti" -#: plugins/sudoers/logging.c:713 -#, c-format -msgid "unable to dup stdin: %m" -msgstr "impossibile eseguire dup sullo stdin: %m" +#: plugins/sudoers/logging.c:393 +msgid "authentication failure" +msgstr "autenticazione non riuscita" -#: plugins/sudoers/logging.c:750 -#, c-format -msgid "unable to execute %s: %m" -msgstr "impossibile eseguire %s: %m" +#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +msgid "a password is required" +msgstr "è necessaria una password" -#: plugins/sudoers/logging.c:791 plugins/sudoers/logging.c:847 +#: plugins/sudoers/logging.c:729 #, c-format -msgid "unable to fork: %m" -msgstr "impossibile eseguire fork: %m" +msgid "unable to open log file: %s" +msgstr "impossibile aprire il file di registro: %s" -#: plugins/sudoers/logging.c:837 +#: plugins/sudoers/logging.c:762 #, c-format -msgid "unable to open pipe: %m" -msgstr "impossibile aprire una pipe: %m" +msgid "unable to write log file: %s" +msgstr "impossibile scrivere sul file di registro: %s" -#: plugins/sudoers/match_digest.c:116 +#: plugins/sudoers/match_digest.c:129 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "il digest per %s (%s) non è nella forma %s" @@ -2311,53 +2326,53 @@ msgid "invalid %.*s set by sudo front-end" msgstr "%.*s non valido impostato dal front-end sudo" -#: plugins/sudoers/policy.c:305 plugins/sudoers/testsudoers.c:272 +#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272 msgid "unable to parse network address list" msgstr "impossibile analizzare l'elenco degli indirizzi di rete" -#: plugins/sudoers/policy.c:450 +#: plugins/sudoers/policy.c:455 msgid "user name not set by sudo front-end" msgstr "nome utente non impostato dal front-end sudo" -#: plugins/sudoers/policy.c:454 +#: plugins/sudoers/policy.c:459 msgid "user-ID not set by sudo front-end" msgstr "ID utente non impostato dal front-end sudo" -#: plugins/sudoers/policy.c:458 +#: plugins/sudoers/policy.c:463 msgid "group-ID not set by sudo front-end" msgstr "ID gruppo non impostato dal front-end sudo" -#: plugins/sudoers/policy.c:462 +#: plugins/sudoers/policy.c:467 msgid "host name not set by sudo front-end" msgstr "nome dell'host non impostato dal front-end sudo" -#: plugins/sudoers/policy.c:638 +#: plugins/sudoers/policy.c:643 #, c-format msgid "invalid working directory: %s" msgstr "directory di lavoro non valida: %s" -#: plugins/sudoers/policy.c:806 +#: plugins/sudoers/policy.c:811 #, c-format msgid "invalid chroot directory: %s" msgstr "directory chroot non valida: %s" -#: plugins/sudoers/policy.c:942 plugins/sudoers/visudo.c:231 +#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231 #: plugins/sudoers/visudo.c:860 #, c-format msgid "unable to execute %s" msgstr "impossibile eseguire %s" -#: plugins/sudoers/policy.c:1106 +#: plugins/sudoers/policy.c:1111 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Versione %s del plugin della politica sudoers\n" -#: plugins/sudoers/policy.c:1108 +#: plugins/sudoers/policy.c:1113 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Versione %d della grammatica del file sudoers\n" -#: plugins/sudoers/policy.c:1112 +#: plugins/sudoers/policy.c:1117 #, c-format msgid "" "\n" @@ -2366,22 +2381,22 @@ "\n" "Percorso sudoers: %s\n" -#: plugins/sudoers/policy.c:1115 +#: plugins/sudoers/policy.c:1120 #, c-format msgid "nsswitch path: %s\n" msgstr "percorso nsswitch: %s\n" -#: plugins/sudoers/policy.c:1117 +#: plugins/sudoers/policy.c:1122 #, c-format msgid "ldap.conf path: %s\n" msgstr "percorso ldap.conf: %s\n" -#: plugins/sudoers/policy.c:1118 +#: plugins/sudoers/policy.c:1123 #, c-format msgid "ldap.secret path: %s\n" msgstr "percorso ldap.secret: %s\n" -#: plugins/sudoers/policy.c:1151 +#: plugins/sudoers/policy.c:1156 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "impossibile registrare un hook di tipo %d (versione %d.%d)" @@ -2509,259 +2524,259 @@ msgid "truncated audit path argv[0]: %s" msgstr "percorso audit argv[0] troncato: %s" -#: plugins/sudoers/sssd.c:574 +#: plugins/sudoers/sssd.c:572 msgid "unable to initialize SSS source. Is SSSD installed on your machine?" msgstr "impossibile inizializzare la sorgente SSS. È stato installato SSSD?" -#: plugins/sudoers/sssd.c:582 plugins/sudoers/sssd.c:591 -#: plugins/sudoers/sssd.c:600 plugins/sudoers/sssd.c:609 -#: plugins/sudoers/sssd.c:618 +#: plugins/sudoers/sssd.c:580 plugins/sudoers/sssd.c:589 +#: plugins/sudoers/sssd.c:598 plugins/sudoers/sssd.c:607 +#: plugins/sudoers/sssd.c:616 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "impossibile trovare il simbolo \"%s\" in %s" -#: plugins/sudoers/sudoers.c:218 plugins/sudoers/sudoers.c:1043 +#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010 msgid "problem with defaults entries" msgstr "problema con le voci Defaults" -#: plugins/sudoers/sudoers.c:222 +#: plugins/sudoers/sudoers.c:218 msgid "no valid sudoers sources found, quitting" msgstr "nessuna sorgente valida di sudoers trovata, uscita" -#: plugins/sudoers/sudoers.c:295 +#: plugins/sudoers/sudoers.c:292 #, c-format msgid "user not allowed to change root directory to %s" msgstr "l'utente non è autorizzato a cambiare la directory root a %s" -#: plugins/sudoers/sudoers.c:297 +#: plugins/sudoers/sudoers.c:294 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "non è consentito l'uso dell'opzione -R con %s" -#: plugins/sudoers/sudoers.c:321 +#: plugins/sudoers/sudoers.c:319 #, c-format msgid "user not allowed to change directory to %s" msgstr "l'utente non è autorizzato a cambiare directory a %s" -#: plugins/sudoers/sudoers.c:322 +#: plugins/sudoers/sudoers.c:320 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "non è consentito l'uso dell'opzione -D con %s" -#: plugins/sudoers/sudoers.c:353 +#: plugins/sudoers/sudoers.c:351 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers indica che a root non è consentito usare sudo" -#: plugins/sudoers/sudoers.c:413 +#: plugins/sudoers/sudoers.c:411 msgid "user not allowed to override closefrom limit" msgstr "l'utente non è autorizzato a scavalcare il limite closefrom" -#: plugins/sudoers/sudoers.c:414 +#: plugins/sudoers/sudoers.c:412 msgid "you are not permitted to use the -C option" msgstr "utente non abilitato all'uso dell'opzione -C" -#: plugins/sudoers/sudoers.c:475 +#: plugins/sudoers/sudoers.c:472 #, c-format msgid "timestamp owner (%s): No such user" msgstr "proprietario marcatura temporale (%s): utente inesistente" -#: plugins/sudoers/sudoers.c:490 +#: plugins/sudoers/sudoers.c:487 msgid "no tty" msgstr "nessun tty" -#: plugins/sudoers/sudoers.c:491 +#: plugins/sudoers/sudoers.c:488 msgid "sorry, you must have a tty to run sudo" msgstr "è necessario disporre di un tty per eseguire sudo" -#: plugins/sudoers/sudoers.c:497 plugins/sudoers/sudoers.c:499 +#: plugins/sudoers/sudoers.c:495 #, c-format msgid "invalid shell for user %s: %s" msgstr "shell utente %s non valida: %s" -#: plugins/sudoers/sudoers.c:582 +#: plugins/sudoers/sudoers.c:578 msgid "command in current directory" msgstr "comando nella directory corrente" -#: plugins/sudoers/sudoers.c:600 +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to set a command timeout" msgstr "l'utente non è autorizzato a impostare un timeout per i comandi" -#: plugins/sudoers/sudoers.c:602 +#: plugins/sudoers/sudoers.c:599 msgid "sorry, you are not allowed set a command timeout" msgstr "non è consentito impostare un timeout per i comandi" -#: plugins/sudoers/sudoers.c:610 +#: plugins/sudoers/sudoers.c:607 msgid "user not allowed to preserve the environment" msgstr "l'utente non è autorizzato a preservare l'ambiente" -#: plugins/sudoers/sudoers.c:612 +#: plugins/sudoers/sudoers.c:609 msgid "sorry, you are not allowed to preserve the environment" msgstr "non è consentito preservare l'ambiente" -#: plugins/sudoers/sudoers.c:978 +#: plugins/sudoers/sudoers.c:945 msgid "command too long" msgstr "comando troppo lungo" -#: plugins/sudoers/sudoers.c:1036 +#: plugins/sudoers/sudoers.c:1003 msgid "sudoedit doesn't need to be run via sudo" msgstr "non è necessario eseguire sudoedit via sudo" -#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/sudoreplay.c:1546 +#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "impossibile leggere %s" -#: plugins/sudoers/sudoers.c:1115 plugins/sudoers/visudo.c:432 +#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432 #: plugins/sudoers/visudo.c:726 #, c-format msgid "unable to stat %s" msgstr "impossibile eseguire stat su %s" -#: plugins/sudoers/sudoers.c:1119 plugins/sudoers/visudo.c:1018 +#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018 #, c-format msgid "%s is not a regular file" msgstr "%s non è un file regolare" -#: plugins/sudoers/sudoers.c:1123 plugins/sudoers/timestamp.c:252 toke.l:1121 +#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s è di proprietà dello uid %u, dovrebbe essere %u" -#: plugins/sudoers/sudoers.c:1127 toke.l:1126 +#: plugins/sudoers/sudoers.c:1094 toke.l:1117 #, c-format msgid "%s is world writable" msgstr "%s è scrivibile da tutti" -#: plugins/sudoers/sudoers.c:1131 toke.l:1129 +#: plugins/sudoers/sudoers.c:1098 toke.l:1120 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s è di proprietà del gid %u, dovrebbe essere %u" -#: plugins/sudoers/sudoers.c:1164 +#: plugins/sudoers/sudoers.c:1131 #, c-format msgid "only root can use \"-c %s\"" msgstr "solo root può usare \"-c %s\"" -#: plugins/sudoers/sudoers.c:1183 +#: plugins/sudoers/sudoers.c:1150 #, c-format msgid "unknown login class: %s" msgstr "classe di login sconosciuta: %s" -#: plugins/sudoers/sudoers.c:1268 plugins/sudoers/sudoers.c:1283 +#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250 #, c-format msgid "unable to resolve host %s" msgstr "impossibile risolvere l'host %s" -#: plugins/sudoers/sudoreplay.c:256 +#: plugins/sudoers/sudoreplay.c:257 #, c-format msgid "invalid filter option: %s" msgstr "opzione di filtro non valida: %s" -#: plugins/sudoers/sudoreplay.c:272 +#: plugins/sudoers/sudoreplay.c:273 #, c-format msgid "invalid max wait: %s" msgstr "attesa massima non valida: %s" -#: plugins/sudoers/sudoreplay.c:295 +#: plugins/sudoers/sudoreplay.c:296 #, c-format msgid "invalid speed factor: %s" msgstr "fattore di velocità non valido: %s" -#: plugins/sudoers/sudoreplay.c:331 +#: plugins/sudoers/sudoreplay.c:332 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:336 +#: plugins/sudoers/sudoreplay.c:337 #, c-format msgid "%s/timing: %s" msgstr "%s/timing: %s" -#: plugins/sudoers/sudoreplay.c:340 +#: plugins/sudoers/sudoreplay.c:341 #, c-format msgid "%s/%s: %s" msgstr "%s/%s: %s" -#: plugins/sudoers/sudoreplay.c:364 +#: plugins/sudoers/sudoreplay.c:365 #, c-format msgid "Replaying sudo session: %s" msgstr "Riproduzione della sessione sudo: %s" -#: plugins/sudoers/sudoreplay.c:626 +#: plugins/sudoers/sudoreplay.c:627 msgid "unable to set tty to raw mode" msgstr "impossibile impostare il terminale in modalità raw" -#: plugins/sudoers/sudoreplay.c:677 +#: plugins/sudoers/sudoreplay.c:678 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "Attenzione: il terminale è troppo piccolo per riprodurre correttamente il registro.\n" -#: plugins/sudoers/sudoreplay.c:678 +#: plugins/sudoers/sudoreplay.c:679 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "La geometria del registro è %dx%d, quella del terminale è %dx%d." -#: plugins/sudoers/sudoreplay.c:706 +#: plugins/sudoers/sudoreplay.c:707 msgid "Replay finished, press any key to restore the terminal." msgstr "Riproduzione terminata. Premere un tasto per ripristinare il terminale." -#: plugins/sudoers/sudoreplay.c:1196 plugins/sudoers/sudoreplay.c:1226 +#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 #, c-format msgid "ambiguous expression \"%s\"" msgstr "espressione \"%s\" ambigua" -#: plugins/sudoers/sudoreplay.c:1248 +#: plugins/sudoers/sudoreplay.c:1249 msgid "unmatched ')' in expression" msgstr "carattere \")\" nell'espressione non corrisposto" -#: plugins/sudoers/sudoreplay.c:1252 +#: plugins/sudoers/sudoreplay.c:1253 #, c-format msgid "unknown search term \"%s\"" msgstr "termine di ricerca \"%s\" sconosciuto" -#: plugins/sudoers/sudoreplay.c:1267 +#: plugins/sudoers/sudoreplay.c:1268 #, c-format msgid "%s requires an argument" msgstr "%s richiede un argomento" -#: plugins/sudoers/sudoreplay.c:1270 plugins/sudoers/sudoreplay.c:1522 +#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 #, c-format msgid "invalid regular expression: %s" msgstr "espressione regolare non valida: %s" -#: plugins/sudoers/sudoreplay.c:1275 +#: plugins/sudoers/sudoreplay.c:1276 #, c-format msgid "could not parse date \"%s\"" msgstr "impossibile analizzare la data \"%s\"" -#: plugins/sudoers/sudoreplay.c:1284 +#: plugins/sudoers/sudoreplay.c:1285 msgid "unmatched '(' in expression" msgstr "carattere \"(\" nell'espressione non corrisposto" -#: plugins/sudoers/sudoreplay.c:1286 +#: plugins/sudoers/sudoreplay.c:1287 msgid "illegal trailing \"or\"" msgstr "\"or\" finale non consentito" -#: plugins/sudoers/sudoreplay.c:1288 +#: plugins/sudoers/sudoreplay.c:1289 msgid "illegal trailing \"!\"" msgstr "carattere \"!\" finale non consentito" -#: plugins/sudoers/sudoreplay.c:1346 +#: plugins/sudoers/sudoreplay.c:1347 #, c-format msgid "unknown search type %d" msgstr "tipo di ricerca %d sconosciuto" -#: plugins/sudoers/sudoreplay.c:1613 +#: plugins/sudoers/sudoreplay.c:1614 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "uso: %s [-hnRS] [-d DIR] [-m NUM] [-s NUM] ID\n" -#: plugins/sudoers/sudoreplay.c:1616 +#: plugins/sudoers/sudoreplay.c:1617 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "uso: %s [-h] [-d DIR] -l [ESPRESSIONE DI RICERCA]\n" -#: plugins/sudoers/sudoreplay.c:1625 +#: plugins/sudoers/sudoreplay.c:1626 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2770,7 +2785,7 @@ "%s - Riproduce i registri di sessione di sudo\n" "\n" -#: plugins/sudoers/sudoreplay.c:1627 +#: plugins/sudoers/sudoreplay.c:1628 msgid "" "\n" "Options:\n" @@ -2991,39 +3006,39 @@ msgid "Edit anyway? [y/N]" msgstr "Modificare comunque? [y/N]" -#: plugins/sudoers/visudo.c:1089 +#: plugins/sudoers/visudo.c:1091 #, c-format -msgid "Error: %s:%d: cycle in %s \"%s\"" -msgstr "Errore: %s:%d: ciclo in %s \"%s\"" +msgid "Error: %s:%d:%d: cycle in %s \"%s\"" +msgstr "Errore: %s:%d:%d: ciclo in %s \"%s\"" -#: plugins/sudoers/visudo.c:1090 +#: plugins/sudoers/visudo.c:1092 #, c-format -msgid "Warning: %s:%d: cycle in %s \"%s\"" -msgstr "Attenzione: %s:%d: ciclo in %s \"%s\"" +msgid "Warning: %s:%d:%d: cycle in %s \"%s\"" +msgstr "Attenzione: %s:%d:%d: ciclo in %s \"%s\"" -#: plugins/sudoers/visudo.c:1094 +#: plugins/sudoers/visudo.c:1096 #, c-format -msgid "Error: %s:%d: %s \"%s\" referenced but not defined" -msgstr "Errore: %1$s:%2$d riferimento a \"%4$s\" %3$s, ma non definito" +msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined" +msgstr "Errore: %1$s:%2$d:%3$d: riferimento a \"%5$s\" %4$s, ma non definito" -#: plugins/sudoers/visudo.c:1095 +#: plugins/sudoers/visudo.c:1097 #, c-format -msgid "Warning: %s:%d: %s \"%s\" referenced but not defined" -msgstr "Attenzione: %1$s:%2$d: riferimento a \"%4$s\" %3$s, ma non definito" +msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined" +msgstr "Attenzione: %1$s:%2$d:%3$d: riferimento a \"%5$s\" %4$s, ma non definito" -#: plugins/sudoers/visudo.c:1186 +#: plugins/sudoers/visudo.c:1188 #, c-format -msgid "Warning: %s:%d: unused %s \"%s\"" -msgstr "Attenzione: %s:%d: inutilizzato %s \"%s\"" +msgid "Warning: %s:%d:%d: unused %s \"%s\"" +msgstr "Attenzione: %s:%d:%d: inutilizzato %s \"%s\"" -#: plugins/sudoers/visudo.c:1301 +#: plugins/sudoers/visudo.c:1303 #, c-format msgid "" "%s - safely edit the sudoers file\n" "\n" msgstr "%s - Modifica in sicurezza il file sudoers\n" -#: plugins/sudoers/visudo.c:1303 +#: plugins/sudoers/visudo.c:1305 msgid "" "\n" "Options:\n" @@ -3043,6 +3058,30 @@ " -s, --strict Verifica precisa della sintassi\n" " -V, --version Visualizza la versione ed esce\n" -#: toke.l:1093 +#: toke.l:179 +msgid "empty string" +msgstr "stringa vuota" + +#: toke.l:189 toke.l:491 +msgid "empty group" +msgstr "gruppo vuoto" + +#: toke.l:197 toke.l:489 +msgid "empty netgroup" +msgstr "netgroup vuoto" + +#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392 +msgid "invalid line continuation" +msgstr "continuazione riga non valida" + +#: toke.l:528 toke.l:540 +msgid "invalid IPv6 address" +msgstr "indirizzo IPv6 non valido" + +#: toke.l:764 +msgid "unexpected line break in string" +msgstr "interruzione riga non attesa nella stringa" + +#: toke.l:1084 msgid "too many levels of includes" msgstr "troppi livelli di inclusioni" Binary files /tmp/iZuZwXTqez/sudo-1.9.4p2/plugins/sudoers/po/ko.mo and /tmp/cZR8a_TUxF/sudo-1.9.5p2/plugins/sudoers/po/ko.mo differ diff -Nru sudo-1.9.4p2/plugins/sudoers/po/ko.po sudo-1.9.5p2/plugins/sudoers/po/ko.po --- sudo-1.9.4p2/plugins/sudoers/po/ko.po 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/po/ko.po 2021-01-09 14:12:16.000000000 -0600 @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.2rc1\n" +"Project-Id-Version: sudoers 1.9.4b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2020-06-24 05:35-0600\n" -"PO-Revision-Date: 2020-07-17 23:15+0900\n" +"POT-Creation-Date: 2020-11-14 06:24-0700\n" +"PO-Revision-Date: 2020-12-11 01:02+0900\n" "Last-Translator: Seong-ho Cho \n" "Language-Team: Korean \n" "Language: ko\n" @@ -19,7 +19,7 @@ "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 2.3.1\n" -#: confstr.sh:1 +#: confstr.sh:1 gram.y:1077 msgid "syntax error" msgstr "문법 오류" @@ -43,70 +43,73 @@ msgid "Sorry, try again." msgstr "죄송합니다만, 다시 시도하십시오." -#: gram.y:203 gram.y:251 gram.y:258 gram.y:265 gram.y:272 gram.y:279 -#: gram.y:295 gram.y:319 gram.y:326 gram.y:333 gram.y:340 gram.y:347 -#: gram.y:410 gram.y:419 gram.y:430 gram.y:463 gram.y:470 gram.y:477 -#: gram.y:484 gram.y:511 gram.y:583 gram.y:590 gram.y:599 gram.y:608 -#: gram.y:625 gram.y:737 gram.y:744 gram.y:752 gram.y:758 gram.y:858 -#: gram.y:865 gram.y:872 gram.y:879 gram.y:886 gram.y:912 gram.y:919 -#: gram.y:926 gram.y:1068 gram.y:1347 lib/iolog/iolog_fileio.c:1101 -#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:283 -#: lib/iolog/iolog_json.c:313 lib/iolog/iolog_json.c:435 -#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115 -#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133 -#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196 -#: logsrvd/eventlog.c:223 logsrvd/sendlog.c:443 plugins/sudoers/alias.c:125 -#: plugins/sudoers/alias.c:132 plugins/sudoers/alias.c:148 -#: plugins/sudoers/audit.c:108 plugins/sudoers/audit.c:212 -#: plugins/sudoers/auth/bsdauth.c:143 plugins/sudoers/auth/kerb5.c:118 -#: plugins/sudoers/auth/kerb5.c:144 plugins/sudoers/auth/pam.c:669 -#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 -#: plugins/sudoers/cvtsudoers.c:120 plugins/sudoers/cvtsudoers.c:161 -#: plugins/sudoers/cvtsudoers.c:178 plugins/sudoers/cvtsudoers.c:189 -#: plugins/sudoers/cvtsudoers.c:301 plugins/sudoers/cvtsudoers.c:429 -#: plugins/sudoers/cvtsudoers.c:562 plugins/sudoers/cvtsudoers.c:579 -#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/cvtsudoers.c:757 -#: plugins/sudoers/cvtsudoers.c:765 plugins/sudoers/cvtsudoers.c:1179 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285 -#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 -#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 -#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:426 plugins/sudoers/cvtsudoers_ldif.c:434 -#: plugins/sudoers/cvtsudoers_ldif.c:451 plugins/sudoers/cvtsudoers_ldif.c:460 -#: plugins/sudoers/cvtsudoers_ldif.c:607 plugins/sudoers/defaults.c:626 -#: plugins/sudoers/defaults.c:919 plugins/sudoers/defaults.c:1052 -#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:84 -#: plugins/sudoers/editor.c:95 plugins/sudoers/env.c:261 +#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314 +#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386 +#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524 +#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679 +#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971 +#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032 +#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280 +#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753 +#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062 +#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120 +#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335 +#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106 +#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125 +#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137 +#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480 +#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134 +#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115 +#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143 +#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 +#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119 +#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177 +#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300 +#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561 +#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641 +#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764 +#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182 +#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76 +#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194 +#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300 +#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421 +#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440 +#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460 +#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615 +#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923 +#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181 +#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92 #: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 #: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:483 -#: plugins/sudoers/iolog_client.c:105 plugins/sudoers/iolog_client.c:382 -#: plugins/sudoers/iolog_client.c:559 plugins/sudoers/iolog_client.c:678 -#: plugins/sudoers/iolog_client.c:696 plugins/sudoers/iolog_client.c:1176 -#: plugins/sudoers/iolog_client.c:1405 plugins/sudoers/iolog_client.c:1723 -#: plugins/sudoers/iolog_client.c:1751 plugins/sudoers/ldap.c:183 -#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431 -#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440 -#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743 -#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279 -#: plugins/sudoers/ldap.c:1706 plugins/sudoers/ldap.c:1743 -#: plugins/sudoers/ldap.c:1824 plugins/sudoers/ldap.c:1959 -#: plugins/sudoers/ldap.c:2060 plugins/sudoers/ldap.c:2076 +#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596 +#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184 +#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 +#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 +#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 +#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 +#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 +#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 +#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 #: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 #: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 #: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 #: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 #: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760 #: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333 -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/linux_audit.c:83 -#: plugins/sudoers/logging.c:103 plugins/sudoers/logging.c:192 -#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545 -#: plugins/sudoers/logging.c:586 plugins/sudoers/logging.c:723 -#: plugins/sudoers/logging.c:1083 plugins/sudoers/match_command.c:243 -#: plugins/sudoers/match_command.c:391 plugins/sudoers/match_command.c:438 -#: plugins/sudoers/match_command.c:509 plugins/sudoers/match_digest.c:80 -#: plugins/sudoers/parse.c:193 plugins/sudoers/parse.c:205 -#: plugins/sudoers/parse.c:220 plugins/sudoers/parse.c:232 +#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84 +#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381 +#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706 +#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620 +#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999 +#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166 +#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446 +#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281 +#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499 +#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213 +#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244 +#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -116,115 +119,138 @@ #: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624 #: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707 #: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752 -#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:491 -#: plugins/sudoers/policy.c:823 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:191 plugins/sudoers/pwutil.c:262 -#: plugins/sudoers/pwutil.c:340 plugins/sudoers/pwutil.c:514 -#: plugins/sudoers/pwutil.c:578 plugins/sudoers/pwutil.c:649 -#: plugins/sudoers/pwutil.c:808 plugins/sudoers/pwutil.c:865 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:967 -#: plugins/sudoers/sssd.c:146 plugins/sudoers/sssd.c:409 -#: plugins/sudoers/sssd.c:472 plugins/sudoers/sssd.c:516 -#: plugins/sudoers/sssd.c:563 plugins/sudoers/sssd.c:755 -#: plugins/sudoers/stubs.c:96 plugins/sudoers/stubs.c:104 -#: plugins/sudoers/sudoers.c:316 plugins/sudoers/sudoers.c:327 -#: plugins/sudoers/sudoers.c:337 plugins/sudoers/sudoers.c:380 -#: plugins/sudoers/sudoers.c:720 plugins/sudoers/sudoers.c:849 -#: plugins/sudoers/sudoers.c:894 plugins/sudoers/sudoers.c:1198 -#: plugins/sudoers/sudoreplay.c:553 plugins/sudoers/sudoreplay.c:556 -#: plugins/sudoers/sudoreplay.c:1260 plugins/sudoers/sudoreplay.c:1470 -#: plugins/sudoers/sudoreplay.c:1474 plugins/sudoers/testsudoers.c:128 +#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526 +#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265 +#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517 +#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652 +#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867 +#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968 +#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407 +#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 +#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 +#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118 +#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326 +#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381 +#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433 +#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927 +#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265 +#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 +#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 +#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128 #: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:432 +#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432 #: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986 #: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104 #: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:146 -#: plugins/sudoers/visudo.c:322 plugins/sudoers/visudo.c:328 -#: plugins/sudoers/visudo.c:438 plugins/sudoers/visudo.c:616 -#: plugins/sudoers/visudo.c:936 plugins/sudoers/visudo.c:1024 -#: plugins/sudoers/visudo.c:1121 toke.l:864 toke.l:981 toke.l:1039 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145 +#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329 +#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615 +#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008 +#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091 msgid "unable to allocate memory" msgstr "메모리를 할당할 수 없습니다" -#: gram.y:505 +#: gram.y:552 msgid "a digest requires a path name" msgstr "다이제스트에 경로 이름이 필요합니다" -#: gram.y:638 +#: gram.y:581 +msgid "values for \"CWD\" must start with a '/', '~', or '*'" +msgstr "%s: \"CWD\" 값은 '/'; '~'; '*' 문자로 시작해야합니다" + +#: gram.y:593 +msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" +msgstr "%s: \"CHROOT\" 값은 '/'; '~'; '*' 문자로 시작해야합니다" + +#: gram.y:715 +#, c-format +msgid "syntax error, reserved word %s used as an alias name" +msgstr "문법 오류. %s 예약어를 별칭으로 썼습니다" + +#: gram.y:735 msgid "invalid notbefore value" msgstr "잘못된 notbefore 값" -#: gram.y:646 +#: gram.y:743 msgid "invalid notafter value" msgstr "잘못된 notafter 값" -#: gram.y:655 plugins/sudoers/policy.c:306 +#: gram.y:752 plugins/sudoers/policy.c:335 msgid "timeout value too large" msgstr "제한 시간 값이 너무 큽니다" -#: gram.y:657 plugins/sudoers/policy.c:308 +#: gram.y:754 plugins/sudoers/policy.c:337 msgid "invalid timeout value" msgstr "잘못된 제한 시간 값" -#: gram.y:1347 lib/iolog/iolog_fileio.c:1101 lib/iolog/iolog_json.c:120 -#: lib/iolog/iolog_json.c:282 lib/iolog/iolog_json.c:313 -#: lib/iolog/iolog_json.c:435 lib/iolog/iolog_json.c:713 -#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115 -#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133 -#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196 -#: logsrvd/eventlog.c:223 logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1221 -#: logsrvd/logsrvd.c:1266 logsrvd/sendlog.c:443 logsrvd/sendlog.c:1302 -#: logsrvd/sendlog.c:1309 logsrvd/sendlog.c:1727 plugins/sudoers/audit.c:108 -#: plugins/sudoers/audit.c:212 plugins/sudoers/auth/pam.c:482 +#: gram.y:1079 +#, c-format +msgid "%s:%d:%d: %s\n" +msgstr "%s:%d:%d: %s\n" + +#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753 +#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816 +#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998 +#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304 +#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457 +#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106 +#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125 +#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137 +#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293 +#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321 +#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115 +#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482 #: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/cvtsudoers.c:120 plugins/sudoers/cvtsudoers.c:160 -#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 -#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428 -#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578 -#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/cvtsudoers.c:757 -#: plugins/sudoers/cvtsudoers.c:764 plugins/sudoers/cvtsudoers.c:1179 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756 +#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178 +#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284 #: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 #: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 #: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 -#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 -#: plugins/sudoers/cvtsudoers_ldif.c:450 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:606 plugins/sudoers/defaults.c:626 -#: plugins/sudoers/defaults.c:919 plugins/sudoers/defaults.c:1052 -#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:84 -#: plugins/sudoers/editor.c:95 plugins/sudoers/env.c:261 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:483 -#: plugins/sudoers/iolog_client.c:105 plugins/sudoers/iolog_client.c:215 -#: plugins/sudoers/iolog_client.c:236 plugins/sudoers/iolog_client.c:249 -#: plugins/sudoers/iolog_client.c:382 plugins/sudoers/iolog_client.c:678 -#: plugins/sudoers/iolog_client.c:696 plugins/sudoers/iolog_client.c:1176 -#: plugins/sudoers/iolog_client.c:1405 plugins/sudoers/iolog_client.c:1723 -#: plugins/sudoers/iolog_client.c:1751 plugins/sudoers/ldap.c:183 -#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431 -#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440 -#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743 -#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279 -#: plugins/sudoers/ldap.c:1706 plugins/sudoers/ldap.c:1743 -#: plugins/sudoers/ldap.c:1824 plugins/sudoers/ldap.c:1959 -#: plugins/sudoers/ldap.c:2060 plugins/sudoers/ldap.c:2076 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/linux_audit.c:83 -#: plugins/sudoers/logging.c:103 plugins/sudoers/logging.c:192 -#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545 -#: plugins/sudoers/logging.c:585 plugins/sudoers/logging.c:1083 -#: plugins/sudoers/match_command.c:242 plugins/sudoers/match_command.c:390 -#: plugins/sudoers/match_command.c:437 plugins/sudoers/match_command.c:509 -#: plugins/sudoers/match_digest.c:80 plugins/sudoers/parse.c:192 -#: plugins/sudoers/parse.c:204 plugins/sudoers/parse.c:219 -#: plugins/sudoers/parse.c:231 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428 +#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446 +#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467 +#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630 +#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098 +#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72 +#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325 +#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603 +#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105 +#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235 +#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381 +#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706 +#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620 +#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999 +#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165 +#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425 +#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527 +#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448 +#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573 +#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 +#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229 +#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263 +#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152 #: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 #: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 #: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 @@ -234,60 +260,112 @@ #: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648 #: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723 #: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758 -#: plugins/sudoers/policy.c:120 plugins/sudoers/policy.c:129 -#: plugins/sudoers/policy.c:138 plugins/sudoers/policy.c:164 -#: plugins/sudoers/policy.c:291 plugins/sudoers/policy.c:306 -#: plugins/sudoers/policy.c:308 plugins/sudoers/policy.c:337 -#: plugins/sudoers/policy.c:346 plugins/sudoers/policy.c:389 -#: plugins/sudoers/policy.c:399 plugins/sudoers/policy.c:408 -#: plugins/sudoers/policy.c:417 plugins/sudoers/policy.c:491 -#: plugins/sudoers/policy.c:823 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:191 plugins/sudoers/pwutil.c:262 -#: plugins/sudoers/pwutil.c:340 plugins/sudoers/pwutil.c:514 -#: plugins/sudoers/pwutil.c:578 plugins/sudoers/pwutil.c:649 -#: plugins/sudoers/pwutil.c:808 plugins/sudoers/pwutil.c:865 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:967 +#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183 +#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335 +#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418 +#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437 +#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526 +#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265 +#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517 +#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652 +#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867 +#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968 #: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 #: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:145 -#: plugins/sudoers/sssd.c:409 plugins/sudoers/sssd.c:472 -#: plugins/sudoers/sssd.c:516 plugins/sudoers/sssd.c:563 -#: plugins/sudoers/sssd.c:755 plugins/sudoers/stubs.c:96 -#: plugins/sudoers/stubs.c:104 plugins/sudoers/sudoers.c:316 -#: plugins/sudoers/sudoers.c:327 plugins/sudoers/sudoers.c:337 -#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:720 -#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:894 -#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/sudoreplay.c:553 -#: plugins/sudoers/sudoreplay.c:556 plugins/sudoers/sudoreplay.c:1260 -#: plugins/sudoers/sudoreplay.c:1470 plugins/sudoers/sudoreplay.c:1474 +#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110 +#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300 +#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370 +#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391 +#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794 +#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961 +#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552 +#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 #: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228 -#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:581 +#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587 #: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476 #: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51 #: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128 #: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:146 plugins/sudoers/visudo.c:322 -#: plugins/sudoers/visudo.c:328 plugins/sudoers/visudo.c:438 -#: plugins/sudoers/visudo.c:616 plugins/sudoers/visudo.c:936 -#: plugins/sudoers/visudo.c:1024 plugins/sudoers/visudo.c:1121 toke.l:864 -#: toke.l:981 toke.l:1039 +#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323 +#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439 +#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935 +#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913 +#: toke.l:1033 toke.l:1091 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/iolog/iolog_fileio.c:157 +#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463 +#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468 +#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244 +#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571 +#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330 +#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618 +#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748 +#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222 +#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711 +#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161 +#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249 +#: plugins/sudoers/toke_util.c:169 +#, c-format +msgid "internal error, %s overflow" +msgstr "내부 오류. %s 오버플로우" + +#: lib/eventlog/eventlog.c:343 +#, c-format +msgid "unable to dup stdin: %m" +msgstr "표준 입력을 복제할 수 없습니다: %m" + +#: lib/eventlog/eventlog.c:388 +#, c-format +msgid "unable to execute %s: %m" +msgstr "%s을(를) 실행할 수 없습니다: %m" + +#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198 +msgid "unable to fork" +msgstr "포킹할 수 없습니다" + +#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490 +#, c-format +msgid "unable to fork: %m" +msgstr "포킹할 수 없습니다: %m" + +#: lib/eventlog/eventlog.c:480 +#, c-format +msgid "unable to open pipe: %m" +msgstr "파이프를 열 수 없습니다: %m" + +#: lib/eventlog/eventlog.c:894 +#, c-format +msgid "%8s : %s" +msgstr "%8s : %s" + +#: lib/eventlog/eventlog.c:923 +#, c-format +msgid "%8s : (command continued) %s" +msgstr "%8s : (명령 계속 실행) %s" + +#: lib/iolog/iolog_fileio.c:155 #, c-format msgid "%s exists but is not a directory (0%o)" msgstr "%s이(가) 있지만 디렉터리가 아닙니다(0%o)" -#: lib/iolog/iolog_fileio.c:187 lib/iolog/iolog_fileio.c:233 +#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231 #: plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "mkdir %s 명령을 실행할 수 없습니다" -#: lib/iolog/iolog_fileio.c:237 plugins/sudoers/visudo.c:733 -#: plugins/sudoers/visudo.c:744 +#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732 +#: plugins/sudoers/visudo.c:743 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "%s 모드를 0%o 값으로 바꿀 수 없습니다" @@ -297,63 +375,45 @@ msgid "expected JSON_STRING, got %d" msgstr "JSON_STRING 값을 기대했지만, %d 결과가 나왔습니다" -#: lib/iolog/iolog_json.c:305 +#: lib/iolog/iolog_json.c:327 msgid "missing double quote in name" msgstr "이름에 이중 따옴표가 빠졌습니다" -#: lib/iolog/iolog_json.c:392 +#: lib/iolog/iolog_json.c:414 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "JSON_OBJECT 값을 기대했지만, %d 결과가 나왔습니다" -#: lib/iolog/iolog_json.c:441 lib/iolog/iolog_json.c:444 -#: lib/iolog/iolog_json.c:446 lib/iolog/iolog_json.c:538 -#: logsrvd/eventlog.c:228 plugins/sudoers/cvtsudoers_ldif.c:244 -#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:563 -#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330 -#: plugins/sudoers/env.c:435 plugins/sudoers/iolog.c:561 -#: plugins/sudoers/iolog.c:577 plugins/sudoers/ldap.c:516 -#: plugins/sudoers/ldap.c:747 plugins/sudoers/ldap.c:1080 -#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:89 plugins/sudoers/logging.c:1088 -#: plugins/sudoers/policy.c:521 plugins/sudoers/policy.c:668 -#: plugins/sudoers/policy.c:678 plugins/sudoers/prompt.c:161 -#: plugins/sudoers/sudoers.c:916 plugins/sudoers/testsudoers.c:249 -#: plugins/sudoers/toke_util.c:169 -#, c-format -msgid "internal error, %s overflow" -msgstr "내부 오류. %s 오버플로우" - -#: lib/iolog/iolog_json.c:607 lib/iolog/iolog_json.c:731 +#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753 msgid "unmatched close brace" msgstr "일치하지 않는 중괄호 닫기 표시" -#: lib/iolog/iolog_json.c:616 +#: lib/iolog/iolog_json.c:638 msgid "unexpected array" msgstr "예기치 않은 배열 발견" -#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:733 +#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755 msgid "unmatched close bracket" msgstr "일치하지 않는 각괄호 닫기 표시" -#: lib/iolog/iolog_json.c:637 +#: lib/iolog/iolog_json.c:659 msgid "unexpected string" msgstr "예기치 않은 문자열 값 발견" -#: lib/iolog/iolog_json.c:647 +#: lib/iolog/iolog_json.c:669 msgid "missing colon after name" msgstr "이름 뒤에 콜론이 빠졌습니다" -#: lib/iolog/iolog_json.c:658 lib/iolog/iolog_json.c:673 -#: lib/iolog/iolog_json.c:688 +#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695 +#: lib/iolog/iolog_json.c:710 msgid "unexpected boolean" msgstr "예기치 않은 부울린 값 발견" -#: lib/iolog/iolog_json.c:704 +#: lib/iolog/iolog_json.c:726 msgid "unexpected number" msgstr "예기치 않은 숫자 값 발견" -#: lib/iolog/iolog_json.c:741 +#: lib/iolog/iolog_json.c:763 #, c-format msgid "%s:%u unable to parse \"%s\"" msgstr "%s:%u \"%s\"을(를) 해석할 수 없습니다" @@ -398,186 +458,184 @@ msgid "invalid timing file line: %s" msgstr "잘못된 타이밍 파일 행: %s" -#: logsrvd/eventlog.c:430 plugins/sudoers/logging.c:112 -#, c-format -msgid "%8s : %s" -msgstr "%8s : %s" - -#: logsrvd/eventlog.c:459 plugins/sudoers/logging.c:136 -#, c-format -msgid "%8s : (command continued) %s" -msgstr "%8s : (명령 계속 실행) %s" - -#: logsrvd/iolog_writer.c:936 +#: logsrvd/iolog_writer.c:919 msgid "log is already complete, cannot be restarted" msgstr "로그를 이미 끝냈으며, 다시 시작할 수 없습니다" -#: logsrvd/iolog_writer.c:967 +#: logsrvd/iolog_writer.c:950 msgid "unable to restart log" msgstr "로그를 다시 시작할 수 없습니다" -#: logsrvd/logsrv_util.c:98 logsrvd/logsrv_util.c:105 -#: plugins/sudoers/sudoreplay.c:353 plugins/sudoers/sudoreplay.c:359 +#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 +#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 #, c-format msgid "unable to open %s/%s" msgstr "%s/%s을(를) 열 수 없습니다" -#: logsrvd/logsrv_util.c:132 +#: logsrvd/logsrv_util.c:133 #, c-format msgid "missing I/O log file %s/%s" msgstr "입출력 로그 파일 %s/%s 빠짐" -#: logsrvd/logsrv_util.c:139 +#: logsrvd/logsrv_util.c:140 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: %zu회 이전 탐색을 진행할 수 없습니다" -#: logsrvd/logsrv_util.c:149 +#: logsrvd/logsrv_util.c:150 #, c-format msgid "unable to find resume point [%lld, %ld] in %s/%s" msgstr "%3$s/%4$s에서 재개 지점[%1$lld, %2$ld]을 찾을 수 없습니다" -#: logsrvd/logsrvd.c:230 logsrvd/logsrvd.c:299 logsrvd/logsrvd.c:343 -#: logsrvd/logsrvd.c:398 logsrvd/logsrvd.c:445 logsrvd/logsrvd.c:496 -#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:560 +#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394 +#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568 +#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632 msgid "state machine error" msgstr "상태 머신 오류" -#: logsrvd/logsrvd.c:239 +#: logsrvd/logsrvd.c:299 msgid "invalid AcceptMessage" msgstr "잘못된 AcceptMessage" -#: logsrvd/logsrvd.c:250 +#: logsrvd/logsrvd.c:307 msgid "error parsing AcceptMessage" msgstr "AcceptMessage 해석 오류" -#: logsrvd/logsrvd.c:257 +#: logsrvd/logsrvd.c:314 msgid "error creating I/O log" msgstr "입출력 로그 만드는 중 오류" -#: logsrvd/logsrvd.c:265 +#: logsrvd/logsrvd.c:321 msgid "error logging accept event" msgstr "수락 이벤트 로깅 중 오류" -#: logsrvd/logsrvd.c:308 +#: logsrvd/logsrvd.c:362 msgid "invalid RejectMessage" msgstr "잘못된 RejectMessage" -#: logsrvd/logsrvd.c:319 +#: logsrvd/logsrvd.c:370 msgid "error parsing RejectMessage" msgstr "RejectMessage 해석 오류" -#: logsrvd/logsrvd.c:325 +#: logsrvd/logsrvd.c:376 msgid "error logging reject event" msgstr "거절 이벤트 로깅 중 오류" -#: logsrvd/logsrvd.c:430 +#: logsrvd/logsrvd.c:486 +msgid "invalid AlertMessage" +msgstr "잘못된 AlertMessage" + +#: logsrvd/logsrvd.c:494 +msgid "error parsing AlertMessage" +msgstr "AlertMessage 해석 오류" + +#: logsrvd/logsrvd.c:502 msgid "error logging alert event" msgstr "경고 이벤트 로깅 중 오류" -#: logsrvd/logsrvd.c:451 logsrvd/logsrvd.c:502 logsrvd/logsrvd.c:534 +#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606 msgid "protocol error" msgstr "프로토콜 오류" -#: logsrvd/logsrvd.c:461 +#: logsrvd/logsrvd.c:533 msgid "error writing IoBuffer" msgstr "입출력 버퍼 기록 중 오류" -#: logsrvd/logsrvd.c:513 +#: logsrvd/logsrvd.c:585 msgid "error writing ChangeWindowSize" msgstr "ChangeWindowSize 기록 중 오류" -#: logsrvd/logsrvd.c:545 +#: logsrvd/logsrvd.c:617 msgid "error writing CommandSuspend" msgstr "CommandSuspend 기록 중 오류" -#: logsrvd/logsrvd.c:630 +#: logsrvd/logsrvd.c:702 msgid "unrecognized ClientMessage type" msgstr "인식할 수 없는 ClientMessage 형식" -#: logsrvd/logsrvd.c:895 +#: logsrvd/logsrvd.c:967 msgid "client message too large" msgstr "클라이언트 메시지가 너무 깁니다" -#: logsrvd/logsrvd.c:1125 logsrvd/logsrvd.c:1133 +#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "%s에 TLS 1.2 암호 모음을 설정할 수 없습니다: %s" -#: logsrvd/logsrvd.c:1153 logsrvd/logsrvd.c:1161 +#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "%s에 TLS 1.3 암호 모음을 설정할 수 없습니다: %s" -#: logsrvd/logsrvd.c:1197 +#: logsrvd/logsrvd.c:1269 #, c-format msgid "unable to get TLS server method: %s" msgstr "TLS 서버 처리 정보를 가져올 수 없습니다: %s" -#: logsrvd/logsrvd.c:1202 +#: logsrvd/logsrvd.c:1274 #, c-format msgid "unable to create TLS context: %s" msgstr "TLS 컨텍스트를 만들 수 없습니다: %s" -#: logsrvd/logsrvd.c:1209 plugins/sudoers/iolog_client.c:237 +#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236 #, c-format msgid "unable to load certificate %s" msgstr "%s 인증서를 불러올 수 없습니다" -#: logsrvd/logsrvd.c:1222 plugins/sudoers/iolog_client.c:217 +#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "%s 인증서 인증 번들을 불러올 수 없습니다" -#: logsrvd/logsrvd.c:1267 plugins/sudoers/iolog_client.c:250 +#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249 #, c-format msgid "unable to load private key %s" msgstr "%s 개인 키를 불러올 수 없습니다" -#: logsrvd/logsrvd.c:1284 logsrvd/logsrvd.c:1293 +#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "디피-헬먼 매개변수를 설정할 수 없습니다: %s" -#: logsrvd/logsrvd.c:1306 +#: logsrvd/logsrvd.c:1378 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "TLS 프로토콜 최소 버전을 1.2로 설정할 수 없습니다: %s" -#: logsrvd/logsrvd.c:1491 +#: logsrvd/logsrvd.c:1563 msgid "unable to get remote IP addr" msgstr "원격 IP 주소를 가져올 수 없습니다" -#: logsrvd/logsrvd.c:1519 plugins/sudoers/iolog_client.c:264 +#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "ssl 객체에 사용자 데이터를 붙일 수 없습니다: %s" -#: logsrvd/logsrvd.c:1527 logsrvd/logsrvd.c:1649 logsrvd/logsrvd.c:1749 -#: logsrvd/sendlog.c:1106 logsrvd/sendlog.c:1462 logsrvd/sendlog.c:1477 -#: logsrvd/sendlog.c:1535 plugins/sudoers/iolog.c:921 -#: plugins/sudoers/iolog.c:1054 plugins/sudoers/iolog.c:1152 -#: plugins/sudoers/iolog_client.c:109 plugins/sudoers/iolog_client.c:325 -#: plugins/sudoers/iolog_client.c:341 plugins/sudoers/iolog_client.c:387 -#: plugins/sudoers/iolog_client.c:567 plugins/sudoers/iolog_client.c:574 -#: plugins/sudoers/iolog_client.c:1150 plugins/sudoers/iolog_client.c:1186 -#: plugins/sudoers/iolog_client.c:1194 plugins/sudoers/iolog_client.c:1254 -#: plugins/sudoers/iolog_client.c:1361 plugins/sudoers/iolog_client.c:1477 -#: plugins/sudoers/iolog_client.c:1759 plugins/sudoers/iolog_client.c:1767 -#: plugins/sudoers/sudoreplay.c:513 plugins/sudoers/sudoreplay.c:560 -#: plugins/sudoers/sudoreplay.c:792 plugins/sudoers/sudoreplay.c:904 -#: plugins/sudoers/sudoreplay.c:994 plugins/sudoers/sudoreplay.c:1009 -#: plugins/sudoers/sudoreplay.c:1016 plugins/sudoers/sudoreplay.c:1023 -#: plugins/sudoers/sudoreplay.c:1030 plugins/sudoers/sudoreplay.c:1037 -#: plugins/sudoers/sudoreplay.c:1164 +#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823 +#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496 +#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956 +#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187 +#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 +#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594 +#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376 +#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425 +#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692 +#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015 +#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 +#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 +#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 +#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1163 msgid "unable to add event to queue" msgstr "큐에 이벤트를 추가할 수 없습니다" -#: logsrvd/logsrvd.c:1703 logsrvd/logsrvd.c:1937 +#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011 msgid "unable setup listen socket" msgstr "감청 소켓을 설정할 수 없습니다" -#: logsrvd/logsrvd.c:1843 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124 #, c-format msgid "" "%s - send sudo I/O log to remote server\n" @@ -586,7 +644,7 @@ "%s - 원격 서버에 sudo 입출력 로그를 보냅니다\n" "\n" -#: logsrvd/logsrvd.c:1846 +#: logsrvd/logsrvd.c:1920 msgid "" "\n" "Options:\n" @@ -604,78 +662,78 @@ " -R, --random-drop 연결을 쳐낼 백분율\n" " -V, --version 버전 정보를 나타낸 후 나갑니다\n" -#: logsrvd/logsrvd.c:1898 logsrvd/sendlog.c:1700 +#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719 msgid "Protobuf-C version 1.3 or higher required" msgstr "Protobuf-C 1.3 이상의 버전이 필요합니다" -#: logsrvd/logsrvd.c:1916 +#: logsrvd/logsrvd.c:1990 #, c-format msgid "invalid random drop value: %s" msgstr "잘못된 임의 드롭 값: %s" -#: logsrvd/logsrvd.c:1920 logsrvd/sendlog.c:1750 -#: plugins/sudoers/cvtsudoers.c:229 plugins/sudoers/sudoreplay.c:300 -#: plugins/sudoers/visudo.c:178 +#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: plugins/sudoers/visudo.c:177 #, c-format msgid "%s version %s\n" msgstr "%s 버전 %s\n" -#: logsrvd/logsrvd_conf.c:393 +#: logsrvd/logsrvd_conf.c:331 msgid "TLS not supported" msgstr "TLS를 지원하지 않습니다" -#: logsrvd/logsrvd_conf.c:405 +#: logsrvd/logsrvd_conf.c:343 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:471 logsrvd/logsrvd_conf.c:715 +#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: 완전하지 않은 경로" -#: logsrvd/logsrvd_conf.c:829 +#: logsrvd/logsrvd_conf.c:767 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d 일치하지 않는 '[': %s" -#: logsrvd/logsrvd_conf.c:840 +#: logsrvd/logsrvd_conf.c:778 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s:%d 잘못된 설정 섹션: %s" -#: logsrvd/logsrvd_conf.c:848 +#: logsrvd/logsrvd_conf.c:786 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d 잘못된 설정 행: %s" -#: logsrvd/logsrvd_conf.c:854 +#: logsrvd/logsrvd_conf.c:792 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d(에)서 섹션 이름이 나와야 합니다: %s" -#: logsrvd/logsrvd_conf.c:868 +#: logsrvd/logsrvd_conf.c:806 #, c-format msgid "invalid value for %s: %s" msgstr "잘못된 %s 값: %s" -#: logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:814 #, c-format msgid "%s:%d unknown key: %s" msgstr "%s:%d 알 수 없는 키: %s" -#: logsrvd/logsrvd_conf.c:1032 +#: logsrvd/logsrvd_conf.c:1003 #, c-format msgid "unknown syslog facility %s" msgstr "알 수 없는 syslog 수단 %s" -#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1040 -#: logsrvd/logsrvd_conf.c:1044 +#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011 +#: logsrvd/logsrvd_conf.c:1015 #, c-format msgid "unknown syslog priority %s" msgstr "알 수 없는 syslog 우선 순위 %s" -#: logsrvd/sendlog.c:126 +#: logsrvd/sendlog.c:127 msgid "" "\n" "Options:\n" @@ -709,145 +767,148 @@ " -t, --test 선택한 입출력 로그를 병렬로 n회 전송하여 감사 서버 테스트\n" " -V, --version 버전 정보를 나타 후 나갑니다\n" -#: logsrvd/sendlog.c:163 plugins/sudoers/iolog_client.c:433 +#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432 #, c-format msgid "unable to look up %s:%s: %s" msgstr "%s:%s을(를) 찾을 수 없습니다: %s" -#: logsrvd/sendlog.c:186 +#: logsrvd/sendlog.c:202 msgid "unable to get server IP addr" msgstr "서버 IP 주소를 가져올 수 없습니다" -#: logsrvd/sendlog.c:240 plugins/sudoers/sudoreplay.c:852 +#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851 #, c-format msgid "unable to read %s/%s: %s" msgstr "%s/%s을(를) 읽을 수 없습니다: %s" -#: logsrvd/sendlog.c:261 plugins/sudoers/iolog_client.c:684 +#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694 #, c-format msgid "client message too large: %zu" msgstr "클라이언드 메시지가 너무 깁니다: %zu" -#: logsrvd/sendlog.c:791 +#: logsrvd/sendlog.c:810 #, c-format msgid "%s: write buffer already in use" msgstr "%s: 쓰기 버퍼를 이미 사용중입니다" -#: logsrvd/sendlog.c:843 plugins/sudoers/iolog.c:845 -#: plugins/sudoers/iolog.c:914 +#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880 +#: plugins/sudoers/iolog.c:949 #, c-format msgid "unexpected I/O event %d" msgstr "예기치 않은 입출력 이벤트 %d" -#: logsrvd/sendlog.c:889 logsrvd/sendlog.c:906 logsrvd/sendlog.c:940 -#: plugins/sudoers/iolog_client.c:1155 plugins/sudoers/iolog_client.c:1225 -#: plugins/sudoers/iolog_client.c:1273 +#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959 +#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386 +#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490 #, c-format msgid "%s: unexpected state %d" msgstr "%s: 예기치 않은 상태 번호 %d" -#: logsrvd/sendlog.c:912 plugins/sudoers/iolog_client.c:1231 +#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460 msgid "invalid ServerHello" msgstr "잘못된 ServerHello" -#: logsrvd/sendlog.c:976 plugins/sudoers/iolog_client.c:1317 +#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534 #, c-format msgid "error message received from server: %s" msgstr "서버로부터 오류 메시지를 받았습니다: %s" -#: logsrvd/sendlog.c:989 plugins/sudoers/iolog_client.c:1330 +#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547 #, c-format msgid "abort message received from server: %s" msgstr "서버로부터 중단 메시지를 받았습니다: %s" -#: logsrvd/sendlog.c:1008 plugins/sudoers/iolog_client.c:1349 +#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566 msgid "unable to unpack ServerMessage" msgstr "ServerMessage를 언팩할 수 없습니다" -#: logsrvd/sendlog.c:1048 plugins/sudoers/iolog_client.c:1382 +#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: 예기지 않은 type_case 값 %d" -#: logsrvd/sendlog.c:1077 +#: logsrvd/sendlog.c:1096 msgid "timeout reading from server" msgstr "서버 데이터 읽기 시간 초과" -#: logsrvd/sendlog.c:1155 +#: logsrvd/sendlog.c:1174 msgid "premature EOF" msgstr "갑작스러운 EOF" -#: logsrvd/sendlog.c:1168 plugins/sudoers/iolog_client.c:1536 +#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751 #, c-format msgid "server message too large: %u" msgstr "서버 메시지가 너무 깁니다: %u" -#: logsrvd/sendlog.c:1219 +#: logsrvd/sendlog.c:1238 msgid "timeout writing to server" msgstr "서버 기록 시간 초과" -#: logsrvd/sendlog.c:1438 plugins/sudoers/iolog_client.c:297 +#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296 msgid "TLS handshake timeout occurred" msgstr "TLS 핸드셰이크 시간을 초과했습니다" -#: logsrvd/sendlog.c:1457 logsrvd/sendlog.c:1472 -#: plugins/sudoers/iolog_client.c:319 plugins/sudoers/iolog_client.c:335 +#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491 +#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 msgid "unable to set event" msgstr "이벤트를 설정할 수 없습니다" -#: logsrvd/sendlog.c:1482 logsrvd/sendlog.c:1486 +#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505 #, c-format msgid "TLS connection failed: %s" msgstr "TLS 연결 실패: %s" -#: logsrvd/sendlog.c:1519 +#: logsrvd/sendlog.c:1538 #, c-format msgid "Unable to initialize ssl context: %s" msgstr "SSL 컨텍스트를 초기화할 수 없습니다: %s" -#: logsrvd/sendlog.c:1524 plugins/sudoers/iolog_client.c:259 +#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "SSL 객체를 할당할 수 없습니다: %s" -#: logsrvd/sendlog.c:1529 +#: logsrvd/sendlog.c:1548 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "SSL 객체에 소켓을 붙일 수 없습니다: %s" -#: logsrvd/sendlog.c:1773 +#: logsrvd/sendlog.c:1792 msgid "both restart point and iolog ID must be specified" msgstr "다시 시작 지점과 입출력 로그 ID를 반드시 지정해야합니다" -#: logsrvd/sendlog.c:1777 +#: logsrvd/sendlog.c:1796 msgid "a restart point may not be set when no I/O is sent" msgstr "입출력을 보내지 않을 때 다시 시작 지점을 지정하지 않습니다" -#: logsrvd/sendlog.c:1852 +#: logsrvd/sendlog.c:1871 #, c-format msgid "exited prematurely with state %d" msgstr "%d 상태로 갑자기 빠져나왔습니다" -#: logsrvd/sendlog.c:1853 +#: logsrvd/sendlog.c:1872 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "경과 시간을 서버로 보냈습니다 [%lld, %ld]" -#: logsrvd/sendlog.c:1855 +#: logsrvd/sendlog.c:1874 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "제출 지점 정보를 서버로부터 받았습니다 [%lld, %ld]" -#: plugins/sudoers/alias.c:144 +#: plugins/sudoers/alias.c:148 #, c-format msgid "Alias \"%s\" already defined" msgstr "\"%s\" 별칭을 이미 정의했습니다" -#: plugins/sudoers/auth/aix_auth.c:198 plugins/sudoers/logging.c:784 -msgid "unable to fork" -msgstr "포킹할 수 없습니다" +#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343 +#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002 +#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175 +#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114 +msgid "unable to get time of day" +msgstr "일시 정보를 가져올 수 없습니다" -#: plugins/sudoers/auth/aix_auth.c:278 +#: plugins/sudoers/auth/aix_auth.c:277 #, c-format msgid "unable to change password for %s" msgstr "%s의 암호를 바꿀 수 없습니다" @@ -869,11 +930,11 @@ msgid "unable to initialize BSD authentication" msgstr "BSD 인증을 초기화할 수 없습니다" -#: plugins/sudoers/auth/bsdauth.c:180 +#: plugins/sudoers/auth/bsdauth.c:179 msgid "your account has expired" msgstr "계정 유효 기간이 지났습니다" -#: plugins/sudoers/auth/bsdauth.c:182 +#: plugins/sudoers/auth/bsdauth.c:181 msgid "approval failed" msgstr "승인 실패" @@ -980,7 +1041,7 @@ msgid "PAM account management error: %s" msgstr "PAM 계정 관리 오류: %s" -#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:242 +#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243 #, c-format msgid "you do not exist in the %s database" msgstr "%s 데이터베이스에 없습니다" @@ -1009,7 +1070,7 @@ msgid "SecurID communication failed" msgstr "SecurID 통신에 실패했습니다" -#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:212 +#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:210 msgid "unknown SecurID error" msgstr "알 수 없는 SecurID 오류" @@ -1017,7 +1078,7 @@ msgid "invalid passcode length for SecurID" msgstr "SecurID용 암호 길이가 잘못되었습니다" -#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:124 +#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:123 msgid "unable to initialize SIA session" msgstr "SIA 세션을 초기화할 수 없습니다" @@ -1041,7 +1102,7 @@ msgid "Unable to initialize authentication methods." msgstr "인증 방식을 초기화할 수 없습니다." -#: plugins/sudoers/auth/sudo_auth.c:473 +#: plugins/sudoers/auth/sudo_auth.c:471 msgid "Authentication methods:" msgstr "인증 방식:" @@ -1074,117 +1135,117 @@ "\n" #: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311 -#: plugins/sudoers/sudoers.c:763 plugins/sudoers/sudoers.c:811 +#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858 #: plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid: %u" msgstr "알 수 없는 uid: %u" -#: plugins/sudoers/check.c:306 plugins/sudoers/iolog.c:117 -#: plugins/sudoers/policy.c:1037 plugins/sudoers/sudoers.c:387 -#: plugins/sudoers/sudoers.c:388 plugins/sudoers/sudoers.c:1240 -#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:392 +#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85 +#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088 +#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307 +#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386 #, c-format msgid "unknown user: %s" msgstr "알 수 없는 사용자: %s" -#: plugins/sudoers/cvtsudoers.c:195 +#: plugins/sudoers/cvtsudoers.c:194 #, c-format msgid "order increment: %s: %s" msgstr "순서 증가: %s: %s" -#: plugins/sudoers/cvtsudoers.c:211 +#: plugins/sudoers/cvtsudoers.c:210 #, c-format msgid "starting order: %s: %s" msgstr "순서 시작: %s: %s" -#: plugins/sudoers/cvtsudoers.c:221 +#: plugins/sudoers/cvtsudoers.c:220 #, c-format msgid "order padding: %s: %s" msgstr "순서 패딩: %s: %s" -#: plugins/sudoers/cvtsudoers.c:231 plugins/sudoers/visudo.c:180 +#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179 #, c-format msgid "%s grammar version %d\n" msgstr "%s 문법 버전 %d\n" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/testsudoers.c:167 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/testsudoers.c:167 #, c-format msgid "unsupported input format %s" msgstr "지원하지 않는 %s 입력 형식" -#: plugins/sudoers/cvtsudoers.c:263 +#: plugins/sudoers/cvtsudoers.c:262 #, c-format msgid "unsupported output format %s" msgstr "지원하지 않는 %s 출력 형식" -#: plugins/sudoers/cvtsudoers.c:315 +#: plugins/sudoers/cvtsudoers.c:314 #, c-format msgid "%s: input and output files must be different" msgstr "%s: 입출력 파일은 달라야합니다" -#: plugins/sudoers/cvtsudoers.c:331 plugins/sudoers/sudoers.c:181 -#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:248 -#: plugins/sudoers/visudo.c:604 plugins/sudoers/visudo.c:927 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178 +#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249 +#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926 msgid "unable to initialize sudoers default values" msgstr "sudoers 기본 값을 초기화할 수 없습니다" -#: plugins/sudoers/cvtsudoers.c:417 plugins/sudoers/ldap_conf.c:431 +#: plugins/sudoers/cvtsudoers.c:416 plugins/sudoers/ldap_conf.c:431 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" -#: plugins/sudoers/cvtsudoers.c:476 +#: plugins/sudoers/cvtsudoers.c:475 #, c-format msgid "%s: unknown key word: %s" msgstr "%s: 알 수 없는 키워드: %s" -#: plugins/sudoers/cvtsudoers.c:522 +#: plugins/sudoers/cvtsudoers.c:521 #, c-format msgid "invalid defaults type: %s" msgstr "잘못된 기본 형식: %s" -#: plugins/sudoers/cvtsudoers.c:545 +#: plugins/sudoers/cvtsudoers.c:544 #, c-format msgid "invalid suppression type: %s" msgstr "잘못된 생략 형식: %s" -#: plugins/sudoers/cvtsudoers.c:585 plugins/sudoers/cvtsudoers.c:599 +#: plugins/sudoers/cvtsudoers.c:584 plugins/sudoers/cvtsudoers.c:598 #, c-format msgid "invalid filter: %s" msgstr "잘못된 필터: %s" -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:635 -#: plugins/sudoers/cvtsudoers.c:1245 plugins/sudoers/cvtsudoers_json.c:861 -#: plugins/sudoers/cvtsudoers_ldif.c:680 plugins/sudoers/sudoers.c:986 -#: plugins/sudoers/sudoreplay.c:1436 plugins/sudoers/timestamp.c:441 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:923 +#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634 +#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872 +#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053 +#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441 +#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922 #, c-format msgid "unable to open %s" msgstr "%s을(를) 열 수 없습니다" -#: plugins/sudoers/cvtsudoers.c:638 plugins/sudoers/visudo.c:932 +#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931 #, c-format msgid "failed to parse %s file, unknown error" msgstr "%s 파일 해석에 실패했습니다. 알 수 없는 오류." -#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/visudo.c:949 +#: plugins/sudoers/cvtsudoers.c:645 #, c-format msgid "parse error in %s near line %d\n" msgstr "%s %d번째 줄 인근 해석 오류\n" -#: plugins/sudoers/cvtsudoers.c:649 plugins/sudoers/visudo.c:952 +#: plugins/sudoers/cvtsudoers.c:648 #, c-format msgid "parse error in %s\n" msgstr "%s 해석 오류\n" -#: plugins/sudoers/cvtsudoers.c:1292 plugins/sudoers/sudoreplay.c:1125 +#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124 #: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328 #, c-format msgid "unable to write to %s" msgstr "%s에 기록할 수 없습니다" -#: plugins/sudoers/cvtsudoers.c:1315 +#: plugins/sudoers/cvtsudoers.c:1314 #, c-format msgid "" "%s - convert between sudoers file formats\n" @@ -1193,7 +1254,7 @@ "%s - sudoers 파일 형식을 변환합니다\n" "\n" -#: plugins/sudoers/cvtsudoers.c:1317 +#: plugins/sudoers/cvtsudoers.c:1316 msgid "" "\n" "Options:\n" @@ -1234,675 +1295,700 @@ " -V, --version 버전 정보를 표시하고 빠져나갑니다" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:702 +#: plugins/sudoers/cvtsudoers_json.c:713 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "알 수 없는 \"%s\" 기본 항목" -#: plugins/sudoers/cvtsudoers_json.c:640 plugins/sudoers/cvtsudoers_json.c:653 -#: plugins/sudoers/cvtsudoers_ldif.c:345 plugins/sudoers/cvtsudoers_ldif.c:356 -#: plugins/sudoers/ldap.c:502 +#: plugins/sudoers/cvtsudoers_json.c:651 plugins/sudoers/cvtsudoers_json.c:664 +#: plugins/sudoers/cvtsudoers_ldif.c:346 plugins/sudoers/cvtsudoers_ldif.c:357 +#: plugins/sudoers/ldap.c:503 msgid "unable to get GMT time" msgstr "GMT 시간을 가져올 수 없습니다" -#: plugins/sudoers/cvtsudoers_json.c:643 plugins/sudoers/cvtsudoers_json.c:656 -#: plugins/sudoers/cvtsudoers_ldif.c:348 plugins/sudoers/cvtsudoers_ldif.c:359 -#: plugins/sudoers/ldap.c:508 +#: plugins/sudoers/cvtsudoers_json.c:654 plugins/sudoers/cvtsudoers_json.c:667 +#: plugins/sudoers/cvtsudoers_ldif.c:349 plugins/sudoers/cvtsudoers_ldif.c:360 +#: plugins/sudoers/ldap.c:509 msgid "unable to format timestamp" msgstr "타임스탬프를 형식에 맞출 수 없습니다" -#: plugins/sudoers/cvtsudoers_ldif.c:632 +#: plugins/sudoers/cvtsudoers_ldif.c:640 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "sudoers 항목이 너무 많습니다. 최대 갯수는 %u개 입니다" -#: plugins/sudoers/cvtsudoers_ldif.c:675 +#: plugins/sudoers/cvtsudoers_ldif.c:683 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "SUDOERS_BASE 환경 변수를 설정하지 않았으며 -b 옵션을 지정하지 않았습니다." -#: plugins/sudoers/def_data.c:42 +#: plugins/sudoers/def_data.c:50 #, c-format msgid "Syslog facility if syslog is being used for logging: %s" msgstr "syslog를 기록 목적으로 활용할 때의 syslog 기능: %s" -#: plugins/sudoers/def_data.c:46 +#: plugins/sudoers/def_data.c:54 #, c-format msgid "Syslog priority to use when user authenticates successfully: %s" msgstr "사용자 인증에 성공했을 때 사용할 syslog 우선 순위: %s" -#: plugins/sudoers/def_data.c:50 +#: plugins/sudoers/def_data.c:58 #, c-format msgid "Syslog priority to use when user authenticates unsuccessfully: %s" msgstr "사용자 인증에 실패했을 때 사용할 syslog 우선 순위: %s" -#: plugins/sudoers/def_data.c:54 +#: plugins/sudoers/def_data.c:62 msgid "Put OTP prompt on its own line" msgstr "일회용 암호 입력 프롬프트를 자체 줄에 표시" -#: plugins/sudoers/def_data.c:58 +#: plugins/sudoers/def_data.c:66 msgid "Ignore '.' in $PATH" msgstr "$PATH의 '.'은 무시합니다" -#: plugins/sudoers/def_data.c:62 +#: plugins/sudoers/def_data.c:70 msgid "Always send mail when sudo is run" msgstr "sudo를 실행할 때 항상 메일을 보냄" -#: plugins/sudoers/def_data.c:66 +#: plugins/sudoers/def_data.c:74 msgid "Send mail if user authentication fails" msgstr "사용자가 인증에 실패했을 때 메일을 보냄" -#: plugins/sudoers/def_data.c:70 +#: plugins/sudoers/def_data.c:78 msgid "Send mail if the user is not in sudoers" msgstr "사용자가 sudoer가 아닐 때 메일을 보냄" -#: plugins/sudoers/def_data.c:74 +#: plugins/sudoers/def_data.c:82 msgid "Send mail if the user is not in sudoers for this host" msgstr "사용자가 이 호스트의 sudoer가 아닐 때 메일을 보냄" -#: plugins/sudoers/def_data.c:78 +#: plugins/sudoers/def_data.c:86 msgid "Send mail if the user is not allowed to run a command" msgstr "사용자가 명령을 실행하도록 허용하지 않았을 때 메일을 보냄" -#: plugins/sudoers/def_data.c:82 +#: plugins/sudoers/def_data.c:90 msgid "Send mail if the user tries to run a command" msgstr "사용자가 명령 실행을 시도했을 때 메일을 보냄" -#: plugins/sudoers/def_data.c:86 +#: plugins/sudoers/def_data.c:94 msgid "Use a separate timestamp for each user/tty combo" msgstr "각 사용자/tty에 타임스탬프를 따로 사용" -#: plugins/sudoers/def_data.c:90 +#: plugins/sudoers/def_data.c:98 msgid "Lecture user the first time they run sudo" msgstr "sudo를 처음 실행할 때 사용자에게 지침 안내" -#: plugins/sudoers/def_data.c:94 +#: plugins/sudoers/def_data.c:102 #, c-format msgid "File containing the sudo lecture: %s" msgstr "sudo 지침 안내가 들어있는 파일: %s" -#: plugins/sudoers/def_data.c:98 +#: plugins/sudoers/def_data.c:106 msgid "Require users to authenticate by default" msgstr "기본적으로 사용자 인증 필요" -#: plugins/sudoers/def_data.c:102 +#: plugins/sudoers/def_data.c:110 msgid "Root may run sudo" msgstr "루트 사용자의 sudo 실행" -#: plugins/sudoers/def_data.c:106 +#: plugins/sudoers/def_data.c:114 msgid "Log the hostname in the (non-syslog) log file" msgstr "로그(비 syslog) 파일에 호스트 이름 기록" -#: plugins/sudoers/def_data.c:110 +#: plugins/sudoers/def_data.c:118 msgid "Log the year in the (non-syslog) log file" msgstr "로그(비 syslog) 파일에 연도 기록" -#: plugins/sudoers/def_data.c:114 +#: plugins/sudoers/def_data.c:122 msgid "If sudo is invoked with no arguments, start a shell" msgstr "sudo에 인자를 넣어 실행하지 않으면 셸 시작" -#: plugins/sudoers/def_data.c:118 +#: plugins/sudoers/def_data.c:126 msgid "Set $HOME to the target user when starting a shell with -s" msgstr "-s 옵션으로 셸을 시작할 때 $HOME을 대상 사용자로 설정" -#: plugins/sudoers/def_data.c:122 +#: plugins/sudoers/def_data.c:130 msgid "Always set $HOME to the target user's home directory" msgstr "항상 $HOME을 대상 사용자의 내 폴더로 설정" -#: plugins/sudoers/def_data.c:126 +#: plugins/sudoers/def_data.c:134 msgid "Allow some information gathering to give useful error messages" msgstr "쓸만한 오류 메시지를 제공할 목적으로 일부 정보 수집 허용" -#: plugins/sudoers/def_data.c:130 +#: plugins/sudoers/def_data.c:138 msgid "Require fully-qualified hostnames in the sudoers file" msgstr "sudoers 파일에 완전한 형태를 갖춘 호스트 이름 필요" -#: plugins/sudoers/def_data.c:134 +#: plugins/sudoers/def_data.c:142 msgid "Insult the user when they enter an incorrect password" msgstr "올바르지 않은 암호를 입력했을 때 사용자 놀리기" -#: plugins/sudoers/def_data.c:138 +#: plugins/sudoers/def_data.c:146 msgid "Only allow the user to run sudo if they have a tty" msgstr "tty를 보유한 사용자만 sudo 실행 허용" -#: plugins/sudoers/def_data.c:142 +#: plugins/sudoers/def_data.c:150 msgid "Visudo will honor the EDITOR environment variable" msgstr "EDITOR 환경 변수 대신 visudo 사용" -#: plugins/sudoers/def_data.c:146 +#: plugins/sudoers/def_data.c:154 msgid "Prompt for root's password, not the users's" msgstr "사용자 암호가 아닌 루트 암호 요구" -#: plugins/sudoers/def_data.c:150 +#: plugins/sudoers/def_data.c:158 msgid "Prompt for the runas_default user's password, not the users's" msgstr "사용자 암호가 아닌 runas_default 사용자 암호 요구" -#: plugins/sudoers/def_data.c:154 +#: plugins/sudoers/def_data.c:162 msgid "Prompt for the target user's password, not the users's" msgstr "사용자 암호가 아닌 대상 사용자 암호 요구" -#: plugins/sudoers/def_data.c:158 +#: plugins/sudoers/def_data.c:166 msgid "Apply defaults in the target user's login class if there is one" msgstr "대상 사용자 로그인 클래스가 있다면 기본값 적용" -#: plugins/sudoers/def_data.c:162 +#: plugins/sudoers/def_data.c:170 msgid "Set the LOGNAME and USER environment variables" msgstr "LOGNAME 및 USER 환경 변수 설정" -#: plugins/sudoers/def_data.c:166 +#: plugins/sudoers/def_data.c:174 msgid "Only set the effective uid to the target user, not the real uid" msgstr "실제 uid가 아닌 대상 사용자에게 유효한 uid 설정" -#: plugins/sudoers/def_data.c:170 +#: plugins/sudoers/def_data.c:178 msgid "Don't initialize the group vector to that of the target user" msgstr "대상 사용자의 그룹 벡터 초기화 안함" -#: plugins/sudoers/def_data.c:174 +#: plugins/sudoers/def_data.c:182 #, c-format msgid "Length at which to wrap log file lines (0 for no wrap): %u" msgstr "로그 파일 줄을 바꿀 줄의 한계 길이(0 값은 줄 바꿈 안함): %u" -#: plugins/sudoers/def_data.c:178 +#: plugins/sudoers/def_data.c:186 #, c-format msgid "Authentication timestamp timeout: %.1f minutes" msgstr "인증 타임스탬프 제한 시간: %.1f분" -#: plugins/sudoers/def_data.c:182 +#: plugins/sudoers/def_data.c:190 #, c-format msgid "Password prompt timeout: %.1f minutes" msgstr "암호 요구 제한시간: %.1f분" -#: plugins/sudoers/def_data.c:186 +#: plugins/sudoers/def_data.c:194 #, c-format msgid "Number of tries to enter a password: %u" msgstr "암호 입력 시도 횟수: %u" -#: plugins/sudoers/def_data.c:190 +#: plugins/sudoers/def_data.c:198 #, c-format msgid "Umask to use or 0777 to use user's: 0%o" msgstr "사용자가 활용할 umask 또는 0777: 0%o" -#: plugins/sudoers/def_data.c:194 +#: plugins/sudoers/def_data.c:202 #, c-format msgid "Path to log file: %s" msgstr "로그 파일 경로: %s" -#: plugins/sudoers/def_data.c:198 +#: plugins/sudoers/def_data.c:206 #, c-format msgid "Path to mail program: %s" msgstr "메일 프로그램 경로: %s" -#: plugins/sudoers/def_data.c:202 +#: plugins/sudoers/def_data.c:210 #, c-format msgid "Flags for mail program: %s" msgstr "메일 프로그램 플래그: %s" -#: plugins/sudoers/def_data.c:206 +#: plugins/sudoers/def_data.c:214 #, c-format msgid "Address to send mail to: %s" msgstr "메일을 보낼 주소: %s" -#: plugins/sudoers/def_data.c:210 +#: plugins/sudoers/def_data.c:218 #, c-format msgid "Address to send mail from: %s" msgstr "메일을 보내려는 주소: %s" -#: plugins/sudoers/def_data.c:214 +#: plugins/sudoers/def_data.c:222 #, c-format msgid "Subject line for mail messages: %s" msgstr "메일 메시지 제목 줄: %s" -#: plugins/sudoers/def_data.c:218 +#: plugins/sudoers/def_data.c:226 #, c-format msgid "Incorrect password message: %s" msgstr "올바르지 않은 암호 메시지: %s" -#: plugins/sudoers/def_data.c:222 +#: plugins/sudoers/def_data.c:230 #, c-format msgid "Path to lecture status dir: %s" msgstr "지침 상태 디렉터리 경로: %s" -#: plugins/sudoers/def_data.c:226 +#: plugins/sudoers/def_data.c:234 #, c-format msgid "Path to authentication timestamp dir: %s" msgstr "인증 타임스탬프 디렉터리 경로: %s" -#: plugins/sudoers/def_data.c:230 +#: plugins/sudoers/def_data.c:238 #, c-format msgid "Owner of the authentication timestamp dir: %s" msgstr "인증 타임스탬프 디렉터리 소유자: %s" -#: plugins/sudoers/def_data.c:234 +#: plugins/sudoers/def_data.c:242 #, c-format msgid "Users in this group are exempt from password and PATH requirements: %s" msgstr "암호와 PATH 변수 요구를 하지 않을 이 그룹의 사용자: %s" -#: plugins/sudoers/def_data.c:238 +#: plugins/sudoers/def_data.c:246 #, c-format msgid "Default password prompt: %s" msgstr "기본 암호 프롬프트: %s" -#: plugins/sudoers/def_data.c:242 +#: plugins/sudoers/def_data.c:250 msgid "If set, passprompt will override system prompt in all cases." msgstr "설정하면 모든 경우의 시스템 프롬프트 대신 이 암호 프롬프트를 사용합니다." -#: plugins/sudoers/def_data.c:246 +#: plugins/sudoers/def_data.c:254 #, c-format msgid "Default user to run commands as: %s" msgstr "명령을 실행할 기본 사용자: %s" -#: plugins/sudoers/def_data.c:250 +#: plugins/sudoers/def_data.c:258 #, c-format msgid "Value to override user's $PATH with: %s" msgstr "사용자의 $PATH를 대신할 값: %s" -#: plugins/sudoers/def_data.c:254 +#: plugins/sudoers/def_data.c:262 #, c-format msgid "Path to the editor for use by visudo: %s" msgstr "visudo에서 사용할 편집기 경로: %s" -#: plugins/sudoers/def_data.c:258 +#: plugins/sudoers/def_data.c:266 #, c-format msgid "When to require a password for 'list' pseudocommand: %s" msgstr "'list' 유사 명령 실행시 암호가 필요할 때: %s" -#: plugins/sudoers/def_data.c:262 +#: plugins/sudoers/def_data.c:270 #, c-format msgid "When to require a password for 'verify' pseudocommand: %s" msgstr "'verify' 유사 명령 실행시 암호가 필요할 때: %s" -#: plugins/sudoers/def_data.c:266 -msgid "Preload the dummy exec functions contained in the sudo_noexec library" -msgstr "sudo_noexec 라이브러리에 있는 모조 exec 함수 미리 불러오기" +#: plugins/sudoers/def_data.c:274 +msgid "Preload the sudo_noexec library which replaces the exec functions" +msgstr "exec 함수를 대체하는 sudo_noexec 라이브러리를 미리 불러옵니다" -#: plugins/sudoers/def_data.c:270 +#: plugins/sudoers/def_data.c:278 msgid "If LDAP directory is up, do we ignore local sudoers file" msgstr "LDAP 디렉터리가 동작 중이라면 로컬 sudoers 파일을 무시합니다" -#: plugins/sudoers/def_data.c:274 +#: plugins/sudoers/def_data.c:282 #, c-format msgid "File descriptors >= %d will be closed before executing a command" msgstr "%d보다 큰 파일 서술자는 명령을 실행하기 전에 닫습니다" -#: plugins/sudoers/def_data.c:278 +#: plugins/sudoers/def_data.c:286 msgid "If set, users may override the value of \"closefrom\" with the -C option" msgstr "이 값을 설정하면 -C 옵션으로 \"closefrom\" 값을 대신 사용합니다" -#: plugins/sudoers/def_data.c:282 +#: plugins/sudoers/def_data.c:290 msgid "Allow users to set arbitrary environment variables" msgstr "사용자가 환경 변수 값을 임의대로 설정할 수 있게 합니다" -#: plugins/sudoers/def_data.c:286 +#: plugins/sudoers/def_data.c:294 msgid "Reset the environment to a default set of variables" msgstr "변수 기본 설정 값으로 환경 초기화" -#: plugins/sudoers/def_data.c:290 -msgid "Environment variables to check for sanity:" -msgstr "무결성 검사할 환경 변수:" +#: plugins/sudoers/def_data.c:298 +msgid "Environment variables to check for safety:" +msgstr "안전 검사 대상 환경 변수:" -#: plugins/sudoers/def_data.c:294 +#: plugins/sudoers/def_data.c:302 msgid "Environment variables to remove:" msgstr "제거할 환경 변수:" -#: plugins/sudoers/def_data.c:298 +#: plugins/sudoers/def_data.c:306 msgid "Environment variables to preserve:" msgstr "유지할 환경 변수:" -#: plugins/sudoers/def_data.c:302 +#: plugins/sudoers/def_data.c:310 #, c-format msgid "SELinux role to use in the new security context: %s" msgstr "새 보안 컨텍스트에 사용할 SELinux 역할: %s" -#: plugins/sudoers/def_data.c:306 +#: plugins/sudoers/def_data.c:314 #, c-format msgid "SELinux type to use in the new security context: %s" msgstr "새 보안 컨텍스트에 사용할 SELinux 형식: %s" -#: plugins/sudoers/def_data.c:310 +#: plugins/sudoers/def_data.c:318 #, c-format msgid "Path to the sudo-specific environment file: %s" msgstr "sudo용 환경 파일 경로: %s" -#: plugins/sudoers/def_data.c:314 +#: plugins/sudoers/def_data.c:322 #, c-format msgid "Path to the restricted sudo-specific environment file: %s" msgstr "sudo 전용 환경 파일 경로: %s" -#: plugins/sudoers/def_data.c:318 +#: plugins/sudoers/def_data.c:326 #, c-format msgid "Locale to use while parsing sudoers: %s" msgstr "sudoers 파일을 해석할 때 사용할 로캘: %s" -#: plugins/sudoers/def_data.c:322 +#: plugins/sudoers/def_data.c:330 msgid "Allow sudo to prompt for a password even if it would be visible" msgstr "암호가 나타나더라도 sudo에서 암호 입력 요구 허용" -#: plugins/sudoers/def_data.c:326 +#: plugins/sudoers/def_data.c:334 msgid "Provide visual feedback at the password prompt when there is user input" msgstr "사용자 입력이 있을 때 암호 프롬프트에서 시각 반응 처리" -#: plugins/sudoers/def_data.c:330 +#: plugins/sudoers/def_data.c:338 msgid "Use faster globbing that is less accurate but does not access the filesystem" msgstr "덜 정확하지만 파일 시스템에 접근하지 않는 빠른 비교 검사 사용" -#: plugins/sudoers/def_data.c:334 +#: plugins/sudoers/def_data.c:342 msgid "The umask specified in sudoers will override the user's, even if it is more permissive" msgstr "sudoers에 지정한 umask 값이 관대한 권한이라 하더라도 사용자의 umask 값으로 적용" -#: plugins/sudoers/def_data.c:338 +#: plugins/sudoers/def_data.c:346 msgid "Log user's input for the command being run" msgstr "실행 명령에 대한 사용자 입력 기록" -#: plugins/sudoers/def_data.c:342 +#: plugins/sudoers/def_data.c:350 msgid "Log the output of the command being run" msgstr "실행 명령에 대한 출력 기록" -#: plugins/sudoers/def_data.c:346 +#: plugins/sudoers/def_data.c:354 msgid "Compress I/O logs using zlib" msgstr "zlib로 입출력 로그 압축" -#: plugins/sudoers/def_data.c:350 +#: plugins/sudoers/def_data.c:358 msgid "Always run commands in a pseudo-tty" msgstr "항상 명령을 유사 tty에서 실행" -#: plugins/sudoers/def_data.c:354 +#: plugins/sudoers/def_data.c:362 #, c-format msgid "Plugin for non-Unix group support: %s" msgstr "비 유닉스 그룹을 지원하는 플러그인: %s" -#: plugins/sudoers/def_data.c:358 +#: plugins/sudoers/def_data.c:366 #, c-format msgid "Directory in which to store input/output logs: %s" msgstr "입출력 로그를 저장할 디렉터리: %s" -#: plugins/sudoers/def_data.c:362 +#: plugins/sudoers/def_data.c:370 #, c-format msgid "File in which to store the input/output log: %s" msgstr "입출력 로그를 저장할 파일: %s" -#: plugins/sudoers/def_data.c:366 +#: plugins/sudoers/def_data.c:374 msgid "Add an entry to the utmp/utmpx file when allocating a pty" msgstr "pty를 할당할 때 utmp/utmpx 파일에 항목 추가" -#: plugins/sudoers/def_data.c:370 +#: plugins/sudoers/def_data.c:378 msgid "Set the user in utmp to the runas user, not the invoking user" msgstr "utmp의 사용자를 실제 실행 사용자가 아닌 대리 실행 사용자로 설정" -#: plugins/sudoers/def_data.c:374 +#: plugins/sudoers/def_data.c:382 #, c-format msgid "Set of permitted privileges: %s" msgstr "권한 허용 설정: %s" -#: plugins/sudoers/def_data.c:378 +#: plugins/sudoers/def_data.c:386 #, c-format msgid "Set of limit privileges: %s" msgstr "권한 제한 설정: %s" -#: plugins/sudoers/def_data.c:382 +#: plugins/sudoers/def_data.c:390 msgid "Run commands on a pty in the background" msgstr "백그라운드의 pty에서 명령을 실행합니다" -#: plugins/sudoers/def_data.c:386 +#: plugins/sudoers/def_data.c:394 #, c-format msgid "PAM service name to use: %s" msgstr "사용할 PAM 서비스 이름: %s" -#: plugins/sudoers/def_data.c:390 +#: plugins/sudoers/def_data.c:398 #, c-format msgid "PAM service name to use for login shells: %s" msgstr "로그인 셸에서 사용할 PAM 서비스 이름: %s" -#: plugins/sudoers/def_data.c:394 +#: plugins/sudoers/def_data.c:402 msgid "Attempt to establish PAM credentials for the target user" msgstr "대상 사용자의 PAM 인증 처리 시도합니다" -#: plugins/sudoers/def_data.c:398 +#: plugins/sudoers/def_data.c:406 msgid "Create a new PAM session for the command to run in" msgstr "실행할 명령에 새 PAM 세션을 만듭니다" -#: plugins/sudoers/def_data.c:402 +#: plugins/sudoers/def_data.c:410 msgid "Perform PAM account validation management" msgstr "PAM 계정 검증 관리를 수행합니다" -#: plugins/sudoers/def_data.c:406 +#: plugins/sudoers/def_data.c:414 #, c-format msgid "Maximum I/O log sequence number: %s" msgstr "최대 입출력 로그 순차 번호: %s" -#: plugins/sudoers/def_data.c:410 +#: plugins/sudoers/def_data.c:418 msgid "Enable sudoers netgroup support" msgstr "sudoers에 네트워크 그룹 지원 활성화" -#: plugins/sudoers/def_data.c:414 +#: plugins/sudoers/def_data.c:422 msgid "Check parent directories for writability when editing files with sudoedit" msgstr "sudoedit로 파일을 편집할 때 상위 디렉터리 기록 가능 여부 확인" -#: plugins/sudoers/def_data.c:418 +#: plugins/sudoers/def_data.c:426 msgid "Follow symbolic links when editing files with sudoedit" msgstr "sudoedit로 파일을 편집할 때 심볼릭 링크 따라감" -#: plugins/sudoers/def_data.c:422 +#: plugins/sudoers/def_data.c:430 msgid "Query the group plugin for unknown system groups" msgstr "알 수 없는 시스템 그룹에 그룹 플러그인 요청" -#: plugins/sudoers/def_data.c:426 +#: plugins/sudoers/def_data.c:434 msgid "Match netgroups based on the entire tuple: user, host and domain" msgstr "user, host, domain 전체 튜플을 기반으로 네트워크 그룹 비교" -#: plugins/sudoers/def_data.c:430 +#: plugins/sudoers/def_data.c:438 msgid "Allow commands to be run even if sudo cannot write to the audit log" msgstr "sudo에서 감시 로그를 기록할 수 없을 경우에도 명령 실행 허용" -#: plugins/sudoers/def_data.c:434 +#: plugins/sudoers/def_data.c:442 msgid "Allow commands to be run even if sudo cannot write to the I/O log" msgstr "sudo에서 입출력 로그를 기록할 수 없을 경우에도 명령 실행 허용" -#: plugins/sudoers/def_data.c:438 +#: plugins/sudoers/def_data.c:446 msgid "Allow commands to be run even if sudo cannot write to the log file" msgstr "sudo에서 로그 파일에 기록할 수 없을 경우에도 명령 실행 허용" -#: plugins/sudoers/def_data.c:442 +#: plugins/sudoers/def_data.c:450 msgid "Resolve groups in sudoers and match on the group ID, not the name" msgstr "sudoers의 그룹을 해석하고 그룹 이름이 아닌 ID와 비교" -#: plugins/sudoers/def_data.c:446 +#: plugins/sudoers/def_data.c:454 #, c-format msgid "Log entries larger than this value will be split into multiple syslog messages: %u" msgstr "이 값보다 큰 로그 항목은 다수의 syslog 메시지로 나눕니다: %u" -#: plugins/sudoers/def_data.c:450 +#: plugins/sudoers/def_data.c:458 #, c-format msgid "User that will own the I/O log files: %s" msgstr "입출력 로그 파일을 소유할 사용자: %s" -#: plugins/sudoers/def_data.c:454 +#: plugins/sudoers/def_data.c:462 #, c-format msgid "Group that will own the I/O log files: %s" msgstr "입출력 로그 파일을 소유할 그룹: %s" -#: plugins/sudoers/def_data.c:458 +#: plugins/sudoers/def_data.c:466 #, c-format msgid "File mode to use for the I/O log files: 0%o" msgstr "입출력 로그 파일에 사용할 파일 모드: 0%o" -#: plugins/sudoers/def_data.c:462 +#: plugins/sudoers/def_data.c:470 #, c-format msgid "Execute commands by file descriptor instead of by path: %s" msgstr "경로가 아닌 파일 서술자로 명령어 실행: %s" -#: plugins/sudoers/def_data.c:466 +#: plugins/sudoers/def_data.c:474 msgid "Ignore unknown Defaults entries in sudoers instead of producing a warning" msgstr "경고를 출력하는 대신 sudoers에서 알 수 없는 기본 항목을 무시" -#: plugins/sudoers/def_data.c:470 +#: plugins/sudoers/def_data.c:478 #, c-format msgid "Time in seconds after which the command will be terminated: %u" msgstr "명령 처리가 끝난 후의 초 단위 시간: %u" -#: plugins/sudoers/def_data.c:474 +#: plugins/sudoers/def_data.c:482 msgid "Allow the user to specify a timeout on the command line" msgstr "사용자가 명령행에서 제한 시간을 지정하도록 허용" -#: plugins/sudoers/def_data.c:478 +#: plugins/sudoers/def_data.c:486 msgid "Flush I/O log data to disk immediately instead of buffering it" msgstr "입출력 로그 데이터를 버퍼링하는 대신 즉시 디스크로 플러싱" -#: plugins/sudoers/def_data.c:482 +#: plugins/sudoers/def_data.c:490 msgid "Include the process ID when logging via syslog" msgstr "syslog로 로깅할 때 프로세스 ID 포함" -#: plugins/sudoers/def_data.c:486 +#: plugins/sudoers/def_data.c:494 #, c-format msgid "Type of authentication timestamp record: %s" msgstr "인증 타임스탬프 레코드 형식: %s" -#: plugins/sudoers/def_data.c:490 +#: plugins/sudoers/def_data.c:498 #, c-format msgid "Authentication failure message: %s" msgstr "인증 실패 메시지: %s" -#: plugins/sudoers/def_data.c:494 +#: plugins/sudoers/def_data.c:502 msgid "Ignore case when matching user names" msgstr "사용자 이름 비교시 대소문자 무시" -#: plugins/sudoers/def_data.c:498 +#: plugins/sudoers/def_data.c:506 msgid "Ignore case when matching group names" msgstr "그룹 이름 비교시 대소문자 무시" -#: plugins/sudoers/def_data.c:502 +#: plugins/sudoers/def_data.c:510 msgid "Log when a command is allowed by sudoers" msgstr "sudoers에서 명령을 허용할 때 기록" -#: plugins/sudoers/def_data.c:506 +#: plugins/sudoers/def_data.c:514 msgid "Log when a command is denied by sudoers" msgstr "sudoers에서 명령을 거절할 때 기록" -#: plugins/sudoers/def_data.c:510 +#: plugins/sudoers/def_data.c:518 msgid "Sudo log server(s) to connect to with optional port" msgstr "개별 포트 정보를 추가하여 연결할 sudo 로그 서버" -#: plugins/sudoers/def_data.c:514 +#: plugins/sudoers/def_data.c:522 #, c-format msgid "Sudo log server timeout in seconds: %u" msgstr "초 단위 sudo 로그 서버 제한 시간: %u" -#: plugins/sudoers/def_data.c:518 +#: plugins/sudoers/def_data.c:526 msgid "Enable SO_KEEPALIVE socket option on the socket connected to the logserver" msgstr "연결한 로그 서버 소켓에 SO_KEEPALIVE 소켓 옵션 활성화" -#: plugins/sudoers/def_data.c:522 +#: plugins/sudoers/def_data.c:530 #, c-format msgid "Path to the audit server's CA bundle file: %s" msgstr "감사 서버의 CA 번들 파일 경로: %s" -#: plugins/sudoers/def_data.c:526 +#: plugins/sudoers/def_data.c:534 #, c-format msgid "Path to the sudoers certificate file: %s" msgstr "sudoers 인증 파일 경로: %s" -#: plugins/sudoers/def_data.c:530 +#: plugins/sudoers/def_data.c:538 #, c-format msgid "Path to the sudoers private key file: %s" msgstr "sudoers 개인 키 파일 경로: %s" -#: plugins/sudoers/def_data.c:534 +#: plugins/sudoers/def_data.c:542 msgid "Verify that the log server's certificate is valid" msgstr "로그 서버 인증서 유효성 검증" -#: plugins/sudoers/def_data.c:538 +#: plugins/sudoers/def_data.c:546 msgid "Allow the use of unknown runas user and/or group ID" msgstr "사용자/그룹 ID로의 알 수 없는 실행 허용" -#: plugins/sudoers/def_data.c:542 +#: plugins/sudoers/def_data.c:550 msgid "Only permit running commands as a user with a valid shell" msgstr "유효한 셸에서 사용자가 명령을 실행할 경우만 허용" -#: plugins/sudoers/def_data.c:546 +#: plugins/sudoers/def_data.c:554 msgid "Set the pam remote user to the user running sudo" msgstr "sudo를 실행하는 사용자를 PAM 원격 사용자로 설정" -#: plugins/sudoers/def_data.c:550 +#: plugins/sudoers/def_data.c:558 msgid "Set the pam remote host to the local host name" msgstr "로컬 호스트 이름에 PAM 원격 사용자 설정" -#: plugins/sudoers/defaults.c:183 +#: plugins/sudoers/def_data.c:562 #, c-format -msgid "%s:%d unknown defaults entry \"%s\"" -msgstr "%s:%d 알 수 없는 \"%s\" 기본 항목" +msgid "Working directory to change to before executing the command: %s" +msgstr "명령 실행 전 바꿀 작업 디렉터리: %s" -#: plugins/sudoers/defaults.c:186 +#: plugins/sudoers/def_data.c:566 #, c-format -msgid "%s: unknown defaults entry \"%s\"" -msgstr "%s: 알 수 없는 \"%s\" 기본 항목" +msgid "Root directory to change to before executing the command: %s" +msgstr "명령 실행 전 바꿀 루트 디렉터리: %s" -#: plugins/sudoers/defaults.c:229 +#: plugins/sudoers/def_data.c:570 #, c-format -msgid "%s:%d no value specified for \"%s\"" -msgstr "%s:%d \"%s\"에 지정한 값이 없습니다" +msgid "The format of logs to produce: %s" +msgstr "로그 기록 형식: %s" -#: plugins/sudoers/defaults.c:232 +#: plugins/sudoers/defaults.c:185 #, c-format -msgid "%s: no value specified for \"%s\"" -msgstr "%s: \"%s\"에 지정한 값이 없습니다" +msgid "%s:%d:%d: unknown defaults entry \"%s\"" +msgstr "%s:%d:%d: 알 수 없는 \"%s\" 기본 항목" + +#: plugins/sudoers/defaults.c:188 +#, c-format +msgid "%s: unknown defaults entry \"%s\"" +msgstr "%s: 알 수 없는 \"%s\" 기본 항목" -#: plugins/sudoers/defaults.c:252 +#: plugins/sudoers/defaults.c:234 #, c-format -msgid "%s:%d values for \"%s\" must start with a '/'" -msgstr "%s:%d \"%s\" 값은 '/' 문자로 시작해야합니다" +msgid "%s:%d:%d: no value specified for \"%s\"" +msgstr "%s:%d:%d \"%s\"에 지정한 값이 없습니다" -#: plugins/sudoers/defaults.c:255 +#: plugins/sudoers/defaults.c:237 #, c-format -msgid "%s: values for \"%s\" must start with a '/'" -msgstr "%s: \"%s\" 값은 '/' 문자로 시작해야합니다" +msgid "%s: no value specified for \"%s\"" +msgstr "%s: \"%s\"에 지정한 값이 없습니다" -#: plugins/sudoers/defaults.c:277 +#: plugins/sudoers/defaults.c:275 #, c-format -msgid "%s:%d option \"%s\" does not take a value" -msgstr "%s:%d \"%s\" 옵션에 값이 없습니다" +msgid "%s:%d:%d: option \"%s\" does not take a value" +msgstr "%s:%d:%d: \"%s\" 옵션에 값이 없습니다" -#: plugins/sudoers/defaults.c:280 +#: plugins/sudoers/defaults.c:278 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s: \"%s\" 옵션에 값이 없습니다" -#: plugins/sudoers/defaults.c:305 +#: plugins/sudoers/defaults.c:303 #, c-format -msgid "%s:%d invalid Defaults type 0x%x for option \"%s\"" -msgstr "%1$s:%2$d \"%4$s\" 옵션의 잘못된 기본 형식 0x%3$x" +msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" +msgstr "%1$s:%2$d:%3$d \"%5$s\" 옵션의 잘못된 기본 형식 0x%4$x" -#: plugins/sudoers/defaults.c:308 +#: plugins/sudoers/defaults.c:306 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%1$s: \"%3$s\" 옵션의 잘못된 기본 형식 0x%2$x" -#: plugins/sudoers/defaults.c:318 +#: plugins/sudoers/defaults.c:316 #, c-format -msgid "%s:%d value \"%s\" is invalid for option \"%s\"" -msgstr "%s:%d \"%s\" 값은 \"%s\" 옵션에 맞지 않습니다" +msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" +msgstr "%s:%d:%d: \"%s\" 값은 \"%s\" 옵션에 맞지 않습니다" -#: plugins/sudoers/defaults.c:321 +#: plugins/sudoers/defaults.c:319 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s: \"%s\" 값은 \"%s\" 옵션에 맞지 않습니다" -#: plugins/sudoers/env.c:404 +#: plugins/sudoers/defaults.c:1030 +#, c-format +msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" +msgstr "%s:%d:%d: \"%s\" 값은 '/'; '~'; '*' 문자로 시작해야합니다" + +#: plugins/sudoers/defaults.c:1034 +#, c-format +msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" +msgstr "%s: \"%s\" 값은 '/'; '~'; '*' 문자로 시작해야합니다" + +#: plugins/sudoers/defaults.c:1045 +#, c-format +msgid "%s:%d:%d: values for \"%s\" must start with a '/'" +msgstr "%s:%d:%d: \"%s\" 값은 '/' 문자로 시작해야합니다" + +#: plugins/sudoers/defaults.c:1049 +#, c-format +msgid "%s: values for \"%s\" must start with a '/'" +msgstr "%s: \"%s\" 값은 '/' 문자로 시작해야합니다" + +#: plugins/sudoers/env.c:405 msgid "sudo_putenv: corrupted envp, length mismatch" msgstr "sudo_putenv: envp가 깨졌습니다. 길이가 일치하지 않습니다" -#: plugins/sudoers/env.c:1131 +#: plugins/sudoers/env.c:1133 msgid "unable to rebuild the environment" msgstr "환경 구성을 다시 갖출 수 없습니다" -#: plugins/sudoers/env.c:1205 +#: plugins/sudoers/env.c:1207 #, c-format msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "죄송하지만 다음 환경 변수를 설정하도록 허가받지 않았습니다: %s" -#: plugins/sudoers/file.c:104 +#: plugins/sudoers/file.c:107 #, c-format msgid "parse error in %s near line %d" msgstr "%s %d번째 줄에서 해석 오류" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:110 #, c-format msgid "parse error in %s" msgstr "%s 해석 오류" @@ -1927,7 +2013,7 @@ msgid "%s must only be writable by owner" msgstr "%s은(는) 소유자만 쓸 수 있습니다" -#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:571 +#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:569 #, c-format msgid "unable to load %s: %s" msgstr "%s을(를) 불러올 수 없습니다: %s" @@ -1956,122 +2042,78 @@ msgid "Local IP address and netmask pairs:\n" msgstr "로컬 IP 주소 및 넷마스크 쌍:\n" -#: plugins/sudoers/iolog.c:142 plugins/sudoers/sudoers.c:393 -#: plugins/sudoers/sudoers.c:394 plugins/sudoers/sudoers.c:1274 -#: plugins/sudoers/testsudoers.c:416 +#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410 #, c-format msgid "unknown group: %s" msgstr "잘못된 그룹: %s" -#: plugins/sudoers/iolog.c:517 plugins/sudoers/iolog.c:807 -#: plugins/sudoers/iolog.c:959 plugins/sudoers/iolog.c:966 -#: plugins/sudoers/iolog.c:1087 plugins/sudoers/iolog.c:1094 -#: plugins/sudoers/iolog.c:1193 plugins/sudoers/iolog.c:1200 +#: plugins/sudoers/iolog.c:622 +msgid "unable to update sequence file" +msgstr "시퀀스 파일을 업데이트할 수 없습니다" + +#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841 +#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001 +#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129 +#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235 #, c-format msgid "unable to write to I/O log file: %s" msgstr "입출력 로그에 기록할 수 없습니다: %s" -#: plugins/sudoers/iolog.c:566 -msgid "unable to update sequence file" -msgstr "시퀀스 파일을 업데이트할 수 없습니다" - -#: plugins/sudoers/iolog.c:605 +#: plugins/sudoers/iolog.c:661 #, c-format msgid "unable to create %s/%s" msgstr "%s/%s을(를) 만들 수 없습니다" -#: plugins/sudoers/iolog.c:631 -msgid "unable to connect to log server" -msgstr "로그 서버에 연결할 수 없습니다" - -#: plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:886 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: 내부 오류. 이벤트 %d 번의 입출력 로그 파일을 열지 않았습니다" -#: plugins/sudoers/iolog.c:944 plugins/sudoers/iolog.c:1072 -#: plugins/sudoers/iolog.c:1177 plugins/sudoers/timestamp.c:855 -#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:492 -#: plugins/sudoers/visudo.c:498 +#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107 +#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855 +#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493 +#: plugins/sudoers/visudo.c:499 msgid "unable to read the clock" msgstr "클록을 읽을 수 없습니다" -#: plugins/sudoers/iolog.c:1169 plugins/sudoers/iolog_client.c:977 +#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: 내부 오류. 잘못된 시그널 %d번" -#: plugins/sudoers/iolog_client.c:113 plugins/sudoers/iolog_client.c:392 -#: plugins/sudoers/iolog_client.c:1200 plugins/sudoers/iolog_client.c:1775 -msgid "error in event loop" -msgstr "이벤트 루프 오류" - -#: plugins/sudoers/iolog_client.c:194 -#, c-format -msgid "Creation of new SSL_CTX object failed: %s" -msgstr "SSL_CTX 객체 만들기 실패: %s" - -#: plugins/sudoers/iolog_client.c:346 plugins/sudoers/iolog_client.c:351 -#, c-format -msgid "TLS connection to %s:%s failed: %s" -msgstr "%s:%s로의 TLS 연결 실패: %s" - -#: plugins/sudoers/iolog_client.c:496 -msgid "TLS initialization was unsuccessful" -msgstr "TLS 초기화에 실패했습니다" - -#: plugins/sudoers/iolog_client.c:505 -msgid "TLS handshake was unsuccessful" -msgstr "TLS 핸드셰이킹에 실패했습니다" - -#: plugins/sudoers/iolog_client.c:767 plugins/sudoers/iolog_client.c:959 -msgid "unable to get time of day" -msgstr "일시 정보를 가져올 수 없습니다" - -#: plugins/sudoers/iolog_client.c:986 -#, c-format -msgid "%s: internal error, invalid exit status %d" -msgstr "%s: 내부 오류. 잘못된 시그널 %d" - -#: plugins/sudoers/iolog_client.c:1523 -msgid "lost connection to log server" -msgstr "로그 서버의 연결이 끊어졌습니다" - -#: plugins/sudoers/iolog_client.c:1600 -msgid "missing write buffer" -msgstr "기록 버퍼 빠짐" - -#: plugins/sudoers/ldap.c:176 plugins/sudoers/ldap_conf.c:291 +#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:291 msgid "starttls not supported when using ldaps" msgstr "ldaps를 사용할 때 starttls를 지원하지 않습니다" -#: plugins/sudoers/ldap.c:247 +#: plugins/sudoers/ldap.c:248 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "SSL 인증서 및 키 DB를 초기화할 수 없습니다: %s" -#: plugins/sudoers/ldap.c:250 +#: plugins/sudoers/ldap.c:251 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "SSL을 사용하려면 %s에서 TLS_CERT를 설정해야 합니다" -#: plugins/sudoers/ldap.c:1658 +#: plugins/sudoers/ldap.c:1660 #, c-format msgid "unable to initialize LDAP: %s" msgstr "LDAP를 초기화할 수 없습니다: %s" -#: plugins/sudoers/ldap.c:1694 +#: plugins/sudoers/ldap.c:1697 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:1831 plugins/sudoers/parse_ldif.c:744 +#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "잘못된 sudoOrder 속성: %s" #: plugins/sudoers/ldap_conf.c:200 -msgid "sudo_ldap_conf_add_ports: port too large" -msgstr "sudo_ldap_conf_add_ports: 포트 값이 너무 큽니다" +#, c-format +msgid "%s: port too large" +msgstr "%s: 포트 번호가 너무 큽니다" #: plugins/sudoers/ldap_conf.c:260 #, c-format @@ -2082,7 +2124,7 @@ msgid "unable to mix ldap and ldaps URIs" msgstr "ldap 및 ldaps URI를 함께 사용할 수 없습니다" -#: plugins/sudoers/ldap_util.c:548 plugins/sudoers/ldap_util.c:550 +#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "sudoOption을 변환할 수 없습니다: %s%s%s" @@ -2091,66 +2133,91 @@ msgid "unable to open audit system" msgstr "감시 시스템을 열 수 없습니다" -#: plugins/sudoers/linux_audit.c:100 +#: plugins/sudoers/linux_audit.c:101 msgid "unable to send audit message" msgstr "감시 메시지를 보낼 수 없습니다" -#: plugins/sudoers/logging.c:167 +#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 +#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023 +msgid "error in event loop" +msgstr "이벤트 루프 오류" + +#: plugins/sudoers/log_client.c:193 #, c-format -msgid "unable to open log file: %s" -msgstr "로그 파일을 열 수 없습니다: %s" +msgid "Creation of new SSL_CTX object failed: %s" +msgstr "SSL_CTX 객체 만들기 실패: %s" -#: plugins/sudoers/logging.c:175 +#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 #, c-format -msgid "unable to lock log file: %s" -msgstr "로그 파일을 잠글 수 없습니다: %s" +msgid "TLS connection to %s:%s failed: %s" +msgstr "%s:%s로의 TLS 연결 실패: %s" + +#: plugins/sudoers/log_client.c:519 +msgid "TLS initialization was unsuccessful" +msgstr "TLS 초기화에 실패했습니다" -#: plugins/sudoers/logging.c:208 +#: plugins/sudoers/log_client.c:528 +msgid "TLS handshake was unsuccessful" +msgstr "TLS 핸드셰이킹에 실패했습니다" + +#: plugins/sudoers/log_client.c:1202 #, c-format -msgid "unable to write log file: %s" -msgstr "로그 파일에 기록할 수 없습니다: %s" +msgid "%s: internal error, invalid exit status %d" +msgstr "%s: 내부 오류. 잘못된 시그널 %d" -#: plugins/sudoers/logging.c:241 +#: plugins/sudoers/log_client.c:1738 +msgid "lost connection to log server" +msgstr "로그 서버의 연결이 끊어졌습니다" + +#: plugins/sudoers/log_client.c:1815 +msgid "missing write buffer" +msgstr "기록 버퍼 빠짐" + +#: plugins/sudoers/log_client.c:1964 +msgid "unable to connect to log server" +msgstr "로그 서버에 연결할 수 없습니다" + +#: plugins/sudoers/logging.c:244 msgid "user NOT in sudoers" msgstr "사용자가 sudoers에 없습니다" -#: plugins/sudoers/logging.c:243 +#: plugins/sudoers/logging.c:246 msgid "user NOT authorized on host" msgstr "사용자가 호스트에서 인증하지 않았습니다" -#: plugins/sudoers/logging.c:245 +#: plugins/sudoers/logging.c:248 msgid "command not allowed" msgstr "명령을 허용하지 않았습니다" -#: plugins/sudoers/logging.c:288 +#: plugins/sudoers/logging.c:269 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s은(는) sudoers 설정 파일에 없습니다. 이 시도를 보고합니다.\n" -#: plugins/sudoers/logging.c:291 +#: plugins/sudoers/logging.c:272 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s은(는) %s에서 sudo를 실행하도록 허가받지 않았습니다. 이 시도를 보고합니다.\n" -#: plugins/sudoers/logging.c:295 +#: plugins/sudoers/logging.c:276 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "죄송하지만, %s 사용자는 %s에서 sudo를 실행하면 안됩니다.\n" -#: plugins/sudoers/logging.c:298 +#: plugins/sudoers/logging.c:279 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "죄송하지만 %1$s 사용자는 '%2$s%3$s%4$s'을(를) %8$s의 %5$s%6$s%7$s(으)로 실행하도록 허가받지 않았습니다.\n" -#: plugins/sudoers/logging.c:335 plugins/sudoers/sudoers.c:512 -#: plugins/sudoers/sudoers.c:514 plugins/sudoers/sudoers.c:516 -#: plugins/sudoers/sudoers.c:518 plugins/sudoers/sudoers.c:665 -#: plugins/sudoers/sudoers.c:667 +#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583 +#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587 +#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739 +#: plugins/sudoers/sudoers.c:741 #, c-format msgid "%s: command not found" msgstr "%s: 명령이 없습니다" -#: plugins/sudoers/logging.c:337 plugins/sudoers/sudoers.c:508 +#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2159,46 +2226,36 @@ "'.'에 무시 중인 \"%1$s\" 요소가 있습니다.\n" "\"%3$s\" 명령을 실행하려면, \"sudo ./%2$s\" 명령을 사용하십시오." -#: plugins/sudoers/logging.c:354 -msgid "authentication failure" -msgstr "인증 실패" - -#: plugins/sudoers/logging.c:380 -msgid "a password is required" -msgstr "암호가 필요합니다" - -#: plugins/sudoers/logging.c:450 +#: plugins/sudoers/logging.c:337 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "잘못된 암호 입력 시도 %u번" -#: plugins/sudoers/logging.c:714 -#, c-format -msgid "unable to dup stdin: %m" -msgstr "표준 입력을 복제할 수 없습니다: %m" +#: plugins/sudoers/logging.c:393 +msgid "authentication failure" +msgstr "인증 실패" -#: plugins/sudoers/logging.c:751 -#, c-format -msgid "unable to execute %s: %m" -msgstr "%s을(를) 실행할 수 없습니다: %m" +#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +msgid "a password is required" +msgstr "암호가 필요합니다" -#: plugins/sudoers/logging.c:792 plugins/sudoers/logging.c:848 +#: plugins/sudoers/logging.c:729 #, c-format -msgid "unable to fork: %m" -msgstr "포킹할 수 없습니다: %m" +msgid "unable to open log file: %s" +msgstr "로그 파일을 열 수 없습니다: %s" -#: plugins/sudoers/logging.c:838 +#: plugins/sudoers/logging.c:762 #, c-format -msgid "unable to open pipe: %m" -msgstr "파이프를 열 수 없습니다: %m" +msgid "unable to write log file: %s" +msgstr "로그 파일에 기록할 수 없습니다: %s" -#: plugins/sudoers/match_digest.c:116 +#: plugins/sudoers/match_digest.c:129 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "%s 다이제스트(%s)는 %s 형식이 아닙니다" -#: plugins/sudoers/parse.c:442 +#: plugins/sudoers/parse.c:518 #, c-format msgid "" "\n" @@ -2207,8 +2264,7 @@ "\n" "LDAP 역할: %s\n" -#: plugins/sudoers/parse.c:445 -#, c-format +#: plugins/sudoers/parse.c:521 msgid "" "\n" "Sudoers entry:\n" @@ -2216,42 +2272,38 @@ "\n" "Sudoers 항목:\n" -#: plugins/sudoers/parse.c:447 -#, c-format +#: plugins/sudoers/parse.c:523 msgid " RunAsUsers: " msgstr " 실행 사용자: " -#: plugins/sudoers/parse.c:462 -#, c-format +#: plugins/sudoers/parse.c:538 msgid " RunAsGroups: " msgstr " 실행 그룹: " -#: plugins/sudoers/parse.c:472 -#, c-format +#: plugins/sudoers/parse.c:548 msgid " Options: " msgstr " 옵션: " -#: plugins/sudoers/parse.c:522 -#, c-format +#: plugins/sudoers/parse.c:602 msgid " Commands:\n" msgstr " 명령:\n" -#: plugins/sudoers/parse.c:713 +#: plugins/sudoers/parse.c:793 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "%2$s에서 %1$s에 일치하는 기본 항목:\n" -#: plugins/sudoers/parse.c:731 +#: plugins/sudoers/parse.c:811 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "%s의 실행 권한 및 명령별 기본 값:\n" -#: plugins/sudoers/parse.c:749 +#: plugins/sudoers/parse.c:829 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "%s 사용자는 %s에서 다음 명령을 실행해야 합니다:\n" -#: plugins/sudoers/parse.c:764 +#: plugins/sudoers/parse.c:844 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "%s 사용자는 %s에서 sudo를 실행하도록 허가받지 않았습니다.\n" @@ -2266,48 +2318,58 @@ msgid "invalid LDIF attribute: %s" msgstr "잘못된 LDIF 속성: %s" -#: plugins/sudoers/policy.c:77 plugins/sudoers/policy.c:102 +#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "sudo 프론트엔드의 %.*s 설정이 잘못되었습니다" -#: plugins/sudoers/policy.c:281 plugins/sudoers/testsudoers.c:272 +#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272 msgid "unable to parse network address list" msgstr "네트워크 주소 목록을 해석할 수 없습니다" -#: plugins/sudoers/policy.c:426 +#: plugins/sudoers/policy.c:455 msgid "user name not set by sudo front-end" msgstr "sudo 프론트엔드에서 사용자 이름을 설정하지 않았습니다" -#: plugins/sudoers/policy.c:430 +#: plugins/sudoers/policy.c:459 msgid "user-ID not set by sudo front-end" msgstr "sudo 프론트엔드에서 사용자 ID를 설정하지 않았습니다" -#: plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:463 msgid "group-ID not set by sudo front-end" msgstr "sudo 프론트엔드에서 그룹 ID를 지정하지 않았습니다" -#: plugins/sudoers/policy.c:438 +#: plugins/sudoers/policy.c:467 msgid "host name not set by sudo front-end" msgstr "sudo 프론트엔드에서 호스트 이름을 설정하지 않았습니다" -#: plugins/sudoers/policy.c:896 plugins/sudoers/visudo.c:230 -#: plugins/sudoers/visudo.c:861 +#: plugins/sudoers/policy.c:643 +#, c-format +msgid "invalid working directory: %s" +msgstr "잘못된 작업 디렉터리: %s" + +#: plugins/sudoers/policy.c:811 +#, c-format +msgid "invalid chroot directory: %s" +msgstr "잘못된 루트 변경 디렉터리: %s" + +#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231 +#: plugins/sudoers/visudo.c:860 #, c-format msgid "unable to execute %s" msgstr "%s을(를) 실행할 수 없습니다" -#: plugins/sudoers/policy.c:1060 +#: plugins/sudoers/policy.c:1111 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Sudoers 정책 플러그인 버전 %s\n" -#: plugins/sudoers/policy.c:1062 +#: plugins/sudoers/policy.c:1113 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Sudoers 파일 문법 버전 %d\n" -#: plugins/sudoers/policy.c:1066 +#: plugins/sudoers/policy.c:1117 #, c-format msgid "" "\n" @@ -2316,86 +2378,86 @@ "\n" "Sudoers 경로: %s\n" -#: plugins/sudoers/policy.c:1069 +#: plugins/sudoers/policy.c:1120 #, c-format msgid "nsswitch path: %s\n" msgstr "nsswitch 경로: %s\n" -#: plugins/sudoers/policy.c:1071 +#: plugins/sudoers/policy.c:1122 #, c-format msgid "ldap.conf path: %s\n" msgstr "ldap.conf 경로: %s\n" -#: plugins/sudoers/policy.c:1072 +#: plugins/sudoers/policy.c:1123 #, c-format msgid "ldap.secret path: %s\n" msgstr "ldap.secret 경로: %s\n" -#: plugins/sudoers/policy.c:1105 +#: plugins/sudoers/policy.c:1156 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "%d 형식의 후크를 등록할 수 없습니다(버전 %d.%d)" -#: plugins/sudoers/pwutil.c:214 plugins/sudoers/pwutil.c:232 +#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235 #, c-format msgid "unable to cache uid %u" msgstr "%u uid를 캐시에 적재할 수 없습니다" -#: plugins/sudoers/pwutil.c:226 +#: plugins/sudoers/pwutil.c:229 #, c-format msgid "unable to cache uid %u, already exists" msgstr "%u uid를 캐시에 적재할 수 없습니다. 이미 존재합니다." -#: plugins/sudoers/pwutil.c:286 plugins/sudoers/pwutil.c:304 -#: plugins/sudoers/pwutil.c:367 plugins/sudoers/pwutil.c:412 +#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307 +#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415 #, c-format msgid "unable to cache user %s" msgstr "%s 사용자를 캐시에 적재할 수 없습니다" -#: plugins/sudoers/pwutil.c:299 +#: plugins/sudoers/pwutil.c:302 #, c-format msgid "unable to cache user %s, already exists" msgstr "%s 사용자를 캐시에 적재할 수 없습니다. 이미 존재합니다." -#: plugins/sudoers/pwutil.c:531 plugins/sudoers/pwutil.c:549 +#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552 #, c-format msgid "unable to cache gid %u" msgstr "%u GID를 캐시에 적재할 수 없습니다" -#: plugins/sudoers/pwutil.c:543 +#: plugins/sudoers/pwutil.c:546 #, c-format msgid "unable to cache gid %u, already exists" msgstr "%u gid를 캐시에 적재할 수 없습니다. 이미 존재합니다." -#: plugins/sudoers/pwutil.c:596 plugins/sudoers/pwutil.c:614 -#: plugins/sudoers/pwutil.c:662 plugins/sudoers/pwutil.c:704 +#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617 +#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707 #, c-format msgid "unable to cache group %s" msgstr "%s 그룹을 캐시에 적재할 수 없습니다" -#: plugins/sudoers/pwutil.c:609 +#: plugins/sudoers/pwutil.c:612 #, c-format msgid "unable to cache group %s, already exists" msgstr "%s 그룹을 캐시에 적재할 수 없습니다. 이미 존재합니다." -#: plugins/sudoers/pwutil.c:831 plugins/sudoers/pwutil.c:883 -#: plugins/sudoers/pwutil.c:933 plugins/sudoers/pwutil.c:986 +#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885 +#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987 #, c-format msgid "unable to cache group list for %s, already exists" msgstr "%s 그룹 목록을 캐시에 적재할 수 없습니다. 이미 존재합니다." -#: plugins/sudoers/pwutil.c:837 plugins/sudoers/pwutil.c:888 -#: plugins/sudoers/pwutil.c:939 plugins/sudoers/pwutil.c:991 +#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890 +#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992 #, c-format msgid "unable to cache group list for %s" msgstr "%s 그룹 목록을 캐시에 적재할 수 없습니다" -#: plugins/sudoers/pwutil.c:877 +#: plugins/sudoers/pwutil.c:879 #, c-format msgid "unable to parse groups for %s" msgstr "%s 그룹을 해석할 수 없습니다" -#: plugins/sudoers/pwutil.c:980 +#: plugins/sudoers/pwutil.c:981 #, c-format msgid "unable to parse gids for %s" msgstr "%s 그룹 ID를 해석할 수 없습니다" @@ -2459,239 +2521,259 @@ msgid "truncated audit path argv[0]: %s" msgstr "argv[0] 감사 경로가 잘렸습니다: %s" -#: plugins/sudoers/sssd.c:573 +#: plugins/sudoers/sssd.c:572 msgid "unable to initialize SSS source. Is SSSD installed on your machine?" msgstr "SSS 소스를 초기화할 수 없습니다. 머신에 SSSD를 설치했습니까?" -#: plugins/sudoers/sssd.c:581 plugins/sudoers/sssd.c:590 -#: plugins/sudoers/sssd.c:599 plugins/sudoers/sssd.c:608 -#: plugins/sudoers/sssd.c:617 +#: plugins/sudoers/sssd.c:580 plugins/sudoers/sssd.c:589 +#: plugins/sudoers/sssd.c:598 plugins/sudoers/sssd.c:607 +#: plugins/sudoers/sssd.c:616 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "%2$s에서 \"%1$s\" 심볼을 찾을 수 없습니다" -#: plugins/sudoers/sudoers.c:217 plugins/sudoers/sudoers.c:943 +#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010 msgid "problem with defaults entries" msgstr "기본 항목에 문제 발생" -#: plugins/sudoers/sudoers.c:221 +#: plugins/sudoers/sudoers.c:218 msgid "no valid sudoers sources found, quitting" msgstr "올바른 sudoers 설정 원본이 없습니다. 나갑니다." -#: plugins/sudoers/sudoers.c:297 +#: plugins/sudoers/sudoers.c:292 +#, c-format +msgid "user not allowed to change root directory to %s" +msgstr "%s 를 루트 디렉터리로 변환하도록 허용하지 않습니다" + +#: plugins/sudoers/sudoers.c:294 +#, c-format +msgid "you are not permitted to use the -R option with %s" +msgstr "-R 옵션과 %s 옵션의 병행 사용을 허가받지 않았습니다" + +#: plugins/sudoers/sudoers.c:319 +#, c-format +msgid "user not allowed to change directory to %s" +msgstr "%s 디렉터리로의 변경을 허용하지 않습니다" + +#: plugins/sudoers/sudoers.c:320 +#, c-format +msgid "you are not permitted to use the -D option with %s" +msgstr "-D 옵션과 %s 옵션의 병행 사용을 허가받지 않았습니다" + +#: plugins/sudoers/sudoers.c:351 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers에서 root가 sudo를 실행하지 못하게 지정했습니다" -#: plugins/sudoers/sudoers.c:357 +#: plugins/sudoers/sudoers.c:411 msgid "user not allowed to override closefrom limit" msgstr "사용자가 closefrom 제한 값을 따로 적용하도록 허용하지 않았습니다" -#: plugins/sudoers/sudoers.c:358 +#: plugins/sudoers/sudoers.c:412 msgid "you are not permitted to use the -C option" msgstr "-C 옵션 사용을 허가받지 않았습니다" -#: plugins/sudoers/sudoers.c:420 +#: plugins/sudoers/sudoers.c:472 #, c-format msgid "timestamp owner (%s): No such user" msgstr "타임스탬프 소유자(%s): 사용자 없음" -#: plugins/sudoers/sudoers.c:435 +#: plugins/sudoers/sudoers.c:487 msgid "no tty" msgstr "tty 없음" -#: plugins/sudoers/sudoers.c:436 +#: plugins/sudoers/sudoers.c:488 msgid "sorry, you must have a tty to run sudo" msgstr "죄송하지만 sudo를 실행하려면 tty를 확보해야합니다" -#: plugins/sudoers/sudoers.c:442 plugins/sudoers/sudoers.c:444 +#: plugins/sudoers/sudoers.c:495 #, c-format msgid "invalid shell for user %s: %s" msgstr "%s 사용자에게 잘못된 셸 제공: %s" -#: plugins/sudoers/sudoers.c:507 +#: plugins/sudoers/sudoers.c:578 msgid "command in current directory" msgstr "현재 디렉터리의 명령" -#: plugins/sudoers/sudoers.c:525 +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to set a command timeout" msgstr "사용자가 명령 처리 제한 시간을 설정하도록 허용하지 않았습니다" -#: plugins/sudoers/sudoers.c:526 +#: plugins/sudoers/sudoers.c:599 msgid "sorry, you are not allowed set a command timeout" msgstr "죄송하지만, 명령 처리 제한 시간을 설정할 수 없습니다" -#: plugins/sudoers/sudoers.c:534 +#: plugins/sudoers/sudoers.c:607 msgid "user not allowed to preserve the environment" msgstr "사용자가 환경 설정 값을 유지하도록 허용하지 않았습니다" -#: plugins/sudoers/sudoers.c:535 +#: plugins/sudoers/sudoers.c:609 msgid "sorry, you are not allowed to preserve the environment" msgstr "죄송하지만 이 환경 상태를 유지하도록 허가받지 않았습니다" -#: plugins/sudoers/sudoers.c:878 +#: plugins/sudoers/sudoers.c:945 msgid "command too long" msgstr "명령이 너무 깁니다" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:1003 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit는 sudo로 실행할 필요가 없습니다" -#: plugins/sudoers/sudoers.c:990 plugins/sudoers/sudoreplay.c:1548 +#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "%s을(를) 읽을 수 없습니다" -#: plugins/sudoers/sudoers.c:1015 plugins/sudoers/visudo.c:431 -#: plugins/sudoers/visudo.c:727 +#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432 +#: plugins/sudoers/visudo.c:726 #, c-format msgid "unable to stat %s" msgstr "%s의 상태를 가져올 수 없습니다" -#: plugins/sudoers/sudoers.c:1019 plugins/sudoers/visudo.c:1037 +#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018 #, c-format msgid "%s is not a regular file" msgstr "%s은(는) 일반 파일이 아닙니다" -#: plugins/sudoers/sudoers.c:1023 plugins/sudoers/timestamp.c:252 toke.l:1060 +#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s은(는) %u uid가 소유했지만, %u uid가 소유해야합니다" -#: plugins/sudoers/sudoers.c:1027 toke.l:1065 +#: plugins/sudoers/sudoers.c:1094 toke.l:1117 #, c-format msgid "%s is world writable" msgstr "%s에 모두가 기록할 수 있습니다" -#: plugins/sudoers/sudoers.c:1031 toke.l:1068 +#: plugins/sudoers/sudoers.c:1098 toke.l:1120 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s은(는) %u gid가 소유했지만, %u gid가 소유해야합니다" -#: plugins/sudoers/sudoers.c:1064 +#: plugins/sudoers/sudoers.c:1131 #, c-format msgid "only root can use \"-c %s\"" msgstr "루트만 \"-c %s\" 옵션을 사용할 수 있습니다" -#: plugins/sudoers/sudoers.c:1083 +#: plugins/sudoers/sudoers.c:1150 #, c-format msgid "unknown login class: %s" msgstr "알 수 없는 로그인 클래스: %s" -#: plugins/sudoers/sudoers.c:1168 plugins/sudoers/sudoers.c:1183 +#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250 #, c-format msgid "unable to resolve host %s" msgstr "%s 호스트를 해석할 수 없습니다" -#: plugins/sudoers/sudoreplay.c:258 +#: plugins/sudoers/sudoreplay.c:257 #, c-format msgid "invalid filter option: %s" msgstr "잘못된 필터 옵션: %s" -#: plugins/sudoers/sudoreplay.c:274 +#: plugins/sudoers/sudoreplay.c:273 #, c-format msgid "invalid max wait: %s" msgstr "잘못된 최대 대기 시간 값: %s" -#: plugins/sudoers/sudoreplay.c:297 +#: plugins/sudoers/sudoreplay.c:296 #, c-format msgid "invalid speed factor: %s" msgstr "잘못된 속도 인수: %s" -#: plugins/sudoers/sudoreplay.c:333 +#: plugins/sudoers/sudoreplay.c:332 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:338 +#: plugins/sudoers/sudoreplay.c:337 #, c-format msgid "%s/timing: %s" msgstr "%s/timing: %s" -#: plugins/sudoers/sudoreplay.c:342 +#: plugins/sudoers/sudoreplay.c:341 #, c-format msgid "%s/%s: %s" msgstr "%s/%s: %s" -#: plugins/sudoers/sudoreplay.c:366 +#: plugins/sudoers/sudoreplay.c:365 #, c-format msgid "Replaying sudo session: %s" msgstr "sudo 세션 재현 중: %s" -#: plugins/sudoers/sudoreplay.c:628 +#: plugins/sudoers/sudoreplay.c:627 msgid "unable to set tty to raw mode" msgstr "RAW 모드로 tty를 설정할 수 없습니다" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:678 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "경고: 터미널 화면이 로그를 올바르게 나타내기에 너무 작습니다.\n" -#: plugins/sudoers/sudoreplay.c:680 +#: plugins/sudoers/sudoreplay.c:679 #, 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:708 +#: plugins/sudoers/sudoreplay.c:707 msgid "Replay finished, press any key to restore the terminal." msgstr "재현에 끝났습니다. 터미널을 복원하려면 아무 키나 누르십시오." -#: plugins/sudoers/sudoreplay.c:1198 plugins/sudoers/sudoreplay.c:1228 +#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 #, c-format msgid "ambiguous expression \"%s\"" msgstr "모호한 식 \"%s\"" -#: plugins/sudoers/sudoreplay.c:1250 +#: plugins/sudoers/sudoreplay.c:1249 msgid "unmatched ')' in expression" msgstr "수식에 일치하지 않는 ')'" -#: plugins/sudoers/sudoreplay.c:1254 +#: plugins/sudoers/sudoreplay.c:1253 #, c-format msgid "unknown search term \"%s\"" msgstr "알 수 없는 검색어 \"%s\"" -#: plugins/sudoers/sudoreplay.c:1269 +#: plugins/sudoers/sudoreplay.c:1268 #, c-format msgid "%s requires an argument" msgstr "%s에 인자가 필요합니다" -#: plugins/sudoers/sudoreplay.c:1272 plugins/sudoers/sudoreplay.c:1524 +#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 #, c-format msgid "invalid regular expression: %s" msgstr "잘못된 정규 표현식: %s" -#: plugins/sudoers/sudoreplay.c:1277 +#: plugins/sudoers/sudoreplay.c:1276 #, c-format msgid "could not parse date \"%s\"" msgstr "\"%s\" 날짜를 해석할 수 없습니다" -#: plugins/sudoers/sudoreplay.c:1286 +#: plugins/sudoers/sudoreplay.c:1285 msgid "unmatched '(' in expression" msgstr "수식에 일치하지 않는 '('" -#: plugins/sudoers/sudoreplay.c:1288 +#: plugins/sudoers/sudoreplay.c:1287 msgid "illegal trailing \"or\"" msgstr "잘못된 후위 연산자 \"or\"" -#: plugins/sudoers/sudoreplay.c:1290 +#: plugins/sudoers/sudoreplay.c:1289 msgid "illegal trailing \"!\"" msgstr "잘못된 후위 문자 \"!\"" -#: plugins/sudoers/sudoreplay.c:1348 +#: plugins/sudoers/sudoreplay.c:1347 #, c-format msgid "unknown search type %d" msgstr "알 수 없는 검색 형식 %d" -#: plugins/sudoers/sudoreplay.c:1615 +#: plugins/sudoers/sudoreplay.c:1614 #, 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:1618 +#: plugins/sudoers/sudoreplay.c:1617 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "사용법: %s [-h] [-d <디렉터리>] -l [<검색식>]\n" -#: plugins/sudoers/sudoreplay.c:1627 +#: plugins/sudoers/sudoreplay.c:1626 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2700,7 +2782,7 @@ "%s - sudo 세션 로그를 보여줍니다\n" "\n" -#: plugins/sudoers/sudoreplay.c:1629 +#: plugins/sudoers/sudoreplay.c:1628 msgid "" "\n" "Options:\n" @@ -2728,11 +2810,11 @@ " -s, --speed=<숫자> 출력 속도를 올리거나 내립니다\n" " -V, --version 버전 정보를 나타낸 후 빠져나갑니다" -#: plugins/sudoers/testsudoers.c:354 +#: plugins/sudoers/testsudoers.c:348 msgid "\thost unmatched" msgstr "\t호스트가 일치하지 않습니다" -#: plugins/sudoers/testsudoers.c:357 +#: plugins/sudoers/testsudoers.c:351 msgid "" "\n" "Command allowed" @@ -2740,7 +2822,7 @@ "\n" "명령 허용함" -#: plugins/sudoers/testsudoers.c:358 +#: plugins/sudoers/testsudoers.c:352 msgid "" "\n" "Command denied" @@ -2748,7 +2830,7 @@ "\n" "명령 거부함" -#: plugins/sudoers/testsudoers.c:358 +#: plugins/sudoers/testsudoers.c:352 msgid "" "\n" "Command unmatched" @@ -2793,89 +2875,89 @@ msgid "the -x option will be removed in a future release" msgstr "-x 옵션은 추후 릴리스에서 제거 예정입니다" -#: plugins/sudoers/visudo.c:227 +#: plugins/sudoers/visudo.c:228 msgid "please consider using the cvtsudoers utility instead" msgstr "cvtsudoers 유틸리티를 대신 사용해보십시오" -#: plugins/sudoers/visudo.c:278 plugins/sudoers/visudo.c:660 +#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659 #, c-format msgid "press return to edit %s: " msgstr "%s을(를) 편집하려면 return 키를 누르십시오:" -#: plugins/sudoers/visudo.c:339 +#: plugins/sudoers/visudo.c:340 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "지정 편집기(%s)가 없습니다" -#: plugins/sudoers/visudo.c:341 +#: plugins/sudoers/visudo.c:342 #, c-format msgid "no editor found (editor path = %s)" msgstr "편집기가 없습니다(편집기 경로 = %s)" -#: plugins/sudoers/visudo.c:451 plugins/sudoers/visudo.c:459 +#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460 msgid "write error" msgstr "쓰기 오류" -#: plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:506 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "임시 파일 상태를 가져올 수 없습니다(%s). %s을(를) 바꾸지 않았습니다" -#: plugins/sudoers/visudo.c:512 +#: plugins/sudoers/visudo.c:513 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "임시 파일 길이가 0입니다(%s). %s을(를) 바꾸지 않았습니다" -#: plugins/sudoers/visudo.c:518 +#: plugins/sudoers/visudo.c:519 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "편집기(%s) 실패. %s을(를) 바꾸지 않았습니다" -#: plugins/sudoers/visudo.c:540 +#: plugins/sudoers/visudo.c:541 #, c-format msgid "%s unchanged" msgstr "%s 바꾸지 않음" -#: plugins/sudoers/visudo.c:599 +#: plugins/sudoers/visudo.c:598 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "임시 파일(%s)을 다시 열 수 없습니다. %s을(를) 바꾸지 않았습니다." -#: plugins/sudoers/visudo.c:611 +#: plugins/sudoers/visudo.c:610 #, c-format msgid "unable to parse temporary file (%s), unknown error" msgstr "임시 파일(%s)을 해석할 수 없습니다. 알 수 없는 오류" -#: plugins/sudoers/visudo.c:649 +#: plugins/sudoers/visudo.c:648 #, c-format msgid "internal error, unable to find %s in list!" msgstr "내부 오류. %s을(를) 목록에서 찾을 수 없습니다!" -#: plugins/sudoers/visudo.c:729 plugins/sudoers/visudo.c:738 +#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "%s의 uid/gid를 %u/%u 값으로 설정할 수 없습니다" -#: plugins/sudoers/visudo.c:761 +#: plugins/sudoers/visudo.c:760 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "%s 및 %s은(는) 동일한 파일 시스템에 없습니다. mv 명령으로 이름을 바꿉니다" -#: plugins/sudoers/visudo.c:775 +#: plugins/sudoers/visudo.c:774 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "명령 실행 실패: '%s %s %s', %s을(를) 바꾸지 않았습니다" -#: plugins/sudoers/visudo.c:785 +#: plugins/sudoers/visudo.c:784 #, c-format msgid "error renaming %s, %s unchanged" msgstr "%s 이름 바꾸기 오류. %s을(를) 바꾸지 않았습니다" -#: plugins/sudoers/visudo.c:806 +#: plugins/sudoers/visudo.c:805 msgid "What now? " msgstr "어떻게 하시겠습니까? " -#: plugins/sudoers/visudo.c:820 +#: plugins/sudoers/visudo.c:819 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -2887,66 +2969,66 @@ " sudoers 파일을 바꾼 상태에서 저장하지 않고 나갑니다(X)\n" " sudoers 파일을 바꾼 상태에서 저장하고 끝냅니다(Q)\n" -#: plugins/sudoers/visudo.c:866 +#: plugins/sudoers/visudo.c:865 #, c-format msgid "unable to run %s" msgstr "%s을(를) 실행할 수 없음" -#: plugins/sudoers/visudo.c:896 +#: plugins/sudoers/visudo.c:895 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s: 잘못된 소유자 uid/gid를 %u/%u 값으로 설정해야 합니다\n" -#: plugins/sudoers/visudo.c:903 +#: plugins/sudoers/visudo.c:902 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s: 잘못된 권한입니다. 0%o 모드 값을 설정해야 합니다\n" -#: plugins/sudoers/visudo.c:960 plugins/sudoers/visudo.c:967 +#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958 #, c-format msgid "%s: parsed OK\n" msgstr "%s: 해석 성공\n" -#: plugins/sudoers/visudo.c:986 +#: plugins/sudoers/visudo.c:977 #, c-format msgid "%s busy, try again later" msgstr "%s을(를) 사용중입니다. 나중에 다시 시도하십시오" -#: plugins/sudoers/visudo.c:989 +#: plugins/sudoers/visudo.c:980 #, c-format msgid "unable to lock %s" msgstr "%s을(를) 잠글 수 없습니다" -#: plugins/sudoers/visudo.c:990 +#: plugins/sudoers/visudo.c:981 msgid "Edit anyway? [y/N]" msgstr "그래도 편집하시겠습니까? [y/N]" -#: plugins/sudoers/visudo.c:1083 +#: plugins/sudoers/visudo.c:1091 #, c-format -msgid "Error: %s:%d cycle in %s \"%s\"" -msgstr "오류: %3$s \"%4$s\"의 %1$s:%2$d사이클" +msgid "Error: %s:%d:%d: cycle in %s \"%s\"" +msgstr "오류: %4$s \"%5$s\"의 %1$s:%2$d:%3$d: 사이클" -#: plugins/sudoers/visudo.c:1084 +#: plugins/sudoers/visudo.c:1092 #, c-format -msgid "Warning: %s:%d cycle in %s \"%s\"" -msgstr "경고: %3$s \"%4$s\"의 %1$s:%2$d사이클" +msgid "Warning: %s:%d:%d: cycle in %s \"%s\"" +msgstr "경고: %4$s \"%5$s\"의 %1$s:%2$d:%3$d: 사이클" -#: plugins/sudoers/visudo.c:1088 +#: plugins/sudoers/visudo.c:1096 #, c-format -msgid "Error: %s:%d %s \"%s\" referenced but not defined" -msgstr "오류: %s: %d %s \"%s\"을(를) 참조했지만 정의하지 않았습니다" +msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined" +msgstr "오류: %s:%d:%d: %s \"%s\"을(를) 참조했지만 정의하지 않았습니다" -#: plugins/sudoers/visudo.c:1089 +#: plugins/sudoers/visudo.c:1097 #, c-format -msgid "Warning: %s:%d %s \"%s\" referenced but not defined" -msgstr "경고: %s: %d %s \"%s\"을(를) 참조했지만 정의하지 않았습니다" +msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined" +msgstr "경고: %s:%d:%d: %s \"%s\"을(를) 참조했지만 정의하지 않았습니다" -#: plugins/sudoers/visudo.c:1180 +#: plugins/sudoers/visudo.c:1188 #, c-format -msgid "Warning: %s:%d unused %s \"%s\"" -msgstr "경고: %s:%d 사용하지 않는 %s \"%s\"이(가) 있습니다" +msgid "Warning: %s:%d:%d: unused %s \"%s\"" +msgstr "경고: %s:%d:%d 사용하지 않는 %s \"%s\"이(가) 있습니다" -#: plugins/sudoers/visudo.c:1295 +#: plugins/sudoers/visudo.c:1303 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -2955,7 +3037,7 @@ "%s - sudoers 파일을 안전하게 편집합니다\n" "\n" -#: plugins/sudoers/visudo.c:1297 +#: plugins/sudoers/visudo.c:1305 msgid "" "\n" "Options:\n" @@ -2975,10 +3057,43 @@ " -s, --strict 엄격한 문법 검사 시행\n" " -V, --version 버전 정보를 나타낸 후 빠져나갑니다\n" -#: toke.l:1032 +#: toke.l:179 +msgid "empty string" +msgstr "빈 문자열" + +#: toke.l:189 toke.l:491 +msgid "empty group" +msgstr "빈 그룹" + +#: toke.l:197 toke.l:489 +msgid "empty netgroup" +msgstr "빈 네트워크 그룹" + +#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392 +msgid "invalid line continuation" +msgstr "잘못된 행 연속 문자" + +#: toke.l:528 toke.l:540 +msgid "invalid IPv6 address" +msgstr "잘못된 IPv6 주소" + +#: toke.l:764 +msgid "unexpected line break in string" +msgstr "예기치 않은 개행 문자 발견" + +#: toke.l:1084 msgid "too many levels of includes" msgstr "포함 레벨이 너무 많습니다" +#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library" +#~ msgstr "sudo_noexec 라이브러리에 있는 모조 exec 함수 미리 불러오기" + +#~ msgid "sudo_ldap_conf_add_ports: port too large" +#~ msgstr "sudo_ldap_conf_add_ports: 포트 값이 너무 큽니다" + +#~ msgid "unable to lock log file: %s" +#~ msgstr "로그 파일을 잠글 수 없습니다: %s" + #~ msgid "No user or host" #~ msgstr "사용자 또는 호스트 없음" Binary files /tmp/iZuZwXTqez/sudo-1.9.4p2/plugins/sudoers/po/sr.mo and /tmp/cZR8a_TUxF/sudo-1.9.5p2/plugins/sudoers/po/sr.mo differ diff -Nru sudo-1.9.4p2/plugins/sudoers/po/sr.po sudo-1.9.5p2/plugins/sudoers/po/sr.po --- sudo-1.9.4p2/plugins/sudoers/po/sr.po 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/po/sr.po 2021-01-09 14:12:16.000000000 -0600 @@ -3,10 +3,10 @@ # Мирослав Николић , 2014—2020. msgid "" msgstr "" -"Project-Id-Version: sudoers-1.9.2rc1\n" +"Project-Id-Version: sudoers-1.9.4b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2020-06-24 05:35-0600\n" -"PO-Revision-Date: 2020-08-04 12:24+0200\n" +"POT-Creation-Date: 2020-11-14 06:24-0700\n" +"PO-Revision-Date: 2020-12-11 08:03+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" @@ -14,10 +14,9 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Virtaal 0.7.1\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: confstr.sh:1 +#: confstr.sh:1 gram.y:1077 msgid "syntax error" msgstr "грешка синтаксе" @@ -41,70 +40,73 @@ msgid "Sorry, try again." msgstr "Извините, покушајте поново." -#: gram.y:203 gram.y:251 gram.y:258 gram.y:265 gram.y:272 gram.y:279 -#: gram.y:295 gram.y:319 gram.y:326 gram.y:333 gram.y:340 gram.y:347 -#: gram.y:410 gram.y:419 gram.y:430 gram.y:463 gram.y:470 gram.y:477 -#: gram.y:484 gram.y:511 gram.y:583 gram.y:590 gram.y:599 gram.y:608 -#: gram.y:625 gram.y:737 gram.y:744 gram.y:752 gram.y:758 gram.y:858 -#: gram.y:865 gram.y:872 gram.y:879 gram.y:886 gram.y:912 gram.y:919 -#: gram.y:926 gram.y:1068 gram.y:1347 lib/iolog/iolog_fileio.c:1101 -#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:283 -#: lib/iolog/iolog_json.c:313 lib/iolog/iolog_json.c:435 -#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115 -#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133 -#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196 -#: logsrvd/eventlog.c:223 logsrvd/sendlog.c:443 plugins/sudoers/alias.c:125 -#: plugins/sudoers/alias.c:132 plugins/sudoers/alias.c:148 -#: plugins/sudoers/audit.c:108 plugins/sudoers/audit.c:212 -#: plugins/sudoers/auth/bsdauth.c:143 plugins/sudoers/auth/kerb5.c:118 -#: plugins/sudoers/auth/kerb5.c:144 plugins/sudoers/auth/pam.c:669 -#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 -#: plugins/sudoers/cvtsudoers.c:120 plugins/sudoers/cvtsudoers.c:161 -#: plugins/sudoers/cvtsudoers.c:178 plugins/sudoers/cvtsudoers.c:189 -#: plugins/sudoers/cvtsudoers.c:301 plugins/sudoers/cvtsudoers.c:429 -#: plugins/sudoers/cvtsudoers.c:562 plugins/sudoers/cvtsudoers.c:579 -#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/cvtsudoers.c:757 -#: plugins/sudoers/cvtsudoers.c:765 plugins/sudoers/cvtsudoers.c:1179 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285 -#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 -#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 -#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:426 plugins/sudoers/cvtsudoers_ldif.c:434 -#: plugins/sudoers/cvtsudoers_ldif.c:451 plugins/sudoers/cvtsudoers_ldif.c:460 -#: plugins/sudoers/cvtsudoers_ldif.c:607 plugins/sudoers/defaults.c:626 -#: plugins/sudoers/defaults.c:919 plugins/sudoers/defaults.c:1052 -#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:84 -#: plugins/sudoers/editor.c:95 plugins/sudoers/env.c:261 +#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314 +#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386 +#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524 +#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679 +#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971 +#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032 +#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280 +#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753 +#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062 +#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120 +#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335 +#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106 +#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125 +#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137 +#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480 +#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134 +#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115 +#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143 +#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 +#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119 +#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177 +#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300 +#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561 +#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641 +#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764 +#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182 +#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76 +#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194 +#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300 +#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421 +#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440 +#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460 +#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615 +#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923 +#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181 +#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92 #: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 #: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:483 -#: plugins/sudoers/iolog_client.c:105 plugins/sudoers/iolog_client.c:382 -#: plugins/sudoers/iolog_client.c:559 plugins/sudoers/iolog_client.c:678 -#: plugins/sudoers/iolog_client.c:696 plugins/sudoers/iolog_client.c:1176 -#: plugins/sudoers/iolog_client.c:1405 plugins/sudoers/iolog_client.c:1723 -#: plugins/sudoers/iolog_client.c:1751 plugins/sudoers/ldap.c:183 -#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431 -#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440 -#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743 -#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279 -#: plugins/sudoers/ldap.c:1706 plugins/sudoers/ldap.c:1743 -#: plugins/sudoers/ldap.c:1824 plugins/sudoers/ldap.c:1959 -#: plugins/sudoers/ldap.c:2060 plugins/sudoers/ldap.c:2076 +#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596 +#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184 +#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 +#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 +#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 +#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 +#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 +#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 +#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 #: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 #: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 #: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 #: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 #: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760 #: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333 -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/linux_audit.c:83 -#: plugins/sudoers/logging.c:103 plugins/sudoers/logging.c:192 -#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545 -#: plugins/sudoers/logging.c:586 plugins/sudoers/logging.c:723 -#: plugins/sudoers/logging.c:1083 plugins/sudoers/match_command.c:243 -#: plugins/sudoers/match_command.c:391 plugins/sudoers/match_command.c:438 -#: plugins/sudoers/match_command.c:509 plugins/sudoers/match_digest.c:80 -#: plugins/sudoers/parse.c:193 plugins/sudoers/parse.c:205 -#: plugins/sudoers/parse.c:220 plugins/sudoers/parse.c:232 +#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84 +#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381 +#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706 +#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620 +#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999 +#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166 +#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446 +#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281 +#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499 +#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213 +#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244 +#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -114,115 +116,138 @@ #: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624 #: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707 #: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752 -#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:491 -#: plugins/sudoers/policy.c:823 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:191 plugins/sudoers/pwutil.c:262 -#: plugins/sudoers/pwutil.c:340 plugins/sudoers/pwutil.c:514 -#: plugins/sudoers/pwutil.c:578 plugins/sudoers/pwutil.c:649 -#: plugins/sudoers/pwutil.c:808 plugins/sudoers/pwutil.c:865 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:967 -#: plugins/sudoers/sssd.c:146 plugins/sudoers/sssd.c:409 -#: plugins/sudoers/sssd.c:472 plugins/sudoers/sssd.c:516 -#: plugins/sudoers/sssd.c:563 plugins/sudoers/sssd.c:755 -#: plugins/sudoers/stubs.c:96 plugins/sudoers/stubs.c:104 -#: plugins/sudoers/sudoers.c:316 plugins/sudoers/sudoers.c:327 -#: plugins/sudoers/sudoers.c:337 plugins/sudoers/sudoers.c:380 -#: plugins/sudoers/sudoers.c:720 plugins/sudoers/sudoers.c:849 -#: plugins/sudoers/sudoers.c:894 plugins/sudoers/sudoers.c:1198 -#: plugins/sudoers/sudoreplay.c:553 plugins/sudoers/sudoreplay.c:556 -#: plugins/sudoers/sudoreplay.c:1260 plugins/sudoers/sudoreplay.c:1470 -#: plugins/sudoers/sudoreplay.c:1474 plugins/sudoers/testsudoers.c:128 +#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526 +#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265 +#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517 +#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652 +#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867 +#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968 +#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407 +#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 +#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 +#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118 +#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326 +#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381 +#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433 +#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927 +#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265 +#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 +#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 +#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128 #: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:432 +#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432 #: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986 #: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104 #: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:146 -#: plugins/sudoers/visudo.c:322 plugins/sudoers/visudo.c:328 -#: plugins/sudoers/visudo.c:438 plugins/sudoers/visudo.c:616 -#: plugins/sudoers/visudo.c:936 plugins/sudoers/visudo.c:1024 -#: plugins/sudoers/visudo.c:1121 toke.l:864 toke.l:981 toke.l:1039 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145 +#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329 +#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615 +#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008 +#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091 msgid "unable to allocate memory" msgstr "не могу да доделим меморију" -#: gram.y:505 +#: gram.y:552 msgid "a digest requires a path name" msgstr "зборник захтева назив путање" -#: gram.y:638 +#: gram.y:581 +msgid "values for \"CWD\" must start with a '/', '~', or '*'" +msgstr "вредност за „CWD“ мора почети са /, ~, или *" + +#: gram.y:593 +msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" +msgstr "вредност за „CHROOT“ мора почети са /, ~, или *" + +#: gram.y:715 +#, c-format +msgid "syntax error, reserved word %s used as an alias name" +msgstr "грешка синтаксе, резервисана реч „%s“ је коришћена као назив алијаса" + +#: gram.y:735 msgid "invalid notbefore value" msgstr "неисправна вредност не-пре" -#: gram.y:646 +#: gram.y:743 msgid "invalid notafter value" msgstr "неисправна вредност не-после" -#: gram.y:655 plugins/sudoers/policy.c:306 +#: gram.y:752 plugins/sudoers/policy.c:335 msgid "timeout value too large" msgstr "вредност временског истека је превелика" -#: gram.y:657 plugins/sudoers/policy.c:308 +#: gram.y:754 plugins/sudoers/policy.c:337 msgid "invalid timeout value" msgstr "неисправна вредност временског ограничења" -#: gram.y:1347 lib/iolog/iolog_fileio.c:1101 lib/iolog/iolog_json.c:120 -#: lib/iolog/iolog_json.c:282 lib/iolog/iolog_json.c:313 -#: lib/iolog/iolog_json.c:435 lib/iolog/iolog_json.c:713 -#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115 -#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133 -#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196 -#: logsrvd/eventlog.c:223 logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1221 -#: logsrvd/logsrvd.c:1266 logsrvd/sendlog.c:443 logsrvd/sendlog.c:1302 -#: logsrvd/sendlog.c:1309 logsrvd/sendlog.c:1727 plugins/sudoers/audit.c:108 -#: plugins/sudoers/audit.c:212 plugins/sudoers/auth/pam.c:482 +#: gram.y:1079 +#, c-format +msgid "%s:%d:%d: %s\n" +msgstr "%s:%d:%d: %s\n" + +#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753 +#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816 +#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998 +#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304 +#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457 +#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106 +#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125 +#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137 +#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293 +#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321 +#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115 +#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482 #: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/cvtsudoers.c:120 plugins/sudoers/cvtsudoers.c:160 -#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 -#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428 -#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578 -#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/cvtsudoers.c:757 -#: plugins/sudoers/cvtsudoers.c:764 plugins/sudoers/cvtsudoers.c:1179 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756 +#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178 +#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284 #: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 #: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 #: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 -#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 -#: plugins/sudoers/cvtsudoers_ldif.c:450 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:606 plugins/sudoers/defaults.c:626 -#: plugins/sudoers/defaults.c:919 plugins/sudoers/defaults.c:1052 -#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:84 -#: plugins/sudoers/editor.c:95 plugins/sudoers/env.c:261 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:483 -#: plugins/sudoers/iolog_client.c:105 plugins/sudoers/iolog_client.c:215 -#: plugins/sudoers/iolog_client.c:236 plugins/sudoers/iolog_client.c:249 -#: plugins/sudoers/iolog_client.c:382 plugins/sudoers/iolog_client.c:678 -#: plugins/sudoers/iolog_client.c:696 plugins/sudoers/iolog_client.c:1176 -#: plugins/sudoers/iolog_client.c:1405 plugins/sudoers/iolog_client.c:1723 -#: plugins/sudoers/iolog_client.c:1751 plugins/sudoers/ldap.c:183 -#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431 -#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440 -#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743 -#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279 -#: plugins/sudoers/ldap.c:1706 plugins/sudoers/ldap.c:1743 -#: plugins/sudoers/ldap.c:1824 plugins/sudoers/ldap.c:1959 -#: plugins/sudoers/ldap.c:2060 plugins/sudoers/ldap.c:2076 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/linux_audit.c:83 -#: plugins/sudoers/logging.c:103 plugins/sudoers/logging.c:192 -#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545 -#: plugins/sudoers/logging.c:585 plugins/sudoers/logging.c:1083 -#: plugins/sudoers/match_command.c:242 plugins/sudoers/match_command.c:390 -#: plugins/sudoers/match_command.c:437 plugins/sudoers/match_command.c:509 -#: plugins/sudoers/match_digest.c:80 plugins/sudoers/parse.c:192 -#: plugins/sudoers/parse.c:204 plugins/sudoers/parse.c:219 -#: plugins/sudoers/parse.c:231 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428 +#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446 +#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467 +#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630 +#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098 +#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72 +#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325 +#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603 +#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105 +#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235 +#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381 +#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706 +#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620 +#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999 +#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165 +#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425 +#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527 +#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448 +#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573 +#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 +#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229 +#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263 +#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152 #: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 #: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 #: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 @@ -232,60 +257,112 @@ #: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648 #: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723 #: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758 -#: plugins/sudoers/policy.c:120 plugins/sudoers/policy.c:129 -#: plugins/sudoers/policy.c:138 plugins/sudoers/policy.c:164 -#: plugins/sudoers/policy.c:291 plugins/sudoers/policy.c:306 -#: plugins/sudoers/policy.c:308 plugins/sudoers/policy.c:337 -#: plugins/sudoers/policy.c:346 plugins/sudoers/policy.c:389 -#: plugins/sudoers/policy.c:399 plugins/sudoers/policy.c:408 -#: plugins/sudoers/policy.c:417 plugins/sudoers/policy.c:491 -#: plugins/sudoers/policy.c:823 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:191 plugins/sudoers/pwutil.c:262 -#: plugins/sudoers/pwutil.c:340 plugins/sudoers/pwutil.c:514 -#: plugins/sudoers/pwutil.c:578 plugins/sudoers/pwutil.c:649 -#: plugins/sudoers/pwutil.c:808 plugins/sudoers/pwutil.c:865 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:967 +#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183 +#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335 +#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418 +#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437 +#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526 +#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265 +#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517 +#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652 +#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867 +#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968 #: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 #: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:145 -#: plugins/sudoers/sssd.c:409 plugins/sudoers/sssd.c:472 -#: plugins/sudoers/sssd.c:516 plugins/sudoers/sssd.c:563 -#: plugins/sudoers/sssd.c:755 plugins/sudoers/stubs.c:96 -#: plugins/sudoers/stubs.c:104 plugins/sudoers/sudoers.c:316 -#: plugins/sudoers/sudoers.c:327 plugins/sudoers/sudoers.c:337 -#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:720 -#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:894 -#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/sudoreplay.c:553 -#: plugins/sudoers/sudoreplay.c:556 plugins/sudoers/sudoreplay.c:1260 -#: plugins/sudoers/sudoreplay.c:1470 plugins/sudoers/sudoreplay.c:1474 +#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110 +#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300 +#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370 +#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391 +#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794 +#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961 +#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552 +#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 #: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228 -#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:581 +#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587 #: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476 #: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51 #: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128 #: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:146 plugins/sudoers/visudo.c:322 -#: plugins/sudoers/visudo.c:328 plugins/sudoers/visudo.c:438 -#: plugins/sudoers/visudo.c:616 plugins/sudoers/visudo.c:936 -#: plugins/sudoers/visudo.c:1024 plugins/sudoers/visudo.c:1121 toke.l:864 -#: toke.l:981 toke.l:1039 +#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323 +#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439 +#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935 +#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913 +#: toke.l:1033 toke.l:1091 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/iolog/iolog_fileio.c:157 +#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463 +#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468 +#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244 +#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571 +#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330 +#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618 +#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748 +#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222 +#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711 +#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161 +#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249 +#: plugins/sudoers/toke_util.c:169 +#, c-format +msgid "internal error, %s overflow" +msgstr "унутрашња грешка, прекорачење „%s“" + +#: lib/eventlog/eventlog.c:343 +#, c-format +msgid "unable to dup stdin: %m" +msgstr "не могу да удвостручим стандардни улаз: %m" + +#: lib/eventlog/eventlog.c:388 +#, c-format +msgid "unable to execute %s: %m" +msgstr "не могу да извршим „%s“: %m" + +#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198 +msgid "unable to fork" +msgstr "не могу да исцепим" + +#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490 +#, c-format +msgid "unable to fork: %m" +msgstr "не могу да исцепим: %m" + +#: lib/eventlog/eventlog.c:480 +#, c-format +msgid "unable to open pipe: %m" +msgstr "не могу да отворим спојку: %m" + +#: lib/eventlog/eventlog.c:894 +#, c-format +msgid "%8s : %s" +msgstr "%8s : %s" + +#: lib/eventlog/eventlog.c:923 +#, c-format +msgid "%8s : (command continued) %s" +msgstr "%8s : (наредба је настављена) %s" + +#: lib/iolog/iolog_fileio.c:155 #, c-format msgid "%s exists but is not a directory (0%o)" msgstr "%s постоји али није директоријум (0%o)" -#: lib/iolog/iolog_fileio.c:187 lib/iolog/iolog_fileio.c:233 +#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231 #: plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "не могу да направим директоријум „%s“" -#: lib/iolog/iolog_fileio.c:237 plugins/sudoers/visudo.c:733 -#: plugins/sudoers/visudo.c:744 +#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732 +#: plugins/sudoers/visudo.c:743 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "не могу да променим режим „%s“ на 0%o" @@ -295,63 +372,45 @@ msgid "expected JSON_STRING, got %d" msgstr "очекивах „JSON_STRING“, добих „%d“" -#: lib/iolog/iolog_json.c:305 +#: lib/iolog/iolog_json.c:327 msgid "missing double quote in name" msgstr "недостају наводници у називу" -#: lib/iolog/iolog_json.c:392 +#: lib/iolog/iolog_json.c:414 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "очекивах „JSON_OBJECT“, добих „%d“" -#: lib/iolog/iolog_json.c:441 lib/iolog/iolog_json.c:444 -#: lib/iolog/iolog_json.c:446 lib/iolog/iolog_json.c:538 -#: logsrvd/eventlog.c:228 plugins/sudoers/cvtsudoers_ldif.c:244 -#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:563 -#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330 -#: plugins/sudoers/env.c:435 plugins/sudoers/iolog.c:561 -#: plugins/sudoers/iolog.c:577 plugins/sudoers/ldap.c:516 -#: plugins/sudoers/ldap.c:747 plugins/sudoers/ldap.c:1080 -#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:89 plugins/sudoers/logging.c:1088 -#: plugins/sudoers/policy.c:521 plugins/sudoers/policy.c:668 -#: plugins/sudoers/policy.c:678 plugins/sudoers/prompt.c:161 -#: plugins/sudoers/sudoers.c:916 plugins/sudoers/testsudoers.c:249 -#: plugins/sudoers/toke_util.c:169 -#, c-format -msgid "internal error, %s overflow" -msgstr "унутрашња грешка, прекорачење „%s“" - -#: lib/iolog/iolog_json.c:607 lib/iolog/iolog_json.c:731 +#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753 msgid "unmatched close brace" msgstr "непоклопљена затворена велика заграда" -#: lib/iolog/iolog_json.c:616 +#: lib/iolog/iolog_json.c:638 msgid "unexpected array" msgstr "неочекиван низ" -#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:733 +#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755 msgid "unmatched close bracket" msgstr "непоклопљена затворена средња заграда" -#: lib/iolog/iolog_json.c:637 +#: lib/iolog/iolog_json.c:659 msgid "unexpected string" msgstr "неочекивана ниска" -#: lib/iolog/iolog_json.c:647 +#: lib/iolog/iolog_json.c:669 msgid "missing colon after name" msgstr "недостају две тачке након имена" -#: lib/iolog/iolog_json.c:658 lib/iolog/iolog_json.c:673 -#: lib/iolog/iolog_json.c:688 +#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695 +#: lib/iolog/iolog_json.c:710 msgid "unexpected boolean" msgstr "неочекивана логичка вредност" -#: lib/iolog/iolog_json.c:704 +#: lib/iolog/iolog_json.c:726 msgid "unexpected number" msgstr "неочекивани број" -#: lib/iolog/iolog_json.c:741 +#: lib/iolog/iolog_json.c:763 #, c-format msgid "%s:%u unable to parse \"%s\"" msgstr "„%s:%u“ не могу да обрадим „%s“" @@ -396,186 +455,184 @@ msgid "invalid timing file line: %s" msgstr "неисправан ред датотеке временисања: %s" -#: logsrvd/eventlog.c:430 plugins/sudoers/logging.c:112 -#, c-format -msgid "%8s : %s" -msgstr "%8s : %s" - -#: logsrvd/eventlog.c:459 plugins/sudoers/logging.c:136 -#, c-format -msgid "%8s : (command continued) %s" -msgstr "%8s : (наредба је настављена) %s" - -#: logsrvd/iolog_writer.c:936 +#: logsrvd/iolog_writer.c:919 msgid "log is already complete, cannot be restarted" msgstr "дневик је већ довршен, не може бити поново покренут" -#: logsrvd/iolog_writer.c:967 +#: logsrvd/iolog_writer.c:950 msgid "unable to restart log" msgstr "не могу поново да покренем дневник" -#: logsrvd/logsrv_util.c:98 logsrvd/logsrv_util.c:105 -#: plugins/sudoers/sudoreplay.c:353 plugins/sudoers/sudoreplay.c:359 +#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 +#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 #, c-format msgid "unable to open %s/%s" msgstr "не могу да отворим „%s/%s“" -#: logsrvd/logsrv_util.c:132 +#: logsrvd/logsrv_util.c:133 #, c-format msgid "missing I/O log file %s/%s" msgstr "недостаје У/И датотека дневника „%s/%s“" -#: logsrvd/logsrv_util.c:139 +#: logsrvd/logsrv_util.c:140 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: не могу да премотам унапред „%zu“" -#: logsrvd/logsrv_util.c:149 +#: logsrvd/logsrv_util.c:150 #, c-format msgid "unable to find resume point [%lld, %ld] in %s/%s" msgstr "не могу да нађем тачку наставка [%lld, %ld] у „%s/%s“" -#: logsrvd/logsrvd.c:230 logsrvd/logsrvd.c:299 logsrvd/logsrvd.c:343 -#: logsrvd/logsrvd.c:398 logsrvd/logsrvd.c:445 logsrvd/logsrvd.c:496 -#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:560 +#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394 +#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568 +#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632 msgid "state machine error" msgstr "грешка машине стања" -#: logsrvd/logsrvd.c:239 +#: logsrvd/logsrvd.c:299 msgid "invalid AcceptMessage" msgstr "неисправна „Порука прихвата“" -#: logsrvd/logsrvd.c:250 +#: logsrvd/logsrvd.c:307 msgid "error parsing AcceptMessage" msgstr "грешка обраде „Поруке прихвата“" -#: logsrvd/logsrvd.c:257 +#: logsrvd/logsrvd.c:314 msgid "error creating I/O log" msgstr "грешка стварања У/И дневника" -#: logsrvd/logsrvd.c:265 +#: logsrvd/logsrvd.c:321 msgid "error logging accept event" msgstr "грешка прибележавања догађаја прихвата" -#: logsrvd/logsrvd.c:308 +#: logsrvd/logsrvd.c:362 msgid "invalid RejectMessage" msgstr "неисправна „Порука одбијања“" -#: logsrvd/logsrvd.c:319 +#: logsrvd/logsrvd.c:370 msgid "error parsing RejectMessage" msgstr "грешка обраде „Поруке одбијања“" -#: logsrvd/logsrvd.c:325 +#: logsrvd/logsrvd.c:376 msgid "error logging reject event" msgstr "грешка прибележавања догађаја одбијања" -#: logsrvd/logsrvd.c:430 +#: logsrvd/logsrvd.c:486 +msgid "invalid AlertMessage" +msgstr "неисправна „Порука узбуне“" + +#: logsrvd/logsrvd.c:494 +msgid "error parsing AlertMessage" +msgstr "грешка обраде „Поруке узбуне“" + +#: logsrvd/logsrvd.c:502 msgid "error logging alert event" msgstr "грешка прибележавања догађаја упозорења" -#: logsrvd/logsrvd.c:451 logsrvd/logsrvd.c:502 logsrvd/logsrvd.c:534 +#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606 msgid "protocol error" msgstr "грешка протокола" -#: logsrvd/logsrvd.c:461 +#: logsrvd/logsrvd.c:533 msgid "error writing IoBuffer" msgstr "Грешка писања „Уи_Међумеморије“" -#: logsrvd/logsrvd.c:513 +#: logsrvd/logsrvd.c:585 msgid "error writing ChangeWindowSize" msgstr "грешка писања „Промени_величину_прозора“" -#: logsrvd/logsrvd.c:545 +#: logsrvd/logsrvd.c:617 msgid "error writing CommandSuspend" msgstr "грешка писања „Обуставе_наредбе“" -#: logsrvd/logsrvd.c:630 +#: logsrvd/logsrvd.c:702 msgid "unrecognized ClientMessage type" msgstr "непозната врста „Поруке_клијента“" -#: logsrvd/logsrvd.c:895 +#: logsrvd/logsrvd.c:967 msgid "client message too large" msgstr "порука клијента је превелика" -#: logsrvd/logsrvd.c:1125 logsrvd/logsrvd.c:1133 +#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "не могу да подесим шифрарник ТЛС-а 1.2 на „%s“: %s" -#: logsrvd/logsrvd.c:1153 logsrvd/logsrvd.c:1161 +#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "не могу да подесим шифрарник ТЛС-а 1.3 на „%s“: %s" -#: logsrvd/logsrvd.c:1197 +#: logsrvd/logsrvd.c:1269 #, c-format msgid "unable to get TLS server method: %s" msgstr "не могу да добавим метод ТЛС сервера: %s" -#: logsrvd/logsrvd.c:1202 +#: logsrvd/logsrvd.c:1274 #, c-format msgid "unable to create TLS context: %s" msgstr "Не могу да створим ТЛС контекст: %s" -#: logsrvd/logsrvd.c:1209 plugins/sudoers/iolog_client.c:237 +#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236 #, c-format msgid "unable to load certificate %s" msgstr "не могу да учитам уверење „%s“" -#: logsrvd/logsrvd.c:1222 plugins/sudoers/iolog_client.c:217 +#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "не могу да учитам комплет ауторитета уверења „%s“" -#: logsrvd/logsrvd.c:1267 plugins/sudoers/iolog_client.c:250 +#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249 #, c-format msgid "unable to load private key %s" msgstr "не могу да учитам лични кључ „%s“" -#: logsrvd/logsrvd.c:1284 logsrvd/logsrvd.c:1293 +#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "не могу да подесим „diffie-hellman“ параметре: %s" -#: logsrvd/logsrvd.c:1306 +#: logsrvd/logsrvd.c:1378 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "не могу да подесим најмање издање протокола на „TLS 1.2“: %s" -#: logsrvd/logsrvd.c:1491 +#: logsrvd/logsrvd.c:1563 msgid "unable to get remote IP addr" msgstr "не могу да добавим удаљену ИП адресу" -#: logsrvd/logsrvd.c:1519 plugins/sudoers/iolog_client.c:264 +#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Не могу да прикачим податке корисника ссл објекту: %s" -#: logsrvd/logsrvd.c:1527 logsrvd/logsrvd.c:1649 logsrvd/logsrvd.c:1749 -#: logsrvd/sendlog.c:1106 logsrvd/sendlog.c:1462 logsrvd/sendlog.c:1477 -#: logsrvd/sendlog.c:1535 plugins/sudoers/iolog.c:921 -#: plugins/sudoers/iolog.c:1054 plugins/sudoers/iolog.c:1152 -#: plugins/sudoers/iolog_client.c:109 plugins/sudoers/iolog_client.c:325 -#: plugins/sudoers/iolog_client.c:341 plugins/sudoers/iolog_client.c:387 -#: plugins/sudoers/iolog_client.c:567 plugins/sudoers/iolog_client.c:574 -#: plugins/sudoers/iolog_client.c:1150 plugins/sudoers/iolog_client.c:1186 -#: plugins/sudoers/iolog_client.c:1194 plugins/sudoers/iolog_client.c:1254 -#: plugins/sudoers/iolog_client.c:1361 plugins/sudoers/iolog_client.c:1477 -#: plugins/sudoers/iolog_client.c:1759 plugins/sudoers/iolog_client.c:1767 -#: plugins/sudoers/sudoreplay.c:513 plugins/sudoers/sudoreplay.c:560 -#: plugins/sudoers/sudoreplay.c:792 plugins/sudoers/sudoreplay.c:904 -#: plugins/sudoers/sudoreplay.c:994 plugins/sudoers/sudoreplay.c:1009 -#: plugins/sudoers/sudoreplay.c:1016 plugins/sudoers/sudoreplay.c:1023 -#: plugins/sudoers/sudoreplay.c:1030 plugins/sudoers/sudoreplay.c:1037 -#: plugins/sudoers/sudoreplay.c:1164 +#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823 +#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496 +#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956 +#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187 +#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 +#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594 +#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376 +#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425 +#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692 +#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015 +#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 +#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 +#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 +#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1163 msgid "unable to add event to queue" msgstr "не могу да додам догађај у ред" -#: logsrvd/logsrvd.c:1703 logsrvd/logsrvd.c:1937 +#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011 msgid "unable setup listen socket" msgstr "не могу да подесим прикључницу ослушкивања" -#: logsrvd/logsrvd.c:1843 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124 #, c-format msgid "" "%s - send sudo I/O log to remote server\n" @@ -584,7 +641,7 @@ "%s – шаље У/И дневник судоа удаљеном серверу\n" "\n" -#: logsrvd/logsrvd.c:1846 +#: logsrvd/logsrvd.c:1920 msgid "" "\n" "Options:\n" @@ -602,78 +659,78 @@ " -R, --random-drop процентуалне шансе везе ће одбацити\n" " -V, --version приказује податке о издању и излази\n" -#: logsrvd/logsrvd.c:1898 logsrvd/sendlog.c:1700 +#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719 msgid "Protobuf-C version 1.3 or higher required" msgstr "Потребно је „Protobuf-C“ издање 1.3 или новије" -#: logsrvd/logsrvd.c:1916 +#: logsrvd/logsrvd.c:1990 #, c-format msgid "invalid random drop value: %s" msgstr "неисправна вредност одбацивања насумичности: %s" -#: logsrvd/logsrvd.c:1920 logsrvd/sendlog.c:1750 -#: plugins/sudoers/cvtsudoers.c:229 plugins/sudoers/sudoreplay.c:300 -#: plugins/sudoers/visudo.c:178 +#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: plugins/sudoers/visudo.c:177 #, c-format msgid "%s version %s\n" msgstr "%s издање %s\n" -#: logsrvd/logsrvd_conf.c:393 +#: logsrvd/logsrvd_conf.c:331 msgid "TLS not supported" msgstr "ТЛС није подржано" -#: logsrvd/logsrvd_conf.c:405 +#: logsrvd/logsrvd_conf.c:343 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:471 logsrvd/logsrvd_conf.c:715 +#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: није потпуно квалификована путања" -#: logsrvd/logsrvd_conf.c:829 +#: logsrvd/logsrvd_conf.c:767 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "„%s:%d“ непоклопљена [: %s" -#: logsrvd/logsrvd_conf.c:840 +#: logsrvd/logsrvd_conf.c:778 #, c-format msgid "%s:%d invalid config section: %s" msgstr "„%s:%d“ неисправан одељак подешавања: %s" -#: logsrvd/logsrvd_conf.c:848 +#: logsrvd/logsrvd_conf.c:786 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "„%s:%d“ неисправан ред подешавања: %s" -#: logsrvd/logsrvd_conf.c:854 +#: logsrvd/logsrvd_conf.c:792 #, c-format msgid "%s:%d expected section name: %s" msgstr "„%s:%d“ очекиван је назив одељка: %s" -#: logsrvd/logsrvd_conf.c:868 +#: logsrvd/logsrvd_conf.c:806 #, c-format msgid "invalid value for %s: %s" msgstr "неисправна вредност за „%s“: %s" -#: logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:814 #, c-format msgid "%s:%d unknown key: %s" msgstr "„%s:%d“ непознат кључ: %s" -#: logsrvd/logsrvd_conf.c:1032 +#: logsrvd/logsrvd_conf.c:1003 #, c-format msgid "unknown syslog facility %s" msgstr "непознато постројење системског дневика „%s“" -#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1040 -#: logsrvd/logsrvd_conf.c:1044 +#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011 +#: logsrvd/logsrvd_conf.c:1015 #, c-format msgid "unknown syslog priority %s" msgstr "непознат приоритет системског дневика „%s“" -#: logsrvd/sendlog.c:126 +#: logsrvd/sendlog.c:127 msgid "" "\n" "Options:\n" @@ -707,145 +764,148 @@ " -t, --test проверава сервер испитивања шаљући изабрани У/И дневник n пута у паралели\n" " -V, --version приказује податке о издању и излази\n" -#: logsrvd/sendlog.c:163 plugins/sudoers/iolog_client.c:433 +#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432 #, c-format msgid "unable to look up %s:%s: %s" msgstr "не могу да потражим „%s:%s“: %s" -#: logsrvd/sendlog.c:186 +#: logsrvd/sendlog.c:202 msgid "unable to get server IP addr" msgstr "не могу да добавим ИП адресу сервера" -#: logsrvd/sendlog.c:240 plugins/sudoers/sudoreplay.c:852 +#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851 #, c-format msgid "unable to read %s/%s: %s" msgstr "не могу да прочитам „%s/%s“: %s" -#: logsrvd/sendlog.c:261 plugins/sudoers/iolog_client.c:684 +#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694 #, c-format msgid "client message too large: %zu" msgstr "порука клијента је превелика: %zu" -#: logsrvd/sendlog.c:791 +#: logsrvd/sendlog.c:810 #, c-format msgid "%s: write buffer already in use" msgstr "%s: међумеморија писања је већ у употреби" -#: logsrvd/sendlog.c:843 plugins/sudoers/iolog.c:845 -#: plugins/sudoers/iolog.c:914 +#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880 +#: plugins/sudoers/iolog.c:949 #, c-format msgid "unexpected I/O event %d" msgstr "неочекивани У/И догађај „%d“" -#: logsrvd/sendlog.c:889 logsrvd/sendlog.c:906 logsrvd/sendlog.c:940 -#: plugins/sudoers/iolog_client.c:1155 plugins/sudoers/iolog_client.c:1225 -#: plugins/sudoers/iolog_client.c:1273 +#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959 +#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386 +#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490 #, c-format msgid "%s: unexpected state %d" msgstr "%s: неочекивано стање „%d“" -#: logsrvd/sendlog.c:912 plugins/sudoers/iolog_client.c:1231 +#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460 msgid "invalid ServerHello" msgstr "неисправан „Поздрав_сервера“" -#: logsrvd/sendlog.c:976 plugins/sudoers/iolog_client.c:1317 +#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534 #, c-format msgid "error message received from server: %s" msgstr "порука грешке је примљена са сервера: %s" -#: logsrvd/sendlog.c:989 plugins/sudoers/iolog_client.c:1330 +#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547 #, c-format msgid "abort message received from server: %s" msgstr "порука прекида је примљена са сервера: %s" -#: logsrvd/sendlog.c:1008 plugins/sudoers/iolog_client.c:1349 +#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566 msgid "unable to unpack ServerMessage" msgstr "не могу да отпакујем „Поруку_сервера“" -#: logsrvd/sendlog.c:1048 plugins/sudoers/iolog_client.c:1382 +#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: неочекивана вредност врсте_слова „%d“" -#: logsrvd/sendlog.c:1077 +#: logsrvd/sendlog.c:1096 msgid "timeout reading from server" msgstr "истекло је време читања са сервера" -#: logsrvd/sendlog.c:1155 +#: logsrvd/sendlog.c:1174 msgid "premature EOF" msgstr "прерани крај датотеке" -#: logsrvd/sendlog.c:1168 plugins/sudoers/iolog_client.c:1536 +#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751 #, c-format msgid "server message too large: %u" msgstr "порука сервера је превелика: %u" -#: logsrvd/sendlog.c:1219 +#: logsrvd/sendlog.c:1238 msgid "timeout writing to server" msgstr "истекло је време писања на сервер" -#: logsrvd/sendlog.c:1438 plugins/sudoers/iolog_client.c:297 +#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296 msgid "TLS handshake timeout occurred" msgstr "дошло је до временског истека ТЛС руковања" -#: logsrvd/sendlog.c:1457 logsrvd/sendlog.c:1472 -#: plugins/sudoers/iolog_client.c:319 plugins/sudoers/iolog_client.c:335 +#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491 +#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 msgid "unable to set event" msgstr "не могу да подесим догађај" -#: logsrvd/sendlog.c:1482 logsrvd/sendlog.c:1486 +#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505 #, c-format msgid "TLS connection failed: %s" msgstr "ТЛС веза није успела: %s" -#: logsrvd/sendlog.c:1519 +#: logsrvd/sendlog.c:1538 #, c-format msgid "Unable to initialize ssl context: %s" msgstr "Не могу да покренем ссл контекст: %s" -#: logsrvd/sendlog.c:1524 plugins/sudoers/iolog_client.c:259 +#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "Не могу да доделим ссл објекат: %s" -#: logsrvd/sendlog.c:1529 +#: logsrvd/sendlog.c:1548 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "Не могу да прикачим прикључницу ссл објекту: %s" -#: logsrvd/sendlog.c:1773 +#: logsrvd/sendlog.c:1792 msgid "both restart point and iolog ID must be specified" msgstr "мора бити наведена и тачка поновног покретања и ИБ уи_дневника" -#: logsrvd/sendlog.c:1777 +#: logsrvd/sendlog.c:1796 msgid "a restart point may not be set when no I/O is sent" msgstr "тачка поновног покретања се не може подесити када није послат У/И" -#: logsrvd/sendlog.c:1852 +#: logsrvd/sendlog.c:1871 #, c-format msgid "exited prematurely with state %d" msgstr "изађох прерано са стањем „%d“" -#: logsrvd/sendlog.c:1853 +#: logsrvd/sendlog.c:1872 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "протекло време послато серверу [%lld, %ld]" -#: logsrvd/sendlog.c:1855 +#: logsrvd/sendlog.c:1874 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "тачка слања примљена са сервера [%lld, %ld]" -#: plugins/sudoers/alias.c:144 +#: plugins/sudoers/alias.c:148 #, c-format msgid "Alias \"%s\" already defined" msgstr "Псеудоним „%s“ је већ одређен" -#: plugins/sudoers/auth/aix_auth.c:198 plugins/sudoers/logging.c:784 -msgid "unable to fork" -msgstr "не могу да исцепим" +#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343 +#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002 +#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175 +#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114 +msgid "unable to get time of day" +msgstr "не могу да добавим време дана" -#: plugins/sudoers/auth/aix_auth.c:278 +#: plugins/sudoers/auth/aix_auth.c:277 #, c-format msgid "unable to change password for %s" msgstr "не могу да изменим лозинку за „%s“" @@ -867,11 +927,11 @@ msgid "unable to initialize BSD authentication" msgstr "не могу да покренем БСД потврђивање идентитета" -#: plugins/sudoers/auth/bsdauth.c:180 +#: plugins/sudoers/auth/bsdauth.c:179 msgid "your account has expired" msgstr "ваш налог је истекао" -#: plugins/sudoers/auth/bsdauth.c:182 +#: plugins/sudoers/auth/bsdauth.c:181 msgid "approval failed" msgstr "доказивање није успело" @@ -978,7 +1038,7 @@ msgid "PAM account management error: %s" msgstr "грешка управљања ПАМ налогом: %s" -#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:242 +#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243 #, c-format msgid "you do not exist in the %s database" msgstr "ви не постојите у бази подтака „%s“" @@ -1007,7 +1067,7 @@ msgid "SecurID communication failed" msgstr "Није успело комуницирање безбедног ИБ-а" -#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:212 +#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:210 msgid "unknown SecurID error" msgstr "непозната грешка безбедног ИБ-а" @@ -1015,7 +1075,7 @@ msgid "invalid passcode length for SecurID" msgstr "неисправна дужина пропусне шифре за безбедни ИБ" -#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:124 +#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:123 msgid "unable to initialize SIA session" msgstr "не могу да покренем СИА сесију" @@ -1039,7 +1099,7 @@ msgid "Unable to initialize authentication methods." msgstr "Не могу да покренем методе потврђивања идентитета." -#: plugins/sudoers/auth/sudo_auth.c:473 +#: plugins/sudoers/auth/sudo_auth.c:471 msgid "Authentication methods:" msgstr "Начини потврђивања идентитета:" @@ -1072,117 +1132,117 @@ "\n" #: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311 -#: plugins/sudoers/sudoers.c:763 plugins/sudoers/sudoers.c:811 +#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858 #: plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid: %u" msgstr "непознат јиб: %u" -#: plugins/sudoers/check.c:306 plugins/sudoers/iolog.c:117 -#: plugins/sudoers/policy.c:1037 plugins/sudoers/sudoers.c:387 -#: plugins/sudoers/sudoers.c:388 plugins/sudoers/sudoers.c:1240 -#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:392 +#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85 +#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088 +#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307 +#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386 #, c-format msgid "unknown user: %s" msgstr "непознат корисник: %s" -#: plugins/sudoers/cvtsudoers.c:195 +#: plugins/sudoers/cvtsudoers.c:194 #, c-format msgid "order increment: %s: %s" msgstr "повећање поретка: %s: %s" -#: plugins/sudoers/cvtsudoers.c:211 +#: plugins/sudoers/cvtsudoers.c:210 #, c-format msgid "starting order: %s: %s" msgstr "поредак почетка: %s: %s" -#: plugins/sudoers/cvtsudoers.c:221 +#: plugins/sudoers/cvtsudoers.c:220 #, c-format msgid "order padding: %s: %s" msgstr "попуњавање поретка: %s: %s" -#: plugins/sudoers/cvtsudoers.c:231 plugins/sudoers/visudo.c:180 +#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179 #, c-format msgid "%s grammar version %d\n" msgstr "%s граматика издање %d\n" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/testsudoers.c:167 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/testsudoers.c:167 #, c-format msgid "unsupported input format %s" msgstr "неподржан запис улаза „%s“" -#: plugins/sudoers/cvtsudoers.c:263 +#: plugins/sudoers/cvtsudoers.c:262 #, c-format msgid "unsupported output format %s" msgstr "неподржан запис излаза „%s“" -#: plugins/sudoers/cvtsudoers.c:315 +#: plugins/sudoers/cvtsudoers.c:314 #, c-format msgid "%s: input and output files must be different" msgstr "%s: улазна датотека треба да се разликује од излазне" -#: plugins/sudoers/cvtsudoers.c:331 plugins/sudoers/sudoers.c:181 -#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:248 -#: plugins/sudoers/visudo.c:604 plugins/sudoers/visudo.c:927 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178 +#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249 +#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926 msgid "unable to initialize sudoers default values" msgstr "не могу да покренем основне вредности судоерса" -#: plugins/sudoers/cvtsudoers.c:417 plugins/sudoers/ldap_conf.c:431 +#: plugins/sudoers/cvtsudoers.c:416 plugins/sudoers/ldap_conf.c:431 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" -#: plugins/sudoers/cvtsudoers.c:476 +#: plugins/sudoers/cvtsudoers.c:475 #, c-format msgid "%s: unknown key word: %s" msgstr "%s: непозната реч кључа: %s" -#: plugins/sudoers/cvtsudoers.c:522 +#: plugins/sudoers/cvtsudoers.c:521 #, c-format msgid "invalid defaults type: %s" msgstr "неисправна врста основности: %s" -#: plugins/sudoers/cvtsudoers.c:545 +#: plugins/sudoers/cvtsudoers.c:544 #, c-format msgid "invalid suppression type: %s" msgstr "неисправна врста потискивања: %s" -#: plugins/sudoers/cvtsudoers.c:585 plugins/sudoers/cvtsudoers.c:599 +#: plugins/sudoers/cvtsudoers.c:584 plugins/sudoers/cvtsudoers.c:598 #, c-format msgid "invalid filter: %s" msgstr "неисправан филтер: %s" -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:635 -#: plugins/sudoers/cvtsudoers.c:1245 plugins/sudoers/cvtsudoers_json.c:861 -#: plugins/sudoers/cvtsudoers_ldif.c:680 plugins/sudoers/sudoers.c:986 -#: plugins/sudoers/sudoreplay.c:1436 plugins/sudoers/timestamp.c:441 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:923 +#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634 +#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872 +#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053 +#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441 +#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922 #, c-format msgid "unable to open %s" msgstr "не могу да отворим „%s“" -#: plugins/sudoers/cvtsudoers.c:638 plugins/sudoers/visudo.c:932 +#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931 #, c-format msgid "failed to parse %s file, unknown error" msgstr "нисам успео да обрадим %s датотеку, непозната грешка" -#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/visudo.c:949 +#: plugins/sudoers/cvtsudoers.c:645 #, c-format msgid "parse error in %s near line %d\n" msgstr "грешка обраде у %s близу реда %d\n" -#: plugins/sudoers/cvtsudoers.c:649 plugins/sudoers/visudo.c:952 +#: plugins/sudoers/cvtsudoers.c:648 #, c-format msgid "parse error in %s\n" msgstr "грешка обраде у %s\n" -#: plugins/sudoers/cvtsudoers.c:1292 plugins/sudoers/sudoreplay.c:1125 +#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124 #: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328 #, c-format msgid "unable to write to %s" msgstr "не могу да пишем у „%s“" -#: plugins/sudoers/cvtsudoers.c:1315 +#: plugins/sudoers/cvtsudoers.c:1314 #, c-format msgid "" "%s - convert between sudoers file formats\n" @@ -1191,7 +1251,7 @@ "%s – претвара међусобно записе датотеке судоерса\n" "\n" -#: plugins/sudoers/cvtsudoers.c:1317 +#: plugins/sudoers/cvtsudoers.c:1316 msgid "" "\n" "Options:\n" @@ -1232,675 +1292,700 @@ " -V, --version приказује податке о издању и излази" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:702 +#: plugins/sudoers/cvtsudoers_json.c:713 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "непознат унос основности „%s“" -#: plugins/sudoers/cvtsudoers_json.c:640 plugins/sudoers/cvtsudoers_json.c:653 -#: plugins/sudoers/cvtsudoers_ldif.c:345 plugins/sudoers/cvtsudoers_ldif.c:356 -#: plugins/sudoers/ldap.c:502 +#: plugins/sudoers/cvtsudoers_json.c:651 plugins/sudoers/cvtsudoers_json.c:664 +#: plugins/sudoers/cvtsudoers_ldif.c:346 plugins/sudoers/cvtsudoers_ldif.c:357 +#: plugins/sudoers/ldap.c:503 msgid "unable to get GMT time" msgstr "не могу да добавим ГМТ време" -#: plugins/sudoers/cvtsudoers_json.c:643 plugins/sudoers/cvtsudoers_json.c:656 -#: plugins/sudoers/cvtsudoers_ldif.c:348 plugins/sudoers/cvtsudoers_ldif.c:359 -#: plugins/sudoers/ldap.c:508 +#: plugins/sudoers/cvtsudoers_json.c:654 plugins/sudoers/cvtsudoers_json.c:667 +#: plugins/sudoers/cvtsudoers_ldif.c:349 plugins/sudoers/cvtsudoers_ldif.c:360 +#: plugins/sudoers/ldap.c:509 msgid "unable to format timestamp" msgstr "не могу да обликујем временску ознаку" -#: plugins/sudoers/cvtsudoers_ldif.c:632 +#: plugins/sudoers/cvtsudoers_ldif.c:640 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "превише уноса судоерса, највише %u" -#: plugins/sudoers/cvtsudoers_ldif.c:675 +#: plugins/sudoers/cvtsudoers_ldif.c:683 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "променљива „SUDOERS_BASE“ окружења није постављена и „-b“ опција није наведена." -#: plugins/sudoers/def_data.c:42 +#: plugins/sudoers/def_data.c:50 #, c-format msgid "Syslog facility if syslog is being used for logging: %s" msgstr "Помоћник сисдневника ако је сисдневник коришћен за пријављивање: %s" -#: plugins/sudoers/def_data.c:46 +#: plugins/sudoers/def_data.c:54 #, c-format msgid "Syslog priority to use when user authenticates successfully: %s" msgstr "Приоритет системског дневника за коришћење када корисник успешно потврди идентитет: %s" -#: plugins/sudoers/def_data.c:50 +#: plugins/sudoers/def_data.c:58 #, c-format msgid "Syslog priority to use when user authenticates unsuccessfully: %s" msgstr "Приоритет системског дневника за коришћење када корисник неуспешно потврди идентитет: %s" -#: plugins/sudoers/def_data.c:54 +#: plugins/sudoers/def_data.c:62 msgid "Put OTP prompt on its own line" msgstr "Поставља ОТП упит на свом реду" -#: plugins/sudoers/def_data.c:58 +#: plugins/sudoers/def_data.c:66 msgid "Ignore '.' in $PATH" msgstr "Занемарује . у $ПУТАЊИ" -#: plugins/sudoers/def_data.c:62 +#: plugins/sudoers/def_data.c:70 msgid "Always send mail when sudo is run" msgstr "Увек шаље пошту када је судо покренут" -#: plugins/sudoers/def_data.c:66 +#: plugins/sudoers/def_data.c:74 msgid "Send mail if user authentication fails" msgstr "Пошаљи поруку ако потврђивање идентитета корисника не успе" -#: plugins/sudoers/def_data.c:70 +#: plugins/sudoers/def_data.c:78 msgid "Send mail if the user is not in sudoers" msgstr "Пошаљи поруку ако корисник није у судоерсу" -#: plugins/sudoers/def_data.c:74 +#: plugins/sudoers/def_data.c:82 msgid "Send mail if the user is not in sudoers for this host" msgstr "Пошаљи поруку ако корисник није у судоерсу за овог домаћина" -#: plugins/sudoers/def_data.c:78 +#: plugins/sudoers/def_data.c:86 msgid "Send mail if the user is not allowed to run a command" msgstr "Пошаљи поруку ако кориснику није дозвољено да покрене наредбу" -#: plugins/sudoers/def_data.c:82 +#: plugins/sudoers/def_data.c:90 msgid "Send mail if the user tries to run a command" msgstr "Пошаљи поруку ако корисник покуша да покрене наредбу" -#: plugins/sudoers/def_data.c:86 +#: plugins/sudoers/def_data.c:94 msgid "Use a separate timestamp for each user/tty combo" msgstr "Користи одвојене временске ознаке за сваку комбинацију корисник/конзола" -#: plugins/sudoers/def_data.c:90 +#: plugins/sudoers/def_data.c:98 msgid "Lecture user the first time they run sudo" msgstr "Подучава корисника када први пут покрену судо" -#: plugins/sudoers/def_data.c:94 +#: plugins/sudoers/def_data.c:102 #, c-format msgid "File containing the sudo lecture: %s" msgstr "Датотека садржи судо обучавања: %s" -#: plugins/sudoers/def_data.c:98 +#: plugins/sudoers/def_data.c:106 msgid "Require users to authenticate by default" msgstr "Захтева да корисници потврде идентитет по основи" -#: plugins/sudoers/def_data.c:102 +#: plugins/sudoers/def_data.c:110 msgid "Root may run sudo" msgstr "Администратор може да покрене судо" -#: plugins/sudoers/def_data.c:106 +#: plugins/sudoers/def_data.c:114 msgid "Log the hostname in the (non-syslog) log file" msgstr "Бележи назив домаћина у (не-сисдневник) датотеци дневника" -#: plugins/sudoers/def_data.c:110 +#: plugins/sudoers/def_data.c:118 msgid "Log the year in the (non-syslog) log file" msgstr "Бележи годину у (не-сисдневник) датотеци дневника" -#: plugins/sudoers/def_data.c:114 +#: plugins/sudoers/def_data.c:122 msgid "If sudo is invoked with no arguments, start a shell" msgstr "Ако је судо призван без аргумената, покреће шкољку" -#: plugins/sudoers/def_data.c:118 +#: plugins/sudoers/def_data.c:126 msgid "Set $HOME to the target user when starting a shell with -s" msgstr "Подешава $HOME на крајњег корисника када покреће шкољку са „-s“" -#: plugins/sudoers/def_data.c:122 +#: plugins/sudoers/def_data.c:130 msgid "Always set $HOME to the target user's home directory" msgstr "Увек подешава $HOME на циљни лични директоријум корисника" -#: plugins/sudoers/def_data.c:126 +#: plugins/sudoers/def_data.c:134 msgid "Allow some information gathering to give useful error messages" msgstr "Дозвољава прикупљање неких података да би дао корисне поруке грешака" -#: plugins/sudoers/def_data.c:130 +#: plugins/sudoers/def_data.c:138 msgid "Require fully-qualified hostnames in the sudoers file" msgstr "Захтева потпуно одређене називе домаћина у датотеци судоерса" -#: plugins/sudoers/def_data.c:134 +#: plugins/sudoers/def_data.c:142 msgid "Insult the user when they enter an incorrect password" msgstr "Вређа корисника када унесе нетачну лозинку" -#: plugins/sudoers/def_data.c:138 +#: plugins/sudoers/def_data.c:146 msgid "Only allow the user to run sudo if they have a tty" msgstr "Дозвољава кориснику да покрене судо само ако има конзолу" -#: plugins/sudoers/def_data.c:142 +#: plugins/sudoers/def_data.c:150 msgid "Visudo will honor the EDITOR environment variable" msgstr "Висудо ће поштовати променљиву окружења УРЕЂИВАЧА" -#: plugins/sudoers/def_data.c:146 +#: plugins/sudoers/def_data.c:154 msgid "Prompt for root's password, not the users's" msgstr "Тражи администраторову лозинку, а не корисника" -#: plugins/sudoers/def_data.c:150 +#: plugins/sudoers/def_data.c:158 msgid "Prompt for the runas_default user's password, not the users's" msgstr "Тражи корисникову лозинку покреникао_основни, а не корисника" -#: plugins/sudoers/def_data.c:154 +#: plugins/sudoers/def_data.c:162 msgid "Prompt for the target user's password, not the users's" msgstr "Тражи корисникову лозинку мете, а не корисника" -#: plugins/sudoers/def_data.c:158 +#: plugins/sudoers/def_data.c:166 msgid "Apply defaults in the target user's login class if there is one" msgstr "Примењује основности у циљни кориснички разред пријављивања ако постоји" -#: plugins/sudoers/def_data.c:162 +#: plugins/sudoers/def_data.c:170 msgid "Set the LOGNAME and USER environment variables" msgstr "Подешава променљиве окружења НАЗИВДНЕВНИКА и КОРИСНИК" -#: plugins/sudoers/def_data.c:166 +#: plugins/sudoers/def_data.c:174 msgid "Only set the effective uid to the target user, not the real uid" msgstr "Подешава само ефективни јиб на крајњег корисника, а не стваран јиб" -#: plugins/sudoers/def_data.c:170 +#: plugins/sudoers/def_data.c:178 msgid "Don't initialize the group vector to that of the target user" msgstr "Не покреће вектор групе ка оном крајњег корисника" -#: plugins/sudoers/def_data.c:174 +#: plugins/sudoers/def_data.c:182 #, c-format msgid "Length at which to wrap log file lines (0 for no wrap): %u" msgstr "Дужина за преламање редова у датотеци дневника (0 — без преламања): %u" -#: plugins/sudoers/def_data.c:178 +#: plugins/sudoers/def_data.c:186 #, c-format msgid "Authentication timestamp timeout: %.1f minutes" msgstr "Време истека временске ознаке потврђивања идентитета: %.1f минута" -#: plugins/sudoers/def_data.c:182 +#: plugins/sudoers/def_data.c:190 #, c-format msgid "Password prompt timeout: %.1f minutes" msgstr "Време истека упита лозинке: %.1f минута" -#: plugins/sudoers/def_data.c:186 +#: plugins/sudoers/def_data.c:194 #, c-format msgid "Number of tries to enter a password: %u" msgstr "Број покушаја за уношење лозинке: %u" -#: plugins/sudoers/def_data.c:190 +#: plugins/sudoers/def_data.c:198 #, c-format msgid "Umask to use or 0777 to use user's: 0%o" msgstr "Умаска за коришћење или 0777 за коришћење корисника: 0%o" -#: plugins/sudoers/def_data.c:194 +#: plugins/sudoers/def_data.c:202 #, c-format msgid "Path to log file: %s" msgstr "Путања до датотеке дневника: %s" -#: plugins/sudoers/def_data.c:198 +#: plugins/sudoers/def_data.c:206 #, c-format msgid "Path to mail program: %s" msgstr "Путања до програма поште: %s" -#: plugins/sudoers/def_data.c:202 +#: plugins/sudoers/def_data.c:210 #, c-format msgid "Flags for mail program: %s" msgstr "Опције за програм поште: %s" -#: plugins/sudoers/def_data.c:206 +#: plugins/sudoers/def_data.c:214 #, c-format msgid "Address to send mail to: %s" msgstr "Адреса на коју послати поруку: %s" -#: plugins/sudoers/def_data.c:210 +#: plugins/sudoers/def_data.c:218 #, c-format msgid "Address to send mail from: %s" msgstr "Адреса са које послати поруку: %s" -#: plugins/sudoers/def_data.c:214 +#: plugins/sudoers/def_data.c:222 #, c-format msgid "Subject line for mail messages: %s" msgstr "Ред теме за поруке поште: %s" -#: plugins/sudoers/def_data.c:218 +#: plugins/sudoers/def_data.c:226 #, c-format msgid "Incorrect password message: %s" msgstr "Порука нетачне лозинке: %s" -#: plugins/sudoers/def_data.c:222 +#: plugins/sudoers/def_data.c:230 #, c-format msgid "Path to lecture status dir: %s" msgstr "Путања до директоријума стања обучавања: %s" -#: plugins/sudoers/def_data.c:226 +#: plugins/sudoers/def_data.c:234 #, c-format msgid "Path to authentication timestamp dir: %s" msgstr "Путања до директоријума временске ознаке потврђивања идентитета: %s" -#: plugins/sudoers/def_data.c:230 +#: plugins/sudoers/def_data.c:238 #, c-format msgid "Owner of the authentication timestamp dir: %s" msgstr "Власник директоријума временске ознаке потврђивања идентитета: %s" -#: plugins/sudoers/def_data.c:234 +#: plugins/sudoers/def_data.c:242 #, c-format msgid "Users in this group are exempt from password and PATH requirements: %s" msgstr "Корисницима у овој групи се не захтева лозинка и ПУТАЊА: %s" -#: plugins/sudoers/def_data.c:238 +#: plugins/sudoers/def_data.c:246 #, c-format msgid "Default password prompt: %s" msgstr "Основни упит лозинке: %s" -#: plugins/sudoers/def_data.c:242 +#: plugins/sudoers/def_data.c:250 msgid "If set, passprompt will override system prompt in all cases." msgstr "Ако је подешено, упит лозинке ће преписати системски упит у свим случајевима." -#: plugins/sudoers/def_data.c:246 +#: plugins/sudoers/def_data.c:254 #, c-format msgid "Default user to run commands as: %s" msgstr "Основни корисник за покретање наредби као: %s" -#: plugins/sudoers/def_data.c:250 +#: plugins/sudoers/def_data.c:258 #, c-format msgid "Value to override user's $PATH with: %s" msgstr "Вредност за преписивање корисничке $ПУТАЊЕ са: %s" -#: plugins/sudoers/def_data.c:254 +#: plugins/sudoers/def_data.c:262 #, c-format msgid "Path to the editor for use by visudo: %s" msgstr "Путања до уређивача кога ће да користи висудо: %s" -#: plugins/sudoers/def_data.c:258 +#: plugins/sudoers/def_data.c:266 #, c-format msgid "When to require a password for 'list' pseudocommand: %s" msgstr "Када да затражи лозинку за псеудонаредбу „list“: %s" -#: plugins/sudoers/def_data.c:262 +#: plugins/sudoers/def_data.c:270 #, c-format msgid "When to require a password for 'verify' pseudocommand: %s" msgstr "Када да затражи лозинку за псеудонаредбу „verify“: %s" -#: plugins/sudoers/def_data.c:266 -msgid "Preload the dummy exec functions contained in the sudo_noexec library" -msgstr "Унапред учитава лажне функције извршавања које се налазе у библиотеци „sudo_noexec“" +#: plugins/sudoers/def_data.c:274 +msgid "Preload the sudo_noexec library which replaces the exec functions" +msgstr "Унапред учитава „sudo_noexec“ библиотеку која мења функцију извршавања" -#: plugins/sudoers/def_data.c:270 +#: plugins/sudoers/def_data.c:278 msgid "If LDAP directory is up, do we ignore local sudoers file" msgstr "Ако је ЛДАП директоријум изнет, да ли занемарујемо месну датотеку судоерса" -#: plugins/sudoers/def_data.c:274 +#: plugins/sudoers/def_data.c:282 #, c-format msgid "File descriptors >= %d will be closed before executing a command" msgstr "Описници датотека >= %d ће бити затворени пре извршавања наредбе" -#: plugins/sudoers/def_data.c:278 +#: plugins/sudoers/def_data.c:286 msgid "If set, users may override the value of \"closefrom\" with the -C option" msgstr "Ако је подешено, корисници могу да препишу вредност „closefrom“ са опцијом „-C“" -#: plugins/sudoers/def_data.c:282 +#: plugins/sudoers/def_data.c:290 msgid "Allow users to set arbitrary environment variables" msgstr "Дозвољава корисницима да подесе произвољне променљиве окружења" -#: plugins/sudoers/def_data.c:286 +#: plugins/sudoers/def_data.c:294 msgid "Reset the environment to a default set of variables" msgstr "Враћа окружење на основни скуп променљивих" -#: plugins/sudoers/def_data.c:290 -msgid "Environment variables to check for sanity:" +#: plugins/sudoers/def_data.c:298 +msgid "Environment variables to check for safety:" msgstr "Променљиве окружења за проверу исправности:" -#: plugins/sudoers/def_data.c:294 +#: plugins/sudoers/def_data.c:302 msgid "Environment variables to remove:" msgstr "Променљиве окружења за уклањање:" -#: plugins/sudoers/def_data.c:298 +#: plugins/sudoers/def_data.c:306 msgid "Environment variables to preserve:" msgstr "Променљиве окружења за очување:" -#: plugins/sudoers/def_data.c:302 +#: plugins/sudoers/def_data.c:310 #, c-format msgid "SELinux role to use in the new security context: %s" msgstr "СЕЛинукс улога за употребу у новом контексту безбедности: %s" -#: plugins/sudoers/def_data.c:306 +#: plugins/sudoers/def_data.c:314 #, c-format msgid "SELinux type to use in the new security context: %s" msgstr "СЕЛинукс врста за употребу у новом контексту безбедности: %s" -#: plugins/sudoers/def_data.c:310 +#: plugins/sudoers/def_data.c:318 #, c-format msgid "Path to the sudo-specific environment file: %s" msgstr "Путања до судо-посебне датотеке окружења: %s" -#: plugins/sudoers/def_data.c:314 +#: plugins/sudoers/def_data.c:322 #, c-format msgid "Path to the restricted sudo-specific environment file: %s" msgstr "Путања до ограничене судо-посебне датотеке окружења: %s" -#: plugins/sudoers/def_data.c:318 +#: plugins/sudoers/def_data.c:326 #, c-format msgid "Locale to use while parsing sudoers: %s" msgstr "Језк за коришћење при обради судоерса: %s" -#: plugins/sudoers/def_data.c:322 +#: plugins/sudoers/def_data.c:330 msgid "Allow sudo to prompt for a password even if it would be visible" msgstr "Дозвољава да судо тражи лозинку чак и ако би била видљива" -#: plugins/sudoers/def_data.c:326 +#: plugins/sudoers/def_data.c:334 msgid "Provide visual feedback at the password prompt when there is user input" msgstr "Обезбеђује видну повратну поруку при тражењу лозинке када постоји унос корисника" -#: plugins/sudoers/def_data.c:330 +#: plugins/sudoers/def_data.c:338 msgid "Use faster globbing that is less accurate but does not access the filesystem" msgstr "Користи брже упоређивање које је мање тачно али не приступа систему датотека" -#: plugins/sudoers/def_data.c:334 +#: plugins/sudoers/def_data.c:342 msgid "The umask specified in sudoers will override the user's, even if it is more permissive" msgstr "Умаска наведена у судоерсима ће преписати корисникову, чак и ако има већа овлашћења" -#: plugins/sudoers/def_data.c:338 +#: plugins/sudoers/def_data.c:346 msgid "Log user's input for the command being run" msgstr "Бележи корисников улаз за покренуту наредбу" -#: plugins/sudoers/def_data.c:342 +#: plugins/sudoers/def_data.c:350 msgid "Log the output of the command being run" msgstr "Бележи излаз покренуте наредбе" -#: plugins/sudoers/def_data.c:346 +#: plugins/sudoers/def_data.c:354 msgid "Compress I/O logs using zlib" msgstr "Пакује У/И дневнике користећи злиб" -#: plugins/sudoers/def_data.c:350 +#: plugins/sudoers/def_data.c:358 msgid "Always run commands in a pseudo-tty" msgstr "Увек покреће наредбе у привидној конзоли" -#: plugins/sudoers/def_data.c:354 +#: plugins/sudoers/def_data.c:362 #, c-format msgid "Plugin for non-Unix group support: %s" msgstr "Прикључак за подршку не-Јуникс групе: %s" -#: plugins/sudoers/def_data.c:358 +#: plugins/sudoers/def_data.c:366 #, c-format msgid "Directory in which to store input/output logs: %s" msgstr "Директоријум за смештај улазних/излазних дневника: %s" -#: plugins/sudoers/def_data.c:362 +#: plugins/sudoers/def_data.c:370 #, c-format msgid "File in which to store the input/output log: %s" msgstr "Датотека за смештај улазно/излазног дневника: %s" -#: plugins/sudoers/def_data.c:366 +#: plugins/sudoers/def_data.c:374 msgid "Add an entry to the utmp/utmpx file when allocating a pty" msgstr "Додаје унос у датотеку „utmp/utmpx“ када додељује „pty“" -#: plugins/sudoers/def_data.c:370 +#: plugins/sudoers/def_data.c:378 msgid "Set the user in utmp to the runas user, not the invoking user" msgstr "Подешава корисника у „utmp“-у на корисника покрени-као, не призивајући корисника" -#: plugins/sudoers/def_data.c:374 +#: plugins/sudoers/def_data.c:382 #, c-format msgid "Set of permitted privileges: %s" msgstr "Скуп допуштених повластица: %s" -#: plugins/sudoers/def_data.c:378 +#: plugins/sudoers/def_data.c:386 #, c-format msgid "Set of limit privileges: %s" msgstr "Скуп повластица ограничења: %s" -#: plugins/sudoers/def_data.c:382 +#: plugins/sudoers/def_data.c:390 msgid "Run commands on a pty in the background" msgstr "Покреће наредбе у позадини на назовитерминалу" -#: plugins/sudoers/def_data.c:386 +#: plugins/sudoers/def_data.c:394 #, c-format msgid "PAM service name to use: %s" msgstr "Назив ПАМ услуге за коришћење: %s" -#: plugins/sudoers/def_data.c:390 +#: plugins/sudoers/def_data.c:398 #, c-format msgid "PAM service name to use for login shells: %s" msgstr "Назив ПАМ услуге за шкољке пријављивања: %s" -#: plugins/sudoers/def_data.c:394 +#: plugins/sudoers/def_data.c:402 msgid "Attempt to establish PAM credentials for the target user" msgstr "Покушава да успостави ПАМ пуномоћства за циљног корисника" -#: plugins/sudoers/def_data.c:398 +#: plugins/sudoers/def_data.c:406 msgid "Create a new PAM session for the command to run in" msgstr "Прави нову ПАМ сесију за покретање наредбе" -#: plugins/sudoers/def_data.c:402 +#: plugins/sudoers/def_data.c:410 msgid "Perform PAM account validation management" msgstr "Обавља управљање провером ПАМ налога" -#: plugins/sudoers/def_data.c:406 +#: plugins/sudoers/def_data.c:414 #, c-format msgid "Maximum I/O log sequence number: %s" msgstr "Највећи број низа У/И дневника: %s" -#: plugins/sudoers/def_data.c:410 +#: plugins/sudoers/def_data.c:418 msgid "Enable sudoers netgroup support" msgstr "Укључује подршку нетгрупе судоерса" -#: plugins/sudoers/def_data.c:414 +#: plugins/sudoers/def_data.c:422 msgid "Check parent directories for writability when editing files with sudoedit" msgstr "Проверава родитељски директоријум за уписивошћу када уређује датотеке са „sudoedit“" -#: plugins/sudoers/def_data.c:418 +#: plugins/sudoers/def_data.c:426 msgid "Follow symbolic links when editing files with sudoedit" msgstr "Прати симболичке везе када уређује датотеке са „sudoedit“" -#: plugins/sudoers/def_data.c:422 +#: plugins/sudoers/def_data.c:430 msgid "Query the group plugin for unknown system groups" msgstr "Пропитује прикључак групе за непознатим групама система" -#: plugins/sudoers/def_data.c:426 +#: plugins/sudoers/def_data.c:434 msgid "Match netgroups based on the entire tuple: user, host and domain" msgstr "Упоређује мрежне групе на основу читавог слога: корисник, домаћин и домен" -#: plugins/sudoers/def_data.c:430 +#: plugins/sudoers/def_data.c:438 msgid "Allow commands to be run even if sudo cannot write to the audit log" msgstr "Допушта покретање наредби чак и ако судо не може да пише у дневник прегледа" -#: plugins/sudoers/def_data.c:434 +#: plugins/sudoers/def_data.c:442 msgid "Allow commands to be run even if sudo cannot write to the I/O log" msgstr "Допушта покретање наредби чак и ако судо не може да пише у дневник У/И" -#: plugins/sudoers/def_data.c:438 +#: plugins/sudoers/def_data.c:446 msgid "Allow commands to be run even if sudo cannot write to the log file" msgstr "Допушта покретање наредби чак и ако судо не може да пише у датотеку дневника" -#: plugins/sudoers/def_data.c:442 +#: plugins/sudoers/def_data.c:450 msgid "Resolve groups in sudoers and match on the group ID, not the name" msgstr "Решава групе у судоерсима и упоређује ИД групе, а не назив" -#: plugins/sudoers/def_data.c:446 +#: plugins/sudoers/def_data.c:454 #, c-format msgid "Log entries larger than this value will be split into multiple syslog messages: %u" msgstr "Уноси дневника већи од ове вредности биће подељени на више порука системског дневника: %u" -#: plugins/sudoers/def_data.c:450 +#: plugins/sudoers/def_data.c:458 #, c-format msgid "User that will own the I/O log files: %s" msgstr "Корисник који ће поседовати датотеке дневника У/И: %s" -#: plugins/sudoers/def_data.c:454 +#: plugins/sudoers/def_data.c:462 #, c-format msgid "Group that will own the I/O log files: %s" msgstr "Група која ће поседовати датотеке дневника У/И: %s" -#: plugins/sudoers/def_data.c:458 +#: plugins/sudoers/def_data.c:466 #, c-format msgid "File mode to use for the I/O log files: 0%o" msgstr "Режим датотеке за коришћење за датотеке дневника У/И: 0%o" -#: plugins/sudoers/def_data.c:462 +#: plugins/sudoers/def_data.c:470 #, c-format msgid "Execute commands by file descriptor instead of by path: %s" msgstr "Извршава наредбе описником датотеке уместо путањом: %s" -#: plugins/sudoers/def_data.c:466 +#: plugins/sudoers/def_data.c:474 msgid "Ignore unknown Defaults entries in sudoers instead of producing a warning" msgstr "Занемарује непознате уносе основности у судоерсу уместо да даје упозорење" -#: plugins/sudoers/def_data.c:470 +#: plugins/sudoers/def_data.c:478 #, c-format msgid "Time in seconds after which the command will be terminated: %u" msgstr "Време у секундама након ког ће наредба бити окончана: %u" -#: plugins/sudoers/def_data.c:474 +#: plugins/sudoers/def_data.c:482 msgid "Allow the user to specify a timeout on the command line" msgstr "Допушта кориснику да наведе време на линији наредби" -#: plugins/sudoers/def_data.c:478 +#: plugins/sudoers/def_data.c:486 msgid "Flush I/O log data to disk immediately instead of buffering it" msgstr "Пребацује У/И податке дневника на диск одмах уместо да га смешта у међумеморију" -#: plugins/sudoers/def_data.c:482 +#: plugins/sudoers/def_data.c:490 msgid "Include the process ID when logging via syslog" msgstr "Укључује ИБ процеса приликом пријављивања путем дневника система" -#: plugins/sudoers/def_data.c:486 +#: plugins/sudoers/def_data.c:494 #, c-format msgid "Type of authentication timestamp record: %s" msgstr "Врста временске ознаке потврђивања идентитета: %s" -#: plugins/sudoers/def_data.c:490 +#: plugins/sudoers/def_data.c:498 #, c-format msgid "Authentication failure message: %s" msgstr "Потврђивање идентитета није успело: %s" -#: plugins/sudoers/def_data.c:494 +#: plugins/sudoers/def_data.c:502 msgid "Ignore case when matching user names" msgstr "Занемарује величину слова приликом поклапања назива корисника" -#: plugins/sudoers/def_data.c:498 +#: plugins/sudoers/def_data.c:506 msgid "Ignore case when matching group names" msgstr "Занемарује величину слова приликом поклапања назива групе" -#: plugins/sudoers/def_data.c:502 +#: plugins/sudoers/def_data.c:510 msgid "Log when a command is allowed by sudoers" msgstr "Пише дневник када судоерси дозвољавају наредбу" -#: plugins/sudoers/def_data.c:506 +#: plugins/sudoers/def_data.c:514 msgid "Log when a command is denied by sudoers" msgstr "Пише дневник када судоерси не дозвољавају наредбу" -#: plugins/sudoers/def_data.c:510 +#: plugins/sudoers/def_data.c:518 msgid "Sudo log server(s) to connect to with optional port" msgstr "Судо сервер(и) дневника за повезивање са изборним прикључником" -#: plugins/sudoers/def_data.c:514 +#: plugins/sudoers/def_data.c:522 #, c-format msgid "Sudo log server timeout in seconds: %u" msgstr "Време истека судо сервера дневника у секундама: %u" -#: plugins/sudoers/def_data.c:518 +#: plugins/sudoers/def_data.c:526 msgid "Enable SO_KEEPALIVE socket option on the socket connected to the logserver" msgstr "Укључује „SO_KEEPALIVE“ опцију прикључнице са повезаном прикључницом са сервером дневника" -#: plugins/sudoers/def_data.c:522 +#: plugins/sudoers/def_data.c:530 #, c-format msgid "Path to the audit server's CA bundle file: %s" msgstr "Путања до датотеке групних издавача уверења сервера испитивања: %s" -#: plugins/sudoers/def_data.c:526 +#: plugins/sudoers/def_data.c:534 #, c-format msgid "Path to the sudoers certificate file: %s" msgstr "Путања до датотеке уверења судоерса: %s" -#: plugins/sudoers/def_data.c:530 +#: plugins/sudoers/def_data.c:538 #, c-format msgid "Path to the sudoers private key file: %s" msgstr "Путања до датотеке датотеке личног кључа судоерса: %s" -#: plugins/sudoers/def_data.c:534 +#: plugins/sudoers/def_data.c:542 msgid "Verify that the log server's certificate is valid" msgstr "Потврђује да је исправно уверење дневника сервера" -#: plugins/sudoers/def_data.c:538 +#: plugins/sudoers/def_data.c:546 msgid "Allow the use of unknown runas user and/or group ID" msgstr "Допушта коришћење непознатог „runas“ корисника и/или ИБ-а групе" -#: plugins/sudoers/def_data.c:542 +#: plugins/sudoers/def_data.c:550 msgid "Only permit running commands as a user with a valid shell" msgstr "Допушта покретање наредби као корисник само са исправном шкољком" -#: plugins/sudoers/def_data.c:546 +#: plugins/sudoers/def_data.c:554 msgid "Set the pam remote user to the user running sudo" msgstr "Поставља пам удаљеног корисника на корисника покретача судо-а" -#: plugins/sudoers/def_data.c:550 +#: plugins/sudoers/def_data.c:558 msgid "Set the pam remote host to the local host name" msgstr "Поставља пам удаљеног домаћина на назив локалног домаћина" -#: plugins/sudoers/defaults.c:183 +#: plugins/sudoers/def_data.c:562 #, c-format -msgid "%s:%d unknown defaults entry \"%s\"" -msgstr "%s:%d непознат унос основности „%s“" +msgid "Working directory to change to before executing the command: %s" +msgstr "Радни директоријум за прелазак пре извршавања наредбе: %s" -#: plugins/sudoers/defaults.c:186 +#: plugins/sudoers/def_data.c:566 #, c-format -msgid "%s: unknown defaults entry \"%s\"" -msgstr "%s: непознат унос основности „%s“" +msgid "Root directory to change to before executing the command: %s" +msgstr "Корени директоријум за прелазак пре извршавања наредбе: %s" -#: plugins/sudoers/defaults.c:229 +#: plugins/sudoers/def_data.c:570 #, c-format -msgid "%s:%d no value specified for \"%s\"" -msgstr "%s:%d није наведена вредност за „%s“" +msgid "The format of logs to produce: %s" +msgstr "Формат резултирајућих дневника: %s" -#: plugins/sudoers/defaults.c:232 +#: plugins/sudoers/defaults.c:185 #, c-format -msgid "%s: no value specified for \"%s\"" -msgstr "%s: није наведена вредност за „%s“" +msgid "%s:%d:%d: unknown defaults entry \"%s\"" +msgstr "%s:%d:%d: непознат унос основности „%s“" + +#: plugins/sudoers/defaults.c:188 +#, c-format +msgid "%s: unknown defaults entry \"%s\"" +msgstr "%s: непознат унос основности „%s“" -#: plugins/sudoers/defaults.c:252 +#: plugins/sudoers/defaults.c:234 #, c-format -msgid "%s:%d values for \"%s\" must start with a '/'" -msgstr "%s:%d вредност за „%s“ мора да почиње /" +msgid "%s:%d:%d: no value specified for \"%s\"" +msgstr "%s:%d:%d: није наведена вредност за „%s“" -#: plugins/sudoers/defaults.c:255 +#: plugins/sudoers/defaults.c:237 #, c-format -msgid "%s: values for \"%s\" must start with a '/'" -msgstr "%s: вредност за „%s“ мора да почиње /" +msgid "%s: no value specified for \"%s\"" +msgstr "%s: није наведена вредност за „%s“" -#: plugins/sudoers/defaults.c:277 +#: plugins/sudoers/defaults.c:275 #, c-format -msgid "%s:%d option \"%s\" does not take a value" -msgstr "%s:%d опција „%s“ не узима вредност" +msgid "%s:%d:%d: option \"%s\" does not take a value" +msgstr "%s:%d:%d: опција „%s“ не узима вредност" -#: plugins/sudoers/defaults.c:280 +#: plugins/sudoers/defaults.c:278 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s: опција „%s“ не узима вредност" -#: plugins/sudoers/defaults.c:305 +#: plugins/sudoers/defaults.c:303 #, c-format -msgid "%s:%d invalid Defaults type 0x%x for option \"%s\"" -msgstr "%s:%d неисправна врста основности 0x%x за опцију „%s“" +msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" +msgstr "%s:%d:%d: неисправна врста основности 0x%x за опцију „%s“" -#: plugins/sudoers/defaults.c:308 +#: plugins/sudoers/defaults.c:306 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s: неисправна врста основности 0x%x за опцију „%s“" -#: plugins/sudoers/defaults.c:318 +#: plugins/sudoers/defaults.c:316 #, c-format -msgid "%s:%d value \"%s\" is invalid for option \"%s\"" -msgstr "%s:%d вредност „%s“ је неисправна за опцију „%s“" +msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" +msgstr "%s:%d:%d: вредност „%s“ је неисправна за опцију „%s“" -#: plugins/sudoers/defaults.c:321 +#: plugins/sudoers/defaults.c:319 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s: вредност „%s“ је неисправна за опцију „%s“" -#: plugins/sudoers/env.c:404 +#: plugins/sudoers/defaults.c:1030 +#, c-format +msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" +msgstr "%s:%d:%d: вредност за „%s“ мора да почиње са /, ~ или *" + +#: plugins/sudoers/defaults.c:1034 +#, c-format +msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" +msgstr "%s: вредност за „%s“ мора да почиње са /, ~ или *" + +#: plugins/sudoers/defaults.c:1045 +#, c-format +msgid "%s:%d:%d: values for \"%s\" must start with a '/'" +msgstr "%s:%d:%d: вредност за „%s“ мора да почиње са /" + +#: plugins/sudoers/defaults.c:1049 +#, c-format +msgid "%s: values for \"%s\" must start with a '/'" +msgstr "%s: вредност за „%s“ мора да почиње /" + +#: plugins/sudoers/env.c:405 msgid "sudo_putenv: corrupted envp, length mismatch" msgstr "sudo_putenv: оштећено стави окружење, дужине не одговарају" -#: plugins/sudoers/env.c:1131 +#: plugins/sudoers/env.c:1133 msgid "unable to rebuild the environment" msgstr "не могу поново да изградим окружење" -#: plugins/sudoers/env.c:1205 +#: plugins/sudoers/env.c:1207 #, c-format msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "извините, није вам дозвољено да подесите следеће променљиве окружења: %s" -#: plugins/sudoers/file.c:104 +#: plugins/sudoers/file.c:107 #, c-format msgid "parse error in %s near line %d" msgstr "грешка обраде у %s близу реда %d" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:110 #, c-format msgid "parse error in %s" msgstr "грешка обраде у %s" @@ -1925,7 +2010,7 @@ msgid "%s must only be writable by owner" msgstr "Само корисник може да пише у „%s“" -#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:571 +#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:569 #, c-format msgid "unable to load %s: %s" msgstr "не могу да учитам %s: %s" @@ -1954,122 +2039,78 @@ msgid "Local IP address and netmask pairs:\n" msgstr "Месна ИП адреса и парови мрежне маске:\n" -#: plugins/sudoers/iolog.c:142 plugins/sudoers/sudoers.c:393 -#: plugins/sudoers/sudoers.c:394 plugins/sudoers/sudoers.c:1274 -#: plugins/sudoers/testsudoers.c:416 +#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410 #, c-format msgid "unknown group: %s" msgstr "непозната група: %s" -#: plugins/sudoers/iolog.c:517 plugins/sudoers/iolog.c:807 -#: plugins/sudoers/iolog.c:959 plugins/sudoers/iolog.c:966 -#: plugins/sudoers/iolog.c:1087 plugins/sudoers/iolog.c:1094 -#: plugins/sudoers/iolog.c:1193 plugins/sudoers/iolog.c:1200 +#: plugins/sudoers/iolog.c:622 +msgid "unable to update sequence file" +msgstr "не могу да освежим датотеку низа" + +#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841 +#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001 +#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129 +#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235 #, c-format msgid "unable to write to I/O log file: %s" msgstr "не могу да пишем у датотеку дневника У/И: %s" -#: plugins/sudoers/iolog.c:566 -msgid "unable to update sequence file" -msgstr "не могу да освежим датотеку низа" - -#: plugins/sudoers/iolog.c:605 +#: plugins/sudoers/iolog.c:661 #, c-format msgid "unable to create %s/%s" msgstr "не могу да направим „%s/%s“" -#: plugins/sudoers/iolog.c:631 -msgid "unable to connect to log server" -msgstr "не могу да се повежем на сервер дневника" - -#: plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:886 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: унутрашња грешка, датотека У/И дневника за догађај %d није отворена" -#: plugins/sudoers/iolog.c:944 plugins/sudoers/iolog.c:1072 -#: plugins/sudoers/iolog.c:1177 plugins/sudoers/timestamp.c:855 -#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:492 -#: plugins/sudoers/visudo.c:498 +#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107 +#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855 +#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493 +#: plugins/sudoers/visudo.c:499 msgid "unable to read the clock" msgstr "не могу да прочитам сат" -#: plugins/sudoers/iolog.c:1169 plugins/sudoers/iolog_client.c:977 +#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: унутрашња грешка, неисправан сигнал %d" -#: plugins/sudoers/iolog_client.c:113 plugins/sudoers/iolog_client.c:392 -#: plugins/sudoers/iolog_client.c:1200 plugins/sudoers/iolog_client.c:1775 -msgid "error in event loop" -msgstr "грешка у петљи догађаја" - -#: plugins/sudoers/iolog_client.c:194 -#, c-format -msgid "Creation of new SSL_CTX object failed: %s" -msgstr "Стварање новог „SSL_CTX“ објекта није успело: %s" - -#: plugins/sudoers/iolog_client.c:346 plugins/sudoers/iolog_client.c:351 -#, c-format -msgid "TLS connection to %s:%s failed: %s" -msgstr "ТЛС повезивање са „%s:%s“ није успело: %s" - -#: plugins/sudoers/iolog_client.c:496 -msgid "TLS initialization was unsuccessful" -msgstr "ТЛС покретање беше безуспешно" - -#: plugins/sudoers/iolog_client.c:505 -msgid "TLS handshake was unsuccessful" -msgstr "ТЛС руковање беше безуспешно" - -#: plugins/sudoers/iolog_client.c:767 plugins/sudoers/iolog_client.c:959 -msgid "unable to get time of day" -msgstr "не могу да добавим време дана" - -#: plugins/sudoers/iolog_client.c:986 -#, c-format -msgid "%s: internal error, invalid exit status %d" -msgstr "%s: унутрашња грешка, неисправно излазно стање %d" - -#: plugins/sudoers/iolog_client.c:1523 -msgid "lost connection to log server" -msgstr "изгубих везу са сервером дневника" - -#: plugins/sudoers/iolog_client.c:1600 -msgid "missing write buffer" -msgstr "недостаје међумеморија писања" - -#: plugins/sudoers/ldap.c:176 plugins/sudoers/ldap_conf.c:291 +#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:291 msgid "starttls not supported when using ldaps" msgstr "старттлс није подржано када се користи лдапс" -#: plugins/sudoers/ldap.c:247 +#: plugins/sudoers/ldap.c:248 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "не могу да покренем ССЛ уверење и бп кључа: %s" -#: plugins/sudoers/ldap.c:250 +#: plugins/sudoers/ldap.c:251 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "морате да подесите „TLS_CERT“ у „%s“ да користите ССЛ" -#: plugins/sudoers/ldap.c:1658 +#: plugins/sudoers/ldap.c:1660 #, c-format msgid "unable to initialize LDAP: %s" msgstr "не могу да покренем ЛДАП: %s" -#: plugins/sudoers/ldap.c:1694 +#: plugins/sudoers/ldap.c:1697 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:1831 plugins/sudoers/parse_ldif.c:744 +#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "неисправна особина „sudoOrder“: %s" #: plugins/sudoers/ldap_conf.c:200 -msgid "sudo_ldap_conf_add_ports: port too large" -msgstr "sudo_ldap_conf_add_ports: прикључник је превелик" +#, c-format +msgid "%s: port too large" +msgstr "%s: прикључник је превелик" #: plugins/sudoers/ldap_conf.c:260 #, c-format @@ -2080,7 +2121,7 @@ msgid "unable to mix ldap and ldaps URIs" msgstr "не могу да помешам лдап и лдапс путање" -#: plugins/sudoers/ldap_util.c:548 plugins/sudoers/ldap_util.c:550 +#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "не могу да претворим „sudoOption“: %s%s%s" @@ -2089,66 +2130,91 @@ msgid "unable to open audit system" msgstr "не могу да отворим систем прегледа" -#: plugins/sudoers/linux_audit.c:100 +#: plugins/sudoers/linux_audit.c:101 msgid "unable to send audit message" msgstr "не могу да пошаљем поруку прегледа" -#: plugins/sudoers/logging.c:167 +#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 +#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023 +msgid "error in event loop" +msgstr "грешка у петљи догађаја" + +#: plugins/sudoers/log_client.c:193 #, c-format -msgid "unable to open log file: %s" -msgstr "не могу да отворим датотеку дневника: %s" +msgid "Creation of new SSL_CTX object failed: %s" +msgstr "Стварање новог „SSL_CTX“ објекта није успело: %s" -#: plugins/sudoers/logging.c:175 +#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 #, c-format -msgid "unable to lock log file: %s" -msgstr "не могу да закључам датотеку дневника: %s" +msgid "TLS connection to %s:%s failed: %s" +msgstr "ТЛС повезивање са „%s:%s“ није успело: %s" + +#: plugins/sudoers/log_client.c:519 +msgid "TLS initialization was unsuccessful" +msgstr "ТЛС покретање беше безуспешно" -#: plugins/sudoers/logging.c:208 +#: plugins/sudoers/log_client.c:528 +msgid "TLS handshake was unsuccessful" +msgstr "ТЛС руковање беше безуспешно" + +#: plugins/sudoers/log_client.c:1202 #, c-format -msgid "unable to write log file: %s" -msgstr "не могу да запишем датотеку дневника: %s" +msgid "%s: internal error, invalid exit status %d" +msgstr "%s: унутрашња грешка, неисправно излазно стање %d" -#: plugins/sudoers/logging.c:241 +#: plugins/sudoers/log_client.c:1738 +msgid "lost connection to log server" +msgstr "изгубих везу са сервером дневника" + +#: plugins/sudoers/log_client.c:1815 +msgid "missing write buffer" +msgstr "недостаје међумеморија писања" + +#: plugins/sudoers/log_client.c:1964 +msgid "unable to connect to log server" +msgstr "не могу да се повежем на сервер дневника" + +#: plugins/sudoers/logging.c:244 msgid "user NOT in sudoers" msgstr "корисник НИЈЕ у судоерсу" -#: plugins/sudoers/logging.c:243 +#: plugins/sudoers/logging.c:246 msgid "user NOT authorized on host" msgstr "корисник НИЈЕ овлашћен на домаћину" -#: plugins/sudoers/logging.c:245 +#: plugins/sudoers/logging.c:248 msgid "command not allowed" msgstr "наредба није допуштена" -#: plugins/sudoers/logging.c:288 +#: plugins/sudoers/logging.c:269 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "„%s“ се не налази у датотеци судоерса. О овом инциденту ће бити поднет извештај.\n" -#: plugins/sudoers/logging.c:291 +#: plugins/sudoers/logging.c:272 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "„%s“ нема права да покрене судо над „%s“. О овом инциденту ће бити поднет извештај.\n" -#: plugins/sudoers/logging.c:295 +#: plugins/sudoers/logging.c:276 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Извините, корисник %s не може покренути судо на %s.\n" -#: plugins/sudoers/logging.c:298 +#: plugins/sudoers/logging.c:279 #, 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:335 plugins/sudoers/sudoers.c:512 -#: plugins/sudoers/sudoers.c:514 plugins/sudoers/sudoers.c:516 -#: plugins/sudoers/sudoers.c:518 plugins/sudoers/sudoers.c:665 -#: plugins/sudoers/sudoers.c:667 +#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583 +#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587 +#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739 +#: plugins/sudoers/sudoers.c:741 #, c-format msgid "%s: command not found" msgstr "%s: нема такве наредбе" -#: plugins/sudoers/logging.c:337 plugins/sudoers/sudoers.c:508 +#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2157,15 +2223,7 @@ "занемарујем „%s“ пронађено у „.“\n" "Користите „sudo ./%s“ ако је то „%s“ које желите да покренете." -#: plugins/sudoers/logging.c:354 -msgid "authentication failure" -msgstr "потврђивање идентитета није успело" - -#: plugins/sudoers/logging.c:380 -msgid "a password is required" -msgstr "потребна је лозинка" - -#: plugins/sudoers/logging.c:450 +#: plugins/sudoers/logging.c:337 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" @@ -2173,32 +2231,30 @@ msgstr[1] "%u покушаја нетачне лозинке" msgstr[2] "%u покушаја нетачне лозинке" -#: plugins/sudoers/logging.c:714 -#, c-format -msgid "unable to dup stdin: %m" -msgstr "не могу да удвостручим стандардни улаз: %m" +#: plugins/sudoers/logging.c:393 +msgid "authentication failure" +msgstr "потврђивање идентитета није успело" -#: plugins/sudoers/logging.c:751 -#, c-format -msgid "unable to execute %s: %m" -msgstr "не могу да извршим „%s“: %m" +#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +msgid "a password is required" +msgstr "потребна је лозинка" -#: plugins/sudoers/logging.c:792 plugins/sudoers/logging.c:848 +#: plugins/sudoers/logging.c:729 #, c-format -msgid "unable to fork: %m" -msgstr "не могу да исцепим: %m" +msgid "unable to open log file: %s" +msgstr "не могу да отворим датотеку дневника: %s" -#: plugins/sudoers/logging.c:838 +#: plugins/sudoers/logging.c:762 #, c-format -msgid "unable to open pipe: %m" -msgstr "не могу да отворим спојку: %m" +msgid "unable to write log file: %s" +msgstr "не могу да запишем датотеку дневника: %s" -#: plugins/sudoers/match_digest.c:116 +#: plugins/sudoers/match_digest.c:129 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "приказ за %s (%s) није у %s облику" -#: plugins/sudoers/parse.c:442 +#: plugins/sudoers/parse.c:518 #, c-format msgid "" "\n" @@ -2207,8 +2263,7 @@ "\n" "ЛДАП улога: %s\n" -#: plugins/sudoers/parse.c:445 -#, c-format +#: plugins/sudoers/parse.c:521 msgid "" "\n" "Sudoers entry:\n" @@ -2216,42 +2271,38 @@ "\n" "Унос судоерса:\n" -#: plugins/sudoers/parse.c:447 -#, c-format +#: plugins/sudoers/parse.c:523 msgid " RunAsUsers: " msgstr " „Покрени-као“ корисници: " -#: plugins/sudoers/parse.c:462 -#, c-format +#: plugins/sudoers/parse.c:538 msgid " RunAsGroups: " msgstr " „Покрени-као“ групе: " -#: plugins/sudoers/parse.c:472 -#, c-format +#: plugins/sudoers/parse.c:548 msgid " Options: " msgstr " Опције: " -#: plugins/sudoers/parse.c:522 -#, c-format +#: plugins/sudoers/parse.c:602 msgid " Commands:\n" msgstr " Наредбе:\n" -#: plugins/sudoers/parse.c:713 +#: plugins/sudoers/parse.c:793 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Упоређује уносе основности за „%s“ на %s:\n" -#: plugins/sudoers/parse.c:731 +#: plugins/sudoers/parse.c:811 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Покрени-као и Наредбено-посебне основности за „%s“:\n" -#: plugins/sudoers/parse.c:749 +#: plugins/sudoers/parse.c:829 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "Корисник „%s“ може да покреће следеће наредбе на %s:\n" -#: plugins/sudoers/parse.c:764 +#: plugins/sudoers/parse.c:844 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "Корисник „%s“ нема права да покрене судо над „%s“.\n" @@ -2266,48 +2317,58 @@ msgid "invalid LDIF attribute: %s" msgstr "неисправна особина „LDIF“: %s" -#: plugins/sudoers/policy.c:77 plugins/sudoers/policy.c:102 +#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "судо челник је поставио неисправну „%.*s“" -#: plugins/sudoers/policy.c:281 plugins/sudoers/testsudoers.c:272 +#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272 msgid "unable to parse network address list" msgstr "не могу да обрадим списак адреса мреже" -#: plugins/sudoers/policy.c:426 +#: plugins/sudoers/policy.c:455 msgid "user name not set by sudo front-end" msgstr "судо челник није поставио име корисника" -#: plugins/sudoers/policy.c:430 +#: plugins/sudoers/policy.c:459 msgid "user-ID not set by sudo front-end" msgstr "судо челник није поставио ИБ корисника" -#: plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:463 msgid "group-ID not set by sudo front-end" msgstr "судо челник није поставио ИБ групе" -#: plugins/sudoers/policy.c:438 +#: plugins/sudoers/policy.c:467 msgid "host name not set by sudo front-end" msgstr "судо челник није поставио назив домаћина" -#: plugins/sudoers/policy.c:896 plugins/sudoers/visudo.c:230 -#: plugins/sudoers/visudo.c:861 +#: plugins/sudoers/policy.c:643 +#, c-format +msgid "invalid working directory: %s" +msgstr "неисправан радни директоријум: %s" + +#: plugins/sudoers/policy.c:811 +#, c-format +msgid "invalid chroot directory: %s" +msgstr "неисправан „chroot“ директоријум: %s" + +#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231 +#: plugins/sudoers/visudo.c:860 #, c-format msgid "unable to execute %s" msgstr "не могу да извршим „%s“" -#: plugins/sudoers/policy.c:1060 +#: plugins/sudoers/policy.c:1111 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Издање %s прикључка политике судоерса\n" -#: plugins/sudoers/policy.c:1062 +#: plugins/sudoers/policy.c:1113 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Граматика датотеке судоерса издање %d\n" -#: plugins/sudoers/policy.c:1066 +#: plugins/sudoers/policy.c:1117 #, c-format msgid "" "\n" @@ -2316,86 +2377,86 @@ "\n" "Путања судоерса: %s\n" -#: plugins/sudoers/policy.c:1069 +#: plugins/sudoers/policy.c:1120 #, c-format msgid "nsswitch path: %s\n" msgstr "путања нс-прекидача: %s\n" -#: plugins/sudoers/policy.c:1071 +#: plugins/sudoers/policy.c:1122 #, c-format msgid "ldap.conf path: %s\n" msgstr "путања лдап.подешавања: %s\n" -#: plugins/sudoers/policy.c:1072 +#: plugins/sudoers/policy.c:1123 #, c-format msgid "ldap.secret path: %s\n" msgstr "путања лдап.тајне: %s\n" -#: plugins/sudoers/policy.c:1105 +#: plugins/sudoers/policy.c:1156 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "немогу да региструјем прикачку врсте „%d“ (издање %d.%d)" -#: plugins/sudoers/pwutil.c:214 plugins/sudoers/pwutil.c:232 +#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235 #, c-format msgid "unable to cache uid %u" msgstr "не могу да сместим у оставу јиб „%u“" -#: plugins/sudoers/pwutil.c:226 +#: plugins/sudoers/pwutil.c:229 #, c-format msgid "unable to cache uid %u, already exists" msgstr "не могу да сместим у оставу јиб „%u“, већ постоји" -#: plugins/sudoers/pwutil.c:286 plugins/sudoers/pwutil.c:304 -#: plugins/sudoers/pwutil.c:367 plugins/sudoers/pwutil.c:412 +#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307 +#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415 #, c-format msgid "unable to cache user %s" msgstr "не могу да сместим у оставу корисника „%s“" -#: plugins/sudoers/pwutil.c:299 +#: plugins/sudoers/pwutil.c:302 #, c-format msgid "unable to cache user %s, already exists" msgstr "не могу да сместим у оставу корисника „%s“, већ постоји" -#: plugins/sudoers/pwutil.c:531 plugins/sudoers/pwutil.c:549 +#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552 #, c-format msgid "unable to cache gid %u" msgstr "не могу да сместим у оставу гиб „%u“" -#: plugins/sudoers/pwutil.c:543 +#: plugins/sudoers/pwutil.c:546 #, c-format msgid "unable to cache gid %u, already exists" msgstr "не могу да сместим у оставу гиб „%u“, већ постоји" -#: plugins/sudoers/pwutil.c:596 plugins/sudoers/pwutil.c:614 -#: plugins/sudoers/pwutil.c:662 plugins/sudoers/pwutil.c:704 +#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617 +#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707 #, c-format msgid "unable to cache group %s" msgstr "не могу да сместим у оставу групу „%s“" -#: plugins/sudoers/pwutil.c:609 +#: plugins/sudoers/pwutil.c:612 #, c-format msgid "unable to cache group %s, already exists" msgstr "не могу да сместим у оставу групу „%s“, већ постоји" -#: plugins/sudoers/pwutil.c:831 plugins/sudoers/pwutil.c:883 -#: plugins/sudoers/pwutil.c:933 plugins/sudoers/pwutil.c:986 +#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885 +#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987 #, c-format msgid "unable to cache group list for %s, already exists" msgstr "не могу да сместим у оставу списак групе за „%s“, већ постоји" -#: plugins/sudoers/pwutil.c:837 plugins/sudoers/pwutil.c:888 -#: plugins/sudoers/pwutil.c:939 plugins/sudoers/pwutil.c:991 +#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890 +#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992 #, c-format msgid "unable to cache group list for %s" msgstr "не могу да сместим у оставу списак групе за „%s“" -#: plugins/sudoers/pwutil.c:877 +#: plugins/sudoers/pwutil.c:879 #, c-format msgid "unable to parse groups for %s" msgstr "не могу да обрадим групе за „%s“" -#: plugins/sudoers/pwutil.c:980 +#: plugins/sudoers/pwutil.c:981 #, c-format msgid "unable to parse gids for %s" msgstr "не могу да обрадим гид-ове за „%s“" @@ -2459,239 +2520,259 @@ msgid "truncated audit path argv[0]: %s" msgstr "„argv[0]“ скраћене путање прегледа: %s" -#: plugins/sudoers/sssd.c:573 +#: plugins/sudoers/sssd.c:572 msgid "unable to initialize SSS source. Is SSSD installed on your machine?" msgstr "не могу да покренем ССС извор. Да ли је СССД инсталиран на вашем рачунару?" -#: plugins/sudoers/sssd.c:581 plugins/sudoers/sssd.c:590 -#: plugins/sudoers/sssd.c:599 plugins/sudoers/sssd.c:608 -#: plugins/sudoers/sssd.c:617 +#: plugins/sudoers/sssd.c:580 plugins/sudoers/sssd.c:589 +#: plugins/sudoers/sssd.c:598 plugins/sudoers/sssd.c:607 +#: plugins/sudoers/sssd.c:616 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "не могу да нађем симбол „%s“ у „%s“" -#: plugins/sudoers/sudoers.c:217 plugins/sudoers/sudoers.c:943 +#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010 msgid "problem with defaults entries" msgstr "неприлике са основним уносима" -#: plugins/sudoers/sudoers.c:221 +#: plugins/sudoers/sudoers.c:218 msgid "no valid sudoers sources found, quitting" msgstr "нисам пронашао исправне изворе судоерса, прекидам" -#: plugins/sudoers/sudoers.c:297 +#: plugins/sudoers/sudoers.c:292 +#, c-format +msgid "user not allowed to change root directory to %s" +msgstr "кориснику није дозвољено да промени корени директоријум у „%s“" + +#: plugins/sudoers/sudoers.c:294 +#, c-format +msgid "you are not permitted to use the -R option with %s" +msgstr "није вам допуштено да користите опцију „-R“ са „%s“" + +#: plugins/sudoers/sudoers.c:319 +#, c-format +msgid "user not allowed to change directory to %s" +msgstr "кориснику није дозвољено да промени директоријум у „%s“" + +#: plugins/sudoers/sudoers.c:320 +#, c-format +msgid "you are not permitted to use the -D option with %s" +msgstr "није вам допуштено да користите опцију „-D“ са „%s“" + +#: plugins/sudoers/sudoers.c:351 msgid "sudoers specifies that root is not allowed to sudo" msgstr "судоерси наводе да администратор није дозвољен у судоу" -#: plugins/sudoers/sudoers.c:357 +#: plugins/sudoers/sudoers.c:411 msgid "user not allowed to override closefrom limit" msgstr "кориснику није дозвољено да препише „closefrom“ ограничење" -#: plugins/sudoers/sudoers.c:358 +#: plugins/sudoers/sudoers.c:412 msgid "you are not permitted to use the -C option" msgstr "није вам допуштено да користите опцију „-C“" -#: plugins/sudoers/sudoers.c:420 +#: plugins/sudoers/sudoers.c:472 #, c-format msgid "timestamp owner (%s): No such user" msgstr "власник временске ознаке (%s): нема таквог корисника" -#: plugins/sudoers/sudoers.c:435 +#: plugins/sudoers/sudoers.c:487 msgid "no tty" msgstr "нема конзоле" -#: plugins/sudoers/sudoers.c:436 +#: plugins/sudoers/sudoers.c:488 msgid "sorry, you must have a tty to run sudo" msgstr "извините, морате имати конзолу да покренете судо" -#: plugins/sudoers/sudoers.c:442 plugins/sudoers/sudoers.c:444 +#: plugins/sudoers/sudoers.c:495 #, c-format msgid "invalid shell for user %s: %s" msgstr "неисправна шкољка за корисника „%s“: %s" -#: plugins/sudoers/sudoers.c:507 +#: plugins/sudoers/sudoers.c:578 msgid "command in current directory" msgstr "наредба у текућем директоријуму" -#: plugins/sudoers/sudoers.c:525 +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to set a command timeout" msgstr "кориснику није дозвољено да подеси време истека наредбе" -#: plugins/sudoers/sudoers.c:526 +#: plugins/sudoers/sudoers.c:599 msgid "sorry, you are not allowed set a command timeout" msgstr "извините, није вам дозвољено да подесите време истека наредбе" -#: plugins/sudoers/sudoers.c:534 +#: plugins/sudoers/sudoers.c:607 msgid "user not allowed to preserve the environment" msgstr "кориснику није дозвољено да сачува окружење" -#: plugins/sudoers/sudoers.c:535 +#: plugins/sudoers/sudoers.c:609 msgid "sorry, you are not allowed to preserve the environment" msgstr "извините, није вам дозвољено да сачувате окружење" -#: plugins/sudoers/sudoers.c:878 +#: plugins/sudoers/sudoers.c:945 msgid "command too long" msgstr "наредба је предуга" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:1003 msgid "sudoedit doesn't need to be run via sudo" msgstr "„sudoedit“ не треба да се покреће путем „sudo“-а" -#: plugins/sudoers/sudoers.c:990 plugins/sudoers/sudoreplay.c:1548 +#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "не могу да прочитам „%s“" -#: plugins/sudoers/sudoers.c:1015 plugins/sudoers/visudo.c:431 -#: plugins/sudoers/visudo.c:727 +#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432 +#: plugins/sudoers/visudo.c:726 #, c-format msgid "unable to stat %s" msgstr "не могу да добијем податке о „%s“" -#: plugins/sudoers/sudoers.c:1019 plugins/sudoers/visudo.c:1037 +#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018 #, c-format msgid "%s is not a regular file" msgstr "„%s“ није обична датотека" -#: plugins/sudoers/sudoers.c:1023 plugins/sudoers/timestamp.c:252 toke.l:1060 +#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s је у власништву уиб-а %u, а треба бити %u" -#: plugins/sudoers/sudoers.c:1027 toke.l:1065 +#: plugins/sudoers/sudoers.c:1094 toke.l:1117 #, c-format msgid "%s is world writable" msgstr "Сви могу да пишу у „%s“" -#: plugins/sudoers/sudoers.c:1031 toke.l:1068 +#: plugins/sudoers/sudoers.c:1098 toke.l:1120 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s је у власништву уиб-а %u, а треба бити %u" -#: plugins/sudoers/sudoers.c:1064 +#: plugins/sudoers/sudoers.c:1131 #, c-format msgid "only root can use \"-c %s\"" msgstr "само администратор може да користи „-c %s“" -#: plugins/sudoers/sudoers.c:1083 +#: plugins/sudoers/sudoers.c:1150 #, c-format msgid "unknown login class: %s" msgstr "непознат разред пријављивања: %s" -#: plugins/sudoers/sudoers.c:1168 plugins/sudoers/sudoers.c:1183 +#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250 #, c-format msgid "unable to resolve host %s" msgstr "не могу да решим домаћина „%s“" -#: plugins/sudoers/sudoreplay.c:258 +#: plugins/sudoers/sudoreplay.c:257 #, c-format msgid "invalid filter option: %s" msgstr "неисправна опција пропусника: %s" -#: plugins/sudoers/sudoreplay.c:274 +#: plugins/sudoers/sudoreplay.c:273 #, c-format msgid "invalid max wait: %s" msgstr "неисправно најдуже чекање: %s" -#: plugins/sudoers/sudoreplay.c:297 +#: plugins/sudoers/sudoreplay.c:296 #, c-format msgid "invalid speed factor: %s" msgstr "неисправан чинилац брзине: %s" -#: plugins/sudoers/sudoreplay.c:333 +#: plugins/sudoers/sudoreplay.c:332 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:338 +#: plugins/sudoers/sudoreplay.c:337 #, c-format msgid "%s/timing: %s" msgstr "%s/временисање: %s" -#: plugins/sudoers/sudoreplay.c:342 +#: plugins/sudoers/sudoreplay.c:341 #, c-format msgid "%s/%s: %s" msgstr "%s/%s: %s" -#: plugins/sudoers/sudoreplay.c:366 +#: plugins/sudoers/sudoreplay.c:365 #, c-format msgid "Replaying sudo session: %s" msgstr "Понављам сесију судоа: %s" -#: plugins/sudoers/sudoreplay.c:628 +#: plugins/sudoers/sudoreplay.c:627 msgid "unable to set tty to raw mode" msgstr "не могу да подесим конзолу на сирови режим" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:678 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "Упозорење: ваш терминал је премали да би исправно приказао дневник.\n" -#: plugins/sudoers/sudoreplay.c:680 +#: plugins/sudoers/sudoreplay.c:679 #, 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:708 +#: plugins/sudoers/sudoreplay.c:707 msgid "Replay finished, press any key to restore the terminal." msgstr "Одговор је завршен, притисните неки тастер да повратите терминал." -#: plugins/sudoers/sudoreplay.c:1198 plugins/sudoers/sudoreplay.c:1228 +#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 #, c-format msgid "ambiguous expression \"%s\"" msgstr "нејасан израз „%s“" -#: plugins/sudoers/sudoreplay.c:1250 +#: plugins/sudoers/sudoreplay.c:1249 msgid "unmatched ')' in expression" msgstr "непоклопљена ) у изразу" -#: plugins/sudoers/sudoreplay.c:1254 +#: plugins/sudoers/sudoreplay.c:1253 #, c-format msgid "unknown search term \"%s\"" msgstr "непознат појам претраге „%s“" -#: plugins/sudoers/sudoreplay.c:1269 +#: plugins/sudoers/sudoreplay.c:1268 #, c-format msgid "%s requires an argument" msgstr "„%s“ захтева аргумент" -#: plugins/sudoers/sudoreplay.c:1272 plugins/sudoers/sudoreplay.c:1524 +#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 #, c-format msgid "invalid regular expression: %s" msgstr "неисправан регуларан израз: %s" -#: plugins/sudoers/sudoreplay.c:1277 +#: plugins/sudoers/sudoreplay.c:1276 #, c-format msgid "could not parse date \"%s\"" msgstr "не могу да обрадим датум „%s“" -#: plugins/sudoers/sudoreplay.c:1286 +#: plugins/sudoers/sudoreplay.c:1285 msgid "unmatched '(' in expression" msgstr "непоклопљена ( у изразу" -#: plugins/sudoers/sudoreplay.c:1288 +#: plugins/sudoers/sudoreplay.c:1287 msgid "illegal trailing \"or\"" msgstr "недозвољено пратеће „или“" -#: plugins/sudoers/sudoreplay.c:1290 +#: plugins/sudoers/sudoreplay.c:1289 msgid "illegal trailing \"!\"" msgstr "недозвољени пратећи „!“" -#: plugins/sudoers/sudoreplay.c:1348 +#: plugins/sudoers/sudoreplay.c:1347 #, c-format msgid "unknown search type %d" msgstr "непозната врста претраге „%d“" -#: plugins/sudoers/sudoreplay.c:1615 +#: plugins/sudoers/sudoreplay.c:1614 #, 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:1618 +#: plugins/sudoers/sudoreplay.c:1617 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "употреба: %s [-h] [-d дир] -l [израз претраге]\n" -#: plugins/sudoers/sudoreplay.c:1627 +#: plugins/sudoers/sudoreplay.c:1626 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2700,7 +2781,7 @@ "%s — понавља дневнике сесије судоа\n" "\n" -#: plugins/sudoers/sudoreplay.c:1629 +#: plugins/sudoers/sudoreplay.c:1628 msgid "" "\n" "Options:\n" @@ -2728,11 +2809,11 @@ " -s, --speed=број убрзава или успорава излаз\n" " -V, --version приказује податке о издању и излази" -#: plugins/sudoers/testsudoers.c:354 +#: plugins/sudoers/testsudoers.c:348 msgid "\thost unmatched" msgstr "\tдомаћин није поклопљен" -#: plugins/sudoers/testsudoers.c:357 +#: plugins/sudoers/testsudoers.c:351 msgid "" "\n" "Command allowed" @@ -2740,7 +2821,7 @@ "\n" "Наредба је допуштена" -#: plugins/sudoers/testsudoers.c:358 +#: plugins/sudoers/testsudoers.c:352 msgid "" "\n" "Command denied" @@ -2748,7 +2829,7 @@ "\n" "Наредба је одбијена" -#: plugins/sudoers/testsudoers.c:358 +#: plugins/sudoers/testsudoers.c:352 msgid "" "\n" "Command unmatched" @@ -2793,89 +2874,89 @@ msgid "the -x option will be removed in a future release" msgstr "опција „-x“ биће уклоњена у наредном издању" -#: plugins/sudoers/visudo.c:227 +#: plugins/sudoers/visudo.c:228 msgid "please consider using the cvtsudoers utility instead" msgstr "размотрите коришћење помагала „cvtsudoers“" -#: plugins/sudoers/visudo.c:278 plugins/sudoers/visudo.c:660 +#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659 #, c-format msgid "press return to edit %s: " msgstr "притисните „унеси“ да уредите „%s“: " -#: plugins/sudoers/visudo.c:339 +#: plugins/sudoers/visudo.c:340 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "наведени уређивач (%s) не постоји" -#: plugins/sudoers/visudo.c:341 +#: plugins/sudoers/visudo.c:342 #, c-format msgid "no editor found (editor path = %s)" msgstr "нисам пронашао уређивача (путања уређивача = %s)" -#: plugins/sudoers/visudo.c:451 plugins/sudoers/visudo.c:459 +#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460 msgid "write error" msgstr "грешка писања" -#: plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:506 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "не могу да добавим податке привремене датотеке (%s), %s је неизмењено" -#: plugins/sudoers/visudo.c:512 +#: plugins/sudoers/visudo.c:513 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "привремена датотека нулте дужине (%s), %s је неизмењено" -#: plugins/sudoers/visudo.c:518 +#: plugins/sudoers/visudo.c:519 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "уређивач (%s) није успео, %s је неизмењено" -#: plugins/sudoers/visudo.c:540 +#: plugins/sudoers/visudo.c:541 #, c-format msgid "%s unchanged" msgstr "„%s“ је неизмењено" -#: plugins/sudoers/visudo.c:599 +#: plugins/sudoers/visudo.c:598 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "не могу поново да отворим привремену датотеку (%s), %s је неизмењено." -#: plugins/sudoers/visudo.c:611 +#: plugins/sudoers/visudo.c:610 #, c-format msgid "unable to parse temporary file (%s), unknown error" msgstr "не могу да обрадим привремену датотеку (%s), непозната грешка" -#: plugins/sudoers/visudo.c:649 +#: plugins/sudoers/visudo.c:648 #, c-format msgid "internal error, unable to find %s in list!" msgstr "унутрашња грешка, не могу да пронађем „%s“ на списку!" -#: plugins/sudoers/visudo.c:729 plugins/sudoers/visudo.c:738 +#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "не могу да подесим (јиб, гиб) за %s на (%u, %u)" -#: plugins/sudoers/visudo.c:761 +#: plugins/sudoers/visudo.c:760 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "„%s“ и „%s“ нису на истом систему датотека, користим „mv“ за преименовање" -#: plugins/sudoers/visudo.c:775 +#: plugins/sudoers/visudo.c:774 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "наредба није успела: „%s %s %s“, %s је неизмењено" -#: plugins/sudoers/visudo.c:785 +#: plugins/sudoers/visudo.c:784 #, c-format msgid "error renaming %s, %s unchanged" msgstr "грешка преименовања „%s“, %s је неизмењено" -#: plugins/sudoers/visudo.c:806 +#: plugins/sudoers/visudo.c:805 msgid "What now? " msgstr "Шта сада? " -#: plugins/sudoers/visudo.c:820 +#: plugins/sudoers/visudo.c:819 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -2887,66 +2968,66 @@ " x — излази без чувања измена у датотеци судоерса\n" " Q — прекида и чува измене у датотеци судоерса (ОПАСНО!)\n" -#: plugins/sudoers/visudo.c:866 +#: plugins/sudoers/visudo.c:865 #, c-format msgid "unable to run %s" msgstr "не могу да покренем %s" -#: plugins/sudoers/visudo.c:896 +#: plugins/sudoers/visudo.c:895 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s: погрешан власник (јиб, гиб) треба бити (%u, %u)\n" -#: plugins/sudoers/visudo.c:903 +#: plugins/sudoers/visudo.c:902 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s: лоша овлашћења, требају бити у режиму 0%o\n" -#: plugins/sudoers/visudo.c:960 plugins/sudoers/visudo.c:967 +#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958 #, c-format msgid "%s: parsed OK\n" msgstr "%s: успешно је обрађено\n" -#: plugins/sudoers/visudo.c:986 +#: plugins/sudoers/visudo.c:977 #, c-format msgid "%s busy, try again later" msgstr "„%s“ је заузет, покушајте касније" -#: plugins/sudoers/visudo.c:989 +#: plugins/sudoers/visudo.c:980 #, c-format msgid "unable to lock %s" msgstr "не могу да закључам „%s“" -#: plugins/sudoers/visudo.c:990 +#: plugins/sudoers/visudo.c:981 msgid "Edit anyway? [y/N]" msgstr "Да ипак уреим? [д/Н]" -#: plugins/sudoers/visudo.c:1083 +#: plugins/sudoers/visudo.c:1091 #, c-format -msgid "Error: %s:%d cycle in %s \"%s\"" -msgstr "Грешка: %s:%d циклус у „%s“ „%s“" +msgid "Error: %s:%d:%d: cycle in %s \"%s\"" +msgstr "Грешка: %s:%d:%d: циклус у „%s“ „%s“" -#: plugins/sudoers/visudo.c:1084 +#: plugins/sudoers/visudo.c:1092 #, c-format -msgid "Warning: %s:%d cycle in %s \"%s\"" -msgstr "Упозорење: %s:%d циклус у „%s“ „%s“" +msgid "Warning: %s:%d:%d: cycle in %s \"%s\"" +msgstr "Упозорење: %s:%d:%d: циклус у „%s“ „%s“" -#: plugins/sudoers/visudo.c:1088 +#: plugins/sudoers/visudo.c:1096 #, c-format -msgid "Error: %s:%d %s \"%s\" referenced but not defined" -msgstr "Грешка: %s:%d упута за „%s“ „%s“ постоји али није одређена" +msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined" +msgstr "Грешка: %s:%d:%d: упута за „%s“ „%s“ постоји али није одређена" -#: plugins/sudoers/visudo.c:1089 +#: plugins/sudoers/visudo.c:1097 #, c-format -msgid "Warning: %s:%d %s \"%s\" referenced but not defined" -msgstr "Упозорење: %s:%d упута за „%s“ „%s“ постоји али није одређена" +msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined" +msgstr "Упозорење: %s:%d:%d: упута за „%s“ „%s“ постоји али није одређена" -#: plugins/sudoers/visudo.c:1180 +#: plugins/sudoers/visudo.c:1188 #, c-format -msgid "Warning: %s:%d unused %s \"%s\"" -msgstr "Упозорење: %s:%d некоришћено „%s“ „%s“" +msgid "Warning: %s:%d:%d: unused %s \"%s\"" +msgstr "Упозорење: %s:%d:%d: некоришћено „%s“ „%s“" -#: plugins/sudoers/visudo.c:1295 +#: plugins/sudoers/visudo.c:1303 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -2955,7 +3036,7 @@ "%s — безбедно уређује датотеку судоерса\n" "\n" -#: plugins/sudoers/visudo.c:1297 +#: plugins/sudoers/visudo.c:1305 msgid "" "\n" "Options:\n" @@ -2975,10 +3056,43 @@ " -s, --strict строга провера синтаксе\n" " -V, --version приказује податке о издању и излази\n" -#: toke.l:1032 +#: toke.l:179 +msgid "empty string" +msgstr "празна ниска" + +#: toke.l:189 toke.l:491 +msgid "empty group" +msgstr "празна група" + +#: toke.l:197 toke.l:489 +msgid "empty netgroup" +msgstr "празна мрежна група" + +#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392 +msgid "invalid line continuation" +msgstr "неисправан наставак реда" + +#: toke.l:528 toke.l:540 +msgid "invalid IPv6 address" +msgstr "неисправна ИПв6 адреса" + +#: toke.l:764 +msgid "unexpected line break in string" +msgstr "неочекивани прекид реда у нисци" + +#: toke.l:1084 msgid "too many levels of includes" msgstr "превише нивоа укључивања" +#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library" +#~ msgstr "Унапред учитава лажне функције извршавања које се налазе у библиотеци „sudo_noexec“" + +#~ msgid "sudo_ldap_conf_add_ports: port too large" +#~ msgstr "sudo_ldap_conf_add_ports: прикључник је превелик" + +#~ msgid "unable to lock log file: %s" +#~ msgstr "не могу да закључам датотеку дневника: %s" + #~ msgid "SSL_connect failed: ssl_error=%d, stack=%s\n" #~ msgstr "„SSL_повезивање“ није успело: ssl_грешка=%d, спремник=%s\n" diff -Nru sudo-1.9.4p2/plugins/sudoers/po/sudoers.pot sudo-1.9.5p2/plugins/sudoers/po/sudoers.pot --- sudo-1.9.4p2/plugins/sudoers/po/sudoers.pot 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/po/sudoers.pot 2021-01-23 09:46:35.000000000 -0600 @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.4\n" +"Project-Id-Version: sudo 1.9.5\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2020-11-14 06:24-0700\n" +"POT-Creation-Date: 2021-01-09 12:59-0700\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:1077 +#: confstr.sh:1 gram.y:1075 msgid "syntax error" msgstr "" @@ -41,163 +41,167 @@ msgid "Sorry, try again." msgstr "" -#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314 gram.y:334 -#: gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386 gram.y:455 gram.y:464 -#: gram.y:475 gram.y:510 gram.y:517 gram.y:524 gram.y:531 gram.y:558 gram.y:654 -#: gram.y:661 gram.y:670 gram.y:679 gram.y:696 gram.y:834 gram.y:841 gram.y:849 -#: gram.y:855 gram.y:971 gram.y:978 gram.y:985 gram.y:992 gram.y:999 -#: gram.y:1025 gram.y:1032 gram.y:1039 gram.y:1236 gram.y:1526 -#: lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:352 -#: lib/eventlog/eventlog.c:753 lib/eventlog/eventlog.c:817 -#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998 +#: gram.y:224 gram.y:290 gram.y:297 gram.y:304 gram.y:311 gram.y:318 gram.y:338 +#: gram.y:362 gram.y:369 gram.y:376 gram.y:383 gram.y:390 gram.y:459 gram.y:468 +#: gram.y:479 gram.y:514 gram.y:521 gram.y:528 gram.y:535 gram.y:562 gram.y:658 +#: gram.y:665 gram.y:674 gram.y:683 gram.y:700 gram.y:838 gram.y:845 gram.y:853 +#: gram.y:859 gram.y:967 gram.y:974 gram.y:981 gram.y:988 gram.y:995 +#: gram.y:1021 gram.y:1028 gram.y:1035 gram.y:1123 gram.y:1244 gram.y:1534 +#: lib/eventlog/eventlog.c:288 lib/eventlog/eventlog.c:360 +#: lib/eventlog/eventlog.c:761 lib/eventlog/eventlog.c:825 +#: lib/eventlog/eventlog.c:1070 lib/iolog/iolog_fileio.c:998 #: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:305 #: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457 #: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115 #: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133 #: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480 -#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134 -#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143 -#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 -#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119 -#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177 -#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300 -#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561 -#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641 -#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764 -#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182 -#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76 -#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194 -#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300 -#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421 -#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440 -#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460 -#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615 -#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923 -#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181 -#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596 -#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184 -#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 -#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 -#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 -#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 -#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 -#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 -#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333 -#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84 -#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381 -#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706 -#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620 -#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999 -#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166 -#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446 -#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281 -#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499 -#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93 -#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213 -#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244 -#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275 -#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 -#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 -#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 -#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379 -#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408 -#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426 -#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624 -#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707 -#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752 -#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526 -#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265 -#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517 -#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652 -#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867 -#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968 -#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407 -#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 -#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 -#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118 -#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326 -#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381 -#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433 -#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927 -#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265 -#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 -#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 -#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128 -#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432 -#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986 -#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104 -#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145 -#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329 -#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615 -#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008 -#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091 +#: plugins/sudoers/audit.c:115 plugins/sudoers/audit.c:265 +#: plugins/sudoers/auth/bsdauth.c:143 plugins/sudoers/auth/kerb5.c:118 +#: plugins/sudoers/auth/kerb5.c:144 plugins/sudoers/auth/pam.c:669 +#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160 +#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 +#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428 +#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578 +#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756 +#: plugins/sudoers/cvtsudoers.c:764 plugins/sudoers/cvtsudoers.c:1178 +#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284 +#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 +#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 +#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 +#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429 +#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447 +#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468 +#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:634 +#: plugins/sudoers/defaults.c:927 plugins/sudoers/defaults.c:1102 +#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56 +#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72 +#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326 +#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:603 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 +#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686 +#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413 +#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1951 +#: plugins/sudoers/log_client.c:2008 plugins/sudoers/logging.c:100 +#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426 +#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527 +#: plugins/sudoers/match_command.c:277 plugins/sudoers/match_command.c:445 +#: plugins/sudoers/match_command.c:495 plugins/sudoers/match_command.c:569 +#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:199 +#: plugins/sudoers/parse.c:213 plugins/sudoers/parse.c:230 +#: plugins/sudoers/parse.c:244 plugins/sudoers/parse.c:264 +#: plugins/sudoers/parse.c:275 plugins/sudoers/parse_ldif.c:153 +#: plugins/sudoers/parse_ldif.c:184 plugins/sudoers/parse_ldif.c:253 +#: plugins/sudoers/parse_ldif.c:260 plugins/sudoers/parse_ldif.c:265 +#: plugins/sudoers/parse_ldif.c:341 plugins/sudoers/parse_ldif.c:352 +#: plugins/sudoers/parse_ldif.c:379 plugins/sudoers/parse_ldif.c:396 +#: plugins/sudoers/parse_ldif.c:408 plugins/sudoers/parse_ldif.c:412 +#: plugins/sudoers/parse_ldif.c:426 plugins/sudoers/parse_ldif.c:594 +#: plugins/sudoers/parse_ldif.c:624 plugins/sudoers/parse_ldif.c:649 +#: plugins/sudoers/parse_ldif.c:707 plugins/sudoers/parse_ldif.c:724 +#: plugins/sudoers/parse_ldif.c:752 plugins/sudoers/parse_ldif.c:759 +#: plugins/sudoers/policy.c:526 plugins/sudoers/policy.c:874 +#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:194 +#: plugins/sudoers/pwutil.c:265 plugins/sudoers/pwutil.c:343 +#: plugins/sudoers/pwutil.c:517 plugins/sudoers/pwutil.c:581 +#: plugins/sudoers/pwutil.c:652 plugins/sudoers/pwutil.c:811 +#: plugins/sudoers/pwutil.c:867 plugins/sudoers/pwutil.c:911 +#: plugins/sudoers/pwutil.c:968 plugins/sudoers/sssd.c:145 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110 +#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:298 +#: plugins/sudoers/sudoers.c:324 plugins/sudoers/sudoers.c:368 +#: plugins/sudoers/sudoers.c:379 plugins/sudoers/sudoers.c:389 +#: plugins/sudoers/sudoers.c:431 plugins/sudoers/sudoers.c:792 +#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961 +#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552 +#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 +#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228 +#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587 +#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466 +#: plugins/sudoers/timestamp.c:967 plugins/sudoers/toke_util.c:51 +#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:129 +#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123 +#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323 +#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439 +#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935 +#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:916 +#: toke.l:1036 toke.l:1094 msgid "unable to allocate memory" msgstr "" -#: gram.y:552 +#: gram.y:556 msgid "a digest requires a path name" msgstr "" -#: gram.y:581 +#: gram.y:585 msgid "values for \"CWD\" must start with a '/', '~', or '*'" msgstr "" -#: gram.y:593 +#: gram.y:597 msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" msgstr "" -#: gram.y:715 +#: gram.y:719 #, c-format msgid "syntax error, reserved word %s used as an alias name" msgstr "" -#: gram.y:735 +#: gram.y:739 msgid "invalid notbefore value" msgstr "" -#: gram.y:743 +#: gram.y:747 msgid "invalid notafter value" msgstr "" -#: gram.y:752 plugins/sudoers/policy.c:335 +#: gram.y:756 plugins/sudoers/policy.c:335 msgid "timeout value too large" msgstr "" -#: gram.y:754 plugins/sudoers/policy.c:337 +#: gram.y:758 plugins/sudoers/policy.c:337 msgid "invalid timeout value" msgstr "" -#: gram.y:1079 +#: gram.y:1077 #, c-format msgid "%s:%d:%d: %s\n" msgstr "" -#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753 -#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816 -#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998 +#: gram.y:1121 +#, c-format +msgid "Alias \"%s\" already defined" +msgstr "" + +#: gram.y:1534 lib/eventlog/eventlog.c:288 lib/eventlog/eventlog.c:761 +#: lib/eventlog/eventlog.c:823 lib/eventlog/eventlog.c:824 +#: lib/eventlog/eventlog.c:1070 lib/iolog/iolog_fileio.c:998 #: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304 #: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457 #: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106 #: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125 #: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137 -#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293 -#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321 +#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1290 logsrvd/logsrvd.c:1303 +#: logsrvd/logsrvd.c:1348 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321 #: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115 -#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482 +#: plugins/sudoers/audit.c:265 plugins/sudoers/auth/pam.c:482 #: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111 #: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 #: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 @@ -212,8 +216,8 @@ #: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428 #: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446 #: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467 -#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630 -#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098 +#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:634 +#: plugins/sudoers/defaults.c:927 plugins/sudoers/defaults.c:1102 #: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261 #: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 #: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56 @@ -233,17 +237,17 @@ #: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 #: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325 #: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603 -#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105 +#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105 #: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235 #: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381 -#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706 -#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620 -#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999 +#: plugins/sudoers/log_client.c:686 plugins/sudoers/log_client.c:704 +#: plugins/sudoers/log_client.c:1413 plugins/sudoers/log_client.c:1626 +#: plugins/sudoers/log_client.c:1951 plugins/sudoers/log_client.c:2008 #: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165 #: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425 #: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527 -#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448 -#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573 +#: plugins/sudoers/match_command.c:276 plugins/sudoers/match_command.c:444 +#: plugins/sudoers/match_command.c:494 plugins/sudoers/match_command.c:569 #: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 #: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229 #: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263 @@ -276,30 +280,30 @@ #: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 #: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 #: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110 -#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300 -#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370 -#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391 -#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794 +#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:298 +#: plugins/sudoers/sudoers.c:324 plugins/sudoers/sudoers.c:368 +#: plugins/sudoers/sudoers.c:379 plugins/sudoers/sudoers.c:389 +#: plugins/sudoers/sudoers.c:431 plugins/sudoers/sudoers.c:792 #: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961 #: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552 #: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 #: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 #: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228 #: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587 -#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476 -#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51 +#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466 +#: plugins/sudoers/timestamp.c:967 plugins/sudoers/toke_util.c:51 #: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128 #: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123 #: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323 #: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439 #: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935 -#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913 -#: toke.l:1033 toke.l:1091 +#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:916 +#: toke.l:1036 toke.l:1094 #, c-format msgid "%s: %s" msgstr "" -#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463 +#: lib/eventlog/eventlog.c:293 lib/iolog/iolog_json.c:463 #: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468 #: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244 #: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571 @@ -307,7 +311,7 @@ #: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618 #: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748 #: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222 -#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90 +#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:92 #: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711 #: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161 #: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249 @@ -316,36 +320,36 @@ msgid "internal error, %s overflow" msgstr "" -#: lib/eventlog/eventlog.c:343 +#: lib/eventlog/eventlog.c:351 #, c-format msgid "unable to dup stdin: %m" msgstr "" -#: lib/eventlog/eventlog.c:388 +#: lib/eventlog/eventlog.c:396 #, c-format msgid "unable to execute %s: %m" msgstr "" -#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198 +#: lib/eventlog/eventlog.c:436 plugins/sudoers/auth/aix_auth.c:198 msgid "unable to fork" msgstr "" -#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490 +#: lib/eventlog/eventlog.c:444 lib/eventlog/eventlog.c:498 #, c-format msgid "unable to fork: %m" msgstr "" -#: lib/eventlog/eventlog.c:480 +#: lib/eventlog/eventlog.c:488 #, c-format msgid "unable to open pipe: %m" msgstr "" -#: lib/eventlog/eventlog.c:894 +#: lib/eventlog/eventlog.c:902 #, c-format msgid "%8s : %s" msgstr "" -#: lib/eventlog/eventlog.c:923 +#: lib/eventlog/eventlog.c:931 #, c-format msgid "%8s : (command continued) %s" msgstr "" @@ -484,141 +488,141 @@ msgid "unable to find resume point [%lld, %ld] in %s/%s" msgstr "" -#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394 -#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568 -#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632 +#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398 +#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:521 logsrvd/logsrvd.c:572 +#: logsrvd/logsrvd.c:604 logsrvd/logsrvd.c:636 msgid "state machine error" msgstr "" -#: logsrvd/logsrvd.c:299 +#: logsrvd/logsrvd.c:303 msgid "invalid AcceptMessage" msgstr "" -#: logsrvd/logsrvd.c:307 +#: logsrvd/logsrvd.c:311 msgid "error parsing AcceptMessage" msgstr "" -#: logsrvd/logsrvd.c:314 +#: logsrvd/logsrvd.c:318 msgid "error creating I/O log" msgstr "" -#: logsrvd/logsrvd.c:321 +#: logsrvd/logsrvd.c:325 msgid "error logging accept event" msgstr "" -#: logsrvd/logsrvd.c:362 +#: logsrvd/logsrvd.c:366 msgid "invalid RejectMessage" msgstr "" -#: logsrvd/logsrvd.c:370 +#: logsrvd/logsrvd.c:374 msgid "error parsing RejectMessage" msgstr "" -#: logsrvd/logsrvd.c:376 +#: logsrvd/logsrvd.c:380 msgid "error logging reject event" msgstr "" -#: logsrvd/logsrvd.c:486 +#: logsrvd/logsrvd.c:490 msgid "invalid AlertMessage" msgstr "" -#: logsrvd/logsrvd.c:494 +#: logsrvd/logsrvd.c:498 msgid "error parsing AlertMessage" msgstr "" -#: logsrvd/logsrvd.c:502 +#: logsrvd/logsrvd.c:506 msgid "error logging alert event" msgstr "" -#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606 +#: logsrvd/logsrvd.c:527 logsrvd/logsrvd.c:578 logsrvd/logsrvd.c:610 msgid "protocol error" msgstr "" -#: logsrvd/logsrvd.c:533 +#: logsrvd/logsrvd.c:537 msgid "error writing IoBuffer" msgstr "" -#: logsrvd/logsrvd.c:585 +#: logsrvd/logsrvd.c:589 msgid "error writing ChangeWindowSize" msgstr "" -#: logsrvd/logsrvd.c:617 +#: logsrvd/logsrvd.c:621 msgid "error writing CommandSuspend" msgstr "" -#: logsrvd/logsrvd.c:702 +#: logsrvd/logsrvd.c:706 msgid "unrecognized ClientMessage type" msgstr "" -#: logsrvd/logsrvd.c:967 +#: logsrvd/logsrvd.c:977 msgid "client message too large" msgstr "" -#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205 +#: logsrvd/logsrvd.c:1207 logsrvd/logsrvd.c:1215 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "" -#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233 +#: logsrvd/logsrvd.c:1235 logsrvd/logsrvd.c:1243 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "" -#: logsrvd/logsrvd.c:1269 +#: logsrvd/logsrvd.c:1279 #, c-format msgid "unable to get TLS server method: %s" msgstr "" -#: logsrvd/logsrvd.c:1274 +#: logsrvd/logsrvd.c:1284 #, c-format msgid "unable to create TLS context: %s" msgstr "" -#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236 +#: logsrvd/logsrvd.c:1291 plugins/sudoers/log_client.c:236 #, c-format msgid "unable to load certificate %s" msgstr "" -#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216 +#: logsrvd/logsrvd.c:1304 plugins/sudoers/log_client.c:216 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "" -#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249 +#: logsrvd/logsrvd.c:1349 plugins/sudoers/log_client.c:249 #, c-format msgid "unable to load private key %s" msgstr "" -#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365 +#: logsrvd/logsrvd.c:1366 logsrvd/logsrvd.c:1375 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "" -#: logsrvd/logsrvd.c:1378 +#: logsrvd/logsrvd.c:1388 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "" -#: logsrvd/logsrvd.c:1563 +#: logsrvd/logsrvd.c:1573 msgid "unable to get remote IP addr" msgstr "" -#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263 +#: logsrvd/logsrvd.c:1601 plugins/sudoers/log_client.c:263 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "" -#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823 +#: logsrvd/logsrvd.c:1609 logsrvd/logsrvd.c:1731 logsrvd/logsrvd.c:1833 #: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496 #: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956 #: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187 #: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 #: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 -#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594 -#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376 -#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425 -#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692 -#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015 +#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592 +#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382 +#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431 +#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698 +#: plugins/sudoers/log_client.c:2016 plugins/sudoers/log_client.c:2024 #: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 #: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 #: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 @@ -628,18 +632,18 @@ msgid "unable to add event to queue" msgstr "" -#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011 +#: logsrvd/logsrvd.c:1785 logsrvd/logsrvd.c:2027 msgid "unable setup listen socket" msgstr "" -#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124 +#: logsrvd/logsrvd.c:1933 logsrvd/sendlog.c:124 #, c-format msgid "" "%s - send sudo I/O log to remote server\n" "\n" msgstr "" -#: logsrvd/logsrvd.c:1920 +#: logsrvd/logsrvd.c:1936 msgid "" "\n" "Options:\n" @@ -650,16 +654,16 @@ " -V, --version display version information and exit\n" msgstr "" -#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719 +#: logsrvd/logsrvd.c:1988 logsrvd/sendlog.c:1719 msgid "Protobuf-C version 1.3 or higher required" msgstr "" -#: logsrvd/logsrvd.c:1990 +#: logsrvd/logsrvd.c:2006 #, c-format msgid "invalid random drop value: %s" msgstr "" -#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769 +#: logsrvd/logsrvd.c:2010 logsrvd/sendlog.c:1769 #: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 #: plugins/sudoers/visudo.c:177 #, c-format @@ -675,48 +679,48 @@ msgid "%s:%s" msgstr "" -#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653 +#: logsrvd/logsrvd_conf.c:410 logsrvd/logsrvd_conf.c:655 #, c-format msgid "%s: not a fully qualified path" msgstr "" -#: logsrvd/logsrvd_conf.c:767 +#: logsrvd/logsrvd_conf.c:769 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "" -#: logsrvd/logsrvd_conf.c:778 +#: logsrvd/logsrvd_conf.c:780 #, c-format msgid "%s:%d invalid config section: %s" msgstr "" -#: logsrvd/logsrvd_conf.c:786 +#: logsrvd/logsrvd_conf.c:788 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "" -#: logsrvd/logsrvd_conf.c:792 +#: logsrvd/logsrvd_conf.c:794 #, c-format msgid "%s:%d expected section name: %s" msgstr "" -#: logsrvd/logsrvd_conf.c:806 +#: logsrvd/logsrvd_conf.c:808 #, c-format msgid "invalid value for %s: %s" msgstr "" -#: logsrvd/logsrvd_conf.c:814 +#: logsrvd/logsrvd_conf.c:816 #, c-format msgid "%s:%d unknown key: %s" msgstr "" -#: logsrvd/logsrvd_conf.c:1003 +#: logsrvd/logsrvd_conf.c:1005 #, c-format msgid "unknown syslog facility %s" msgstr "" -#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011 -#: logsrvd/logsrvd_conf.c:1015 +#: logsrvd/logsrvd_conf.c:1009 logsrvd/logsrvd_conf.c:1013 +#: logsrvd/logsrvd_conf.c:1017 #, c-format msgid "unknown syslog priority %s" msgstr "" @@ -756,7 +760,7 @@ msgid "unable to read %s/%s: %s" msgstr "" -#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694 +#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:692 #, c-format msgid "client message too large: %zu" msgstr "" @@ -773,31 +777,31 @@ msgstr "" #: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959 -#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386 -#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490 +#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392 +#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496 #, c-format msgid "%s: unexpected state %d" msgstr "" -#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460 +#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1466 msgid "invalid ServerHello" msgstr "" -#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534 +#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1540 #, c-format msgid "error message received from server: %s" msgstr "" -#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547 +#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1553 #, c-format msgid "abort message received from server: %s" msgstr "" -#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566 +#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1572 msgid "unable to unpack ServerMessage" msgstr "" -#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597 +#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1603 #, c-format msgid "%s: unexpected type_case value %d" msgstr "" @@ -810,7 +814,7 @@ msgid "premature EOF" msgstr "" -#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751 +#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1760 #, c-format msgid "server message too large: %u" msgstr "" @@ -871,14 +875,9 @@ msgid "commit point received from server [%lld, %ld]" msgstr "" -#: plugins/sudoers/alias.c:148 -#, c-format -msgid "Alias \"%s\" already defined" -msgstr "" - -#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343 -#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002 -#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175 +#: plugins/sudoers/audit.c:261 plugins/sudoers/audit.c:400 +#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008 +#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181 #: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114 msgid "unable to get time of day" msgstr "" @@ -1093,7 +1092,27 @@ msgid "unable to commit audit record" msgstr "" -#: plugins/sudoers/check.c:258 +#: plugins/sudoers/check.c:264 +#, c-format +msgid "error reading lecture file %s" +msgstr "" + +#: plugins/sudoers/check.c:270 +#, c-format +msgid "ignoring lecture file %s: not a regular file" +msgstr "" + +#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:617 +#: plugins/sudoers/cvtsudoers.c:634 plugins/sudoers/cvtsudoers.c:1244 +#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688 +#: plugins/sudoers/sudoers.c:1053 plugins/sudoers/sudoreplay.c:1435 +#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128 +#: plugins/sudoers/visudo.c:922 +#, c-format +msgid "unable to open %s" +msgstr "" + +#: plugins/sudoers/check.c:283 msgid "" "\n" "We trust you have received the usual lecture from the local System\n" @@ -1105,16 +1124,16 @@ "\n" msgstr "" -#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311 -#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858 +#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335 +#: plugins/sudoers/sudoers.c:835 plugins/sudoers/sudoers.c:856 #: plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid: %u" msgstr "" -#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85 -#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088 -#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307 +#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85 +#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1091 +#: plugins/sudoers/sudoers.c:438 plugins/sudoers/sudoers.c:1307 #: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386 #, c-format msgid "unknown user: %s" @@ -1155,7 +1174,7 @@ msgid "%s: input and output files must be different" msgstr "" -#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:176 #: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249 #: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926 msgid "unable to initialize sudoers default values" @@ -1186,15 +1205,6 @@ msgid "invalid filter: %s" msgstr "" -#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634 -#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872 -#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053 -#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922 -#, c-format -msgid "unable to open %s" -msgstr "" - #: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931 #, c-format msgid "failed to parse %s file, unknown error" @@ -1211,7 +1221,7 @@ msgstr "" #: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124 -#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328 +#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318 #, c-format msgid "unable to write to %s" msgstr "" @@ -1862,6 +1872,10 @@ msgid "The format of logs to produce: %s" msgstr "" +#: plugins/sudoers/def_data.c:574 +msgid "Enable SELinux RBAC support" +msgstr "" + #: plugins/sudoers/defaults.c:185 #, c-format msgid "%s:%d:%d: unknown defaults entry \"%s\"" @@ -1912,22 +1926,22 @@ msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "" -#: plugins/sudoers/defaults.c:1030 +#: plugins/sudoers/defaults.c:1034 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" msgstr "" -#: plugins/sudoers/defaults.c:1034 +#: plugins/sudoers/defaults.c:1038 #, c-format msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" msgstr "" -#: plugins/sudoers/defaults.c:1045 +#: plugins/sudoers/defaults.c:1049 #, c-format msgid "%s:%d:%d: values for \"%s\" must start with a '/'" msgstr "" -#: plugins/sudoers/defaults.c:1049 +#: plugins/sudoers/defaults.c:1053 #, c-format msgid "%s: values for \"%s\" must start with a '/'" msgstr "" @@ -1936,11 +1950,11 @@ msgid "sudo_putenv: corrupted envp, length mismatch" msgstr "" -#: plugins/sudoers/env.c:1133 +#: plugins/sudoers/env.c:1135 msgid "unable to rebuild the environment" msgstr "" -#: plugins/sudoers/env.c:1207 +#: plugins/sudoers/env.c:1209 #, c-format msgid "" "sorry, you are not allowed to set the following environment variables: %s" @@ -2005,7 +2019,7 @@ msgid "Local IP address and netmask pairs:\n" msgstr "" -#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445 +#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:443 #: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410 #, c-format msgid "unknown group: %s" @@ -2034,13 +2048,13 @@ msgstr "" #: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107 -#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855 -#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493 +#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:836 +#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:493 #: plugins/sudoers/visudo.c:499 msgid "unable to read the clock" msgstr "" -#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193 +#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1199 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "" @@ -2094,16 +2108,16 @@ msgid "unable to convert sudoOption: %s%s%s" msgstr "" -#: plugins/sudoers/linux_audit.c:58 +#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60 msgid "unable to open audit system" msgstr "" -#: plugins/sudoers/linux_audit.c:101 +#: plugins/sudoers/linux_audit.c:103 msgid "unable to send audit message" msgstr "" #: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 -#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023 +#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2032 msgid "error in event loop" msgstr "" @@ -2125,20 +2139,20 @@ msgid "TLS handshake was unsuccessful" msgstr "" -#: plugins/sudoers/log_client.c:1202 +#: plugins/sudoers/log_client.c:1208 #, c-format msgid "%s: internal error, invalid exit status %d" msgstr "" -#: plugins/sudoers/log_client.c:1738 +#: plugins/sudoers/log_client.c:1723 plugins/sudoers/log_client.c:1747 msgid "lost connection to log server" msgstr "" -#: plugins/sudoers/log_client.c:1815 +#: plugins/sudoers/log_client.c:1824 msgid "missing write buffer" msgstr "" -#: plugins/sudoers/log_client.c:1964 +#: plugins/sudoers/log_client.c:1973 msgid "unable to connect to log server" msgstr "" @@ -2174,15 +2188,15 @@ msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "" -#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583 -#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587 -#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739 -#: plugins/sudoers/sudoers.c:741 +#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:581 +#: plugins/sudoers/sudoers.c:583 plugins/sudoers/sudoers.c:585 +#: plugins/sudoers/sudoers.c:587 plugins/sudoers/sudoers.c:737 +#: plugins/sudoers/sudoers.c:739 #, c-format msgid "%s: command not found" msgstr "" -#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579 +#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:577 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2204,12 +2218,12 @@ msgid "a password is required" msgstr "" -#: plugins/sudoers/logging.c:729 +#: plugins/sudoers/logging.c:739 #, c-format msgid "unable to open log file: %s" msgstr "" -#: plugins/sudoers/logging.c:762 +#: plugins/sudoers/logging.c:772 #, c-format msgid "unable to write log file: %s" msgstr "" @@ -2319,39 +2333,39 @@ msgid "unable to execute %s" msgstr "" -#: plugins/sudoers/policy.c:1111 +#: plugins/sudoers/policy.c:1114 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "" -#: plugins/sudoers/policy.c:1113 +#: plugins/sudoers/policy.c:1116 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "" -#: plugins/sudoers/policy.c:1117 +#: plugins/sudoers/policy.c:1120 #, c-format msgid "" "\n" "Sudoers path: %s\n" msgstr "" -#: plugins/sudoers/policy.c:1120 +#: plugins/sudoers/policy.c:1123 #, c-format msgid "nsswitch path: %s\n" msgstr "" -#: plugins/sudoers/policy.c:1122 +#: plugins/sudoers/policy.c:1125 #, c-format msgid "ldap.conf path: %s\n" msgstr "" -#: plugins/sudoers/policy.c:1123 +#: plugins/sudoers/policy.c:1126 #, c-format msgid "ldap.secret path: %s\n" msgstr "" -#: plugins/sudoers/policy.c:1156 +#: plugins/sudoers/policy.c:1159 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "" @@ -2490,81 +2504,81 @@ msgid "unable to find symbol \"%s\" in %s" msgstr "" -#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010 +#: plugins/sudoers/sudoers.c:212 plugins/sudoers/sudoers.c:1010 msgid "problem with defaults entries" msgstr "" -#: plugins/sudoers/sudoers.c:218 +#: plugins/sudoers/sudoers.c:216 msgid "no valid sudoers sources found, quitting" msgstr "" -#: plugins/sudoers/sudoers.c:292 +#: plugins/sudoers/sudoers.c:290 #, c-format msgid "user not allowed to change root directory to %s" msgstr "" -#: plugins/sudoers/sudoers.c:294 +#: plugins/sudoers/sudoers.c:292 #, c-format msgid "you are not permitted to use the -R option with %s" msgstr "" -#: plugins/sudoers/sudoers.c:319 +#: plugins/sudoers/sudoers.c:317 #, c-format msgid "user not allowed to change directory to %s" msgstr "" -#: plugins/sudoers/sudoers.c:320 +#: plugins/sudoers/sudoers.c:318 #, c-format msgid "you are not permitted to use the -D option with %s" msgstr "" -#: plugins/sudoers/sudoers.c:351 +#: plugins/sudoers/sudoers.c:349 msgid "sudoers specifies that root is not allowed to sudo" msgstr "" -#: plugins/sudoers/sudoers.c:411 +#: plugins/sudoers/sudoers.c:409 msgid "user not allowed to override closefrom limit" msgstr "" -#: plugins/sudoers/sudoers.c:412 +#: plugins/sudoers/sudoers.c:410 msgid "you are not permitted to use the -C option" msgstr "" -#: plugins/sudoers/sudoers.c:472 +#: plugins/sudoers/sudoers.c:470 #, c-format msgid "timestamp owner (%s): No such user" msgstr "" -#: plugins/sudoers/sudoers.c:487 +#: plugins/sudoers/sudoers.c:485 msgid "no tty" msgstr "" -#: plugins/sudoers/sudoers.c:488 +#: plugins/sudoers/sudoers.c:486 msgid "sorry, you must have a tty to run sudo" msgstr "" -#: plugins/sudoers/sudoers.c:495 +#: plugins/sudoers/sudoers.c:493 #, c-format msgid "invalid shell for user %s: %s" msgstr "" -#: plugins/sudoers/sudoers.c:578 +#: plugins/sudoers/sudoers.c:576 msgid "command in current directory" msgstr "" -#: plugins/sudoers/sudoers.c:597 +#: plugins/sudoers/sudoers.c:595 msgid "user not allowed to set a command timeout" msgstr "" -#: plugins/sudoers/sudoers.c:599 +#: plugins/sudoers/sudoers.c:597 msgid "sorry, you are not allowed set a command timeout" msgstr "" -#: plugins/sudoers/sudoers.c:607 +#: plugins/sudoers/sudoers.c:605 msgid "user not allowed to preserve the environment" msgstr "" -#: plugins/sudoers/sudoers.c:609 +#: plugins/sudoers/sudoers.c:607 msgid "sorry, you are not allowed to preserve the environment" msgstr "" @@ -2593,17 +2607,17 @@ msgid "%s is not a regular file" msgstr "" -#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112 +#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1115 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "" -#: plugins/sudoers/sudoers.c:1094 toke.l:1117 +#: plugins/sudoers/sudoers.c:1094 toke.l:1120 #, c-format msgid "%s is world writable" msgstr "" -#: plugins/sudoers/sudoers.c:1098 toke.l:1120 +#: plugins/sudoers/sudoers.c:1098 toke.l:1123 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "" @@ -2782,26 +2796,26 @@ msgid "%s is group writable" msgstr "" -#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680 +#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661 #, c-format msgid "unable to truncate time stamp file to %lld bytes" msgstr "" -#: plugins/sudoers/timestamp.c:866 +#: plugins/sudoers/timestamp.c:847 msgid "ignoring time stamp from the future" msgstr "" -#: plugins/sudoers/timestamp.c:889 +#: plugins/sudoers/timestamp.c:870 #, c-format msgid "time stamp too far in the future: %20.20s" msgstr "" -#: plugins/sudoers/timestamp.c:1011 +#: plugins/sudoers/timestamp.c:992 #, c-format msgid "unable to lock time stamp file %s" msgstr "" -#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075 +#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056 #, c-format msgid "lecture status path too long: %s/%s" msgstr "" @@ -2982,30 +2996,30 @@ " -V, --version display version information and exit\n" msgstr "" -#: toke.l:179 +#: toke.l:182 msgid "empty string" msgstr "" -#: toke.l:189 toke.l:491 +#: toke.l:192 toke.l:494 msgid "empty group" msgstr "" -#: toke.l:197 toke.l:489 +#: toke.l:200 toke.l:492 msgid "empty netgroup" msgstr "" -#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392 +#: toke.l:296 toke.l:308 toke.l:320 toke.l:336 toke.l:355 toke.l:395 msgid "invalid line continuation" msgstr "" -#: toke.l:528 toke.l:540 +#: toke.l:531 toke.l:543 msgid "invalid IPv6 address" msgstr "" -#: toke.l:764 +#: toke.l:767 msgid "unexpected line break in string" msgstr "" -#: toke.l:1084 +#: toke.l:1087 msgid "too many levels of includes" msgstr "" Binary files /tmp/iZuZwXTqez/sudo-1.9.4p2/plugins/sudoers/po/sv.mo and /tmp/cZR8a_TUxF/sudo-1.9.5p2/plugins/sudoers/po/sv.mo differ diff -Nru sudo-1.9.4p2/plugins/sudoers/po/sv.po sudo-1.9.5p2/plugins/sudoers/po/sv.po --- sudo-1.9.4p2/plugins/sudoers/po/sv.po 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/po/sv.po 2021-01-09 14:12:16.000000000 -0600 @@ -6,21 +6,21 @@ # msgid "" msgstr "" -"Project-Id-Version: sudoers 1.9.1b1\n" +"Project-Id-Version: sudoers 1.9.4b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2020-06-05 10:24-0600\n" -"PO-Revision-Date: 2020-06-07 19:26+0800\n" +"POT-Creation-Date: 2020-11-14 06:24-0700\n" +"PO-Revision-Date: 2020-12-26 03:34+0100\n" "Last-Translator: Sebastian Rasmussen \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\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=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.3.1\n" +"X-Generator: Poedit 2.4.2\n" -#: confstr.sh:1 +#: confstr.sh:1 gram.y:1077 msgid "syntax error" msgstr "syntaxfel" @@ -44,70 +44,73 @@ msgid "Sorry, try again." msgstr "Försök igen." -#: gram.y:203 gram.y:251 gram.y:258 gram.y:265 gram.y:272 gram.y:279 -#: gram.y:295 gram.y:319 gram.y:326 gram.y:333 gram.y:340 gram.y:347 -#: gram.y:410 gram.y:419 gram.y:430 gram.y:463 gram.y:470 gram.y:477 -#: gram.y:484 gram.y:511 gram.y:583 gram.y:590 gram.y:599 gram.y:608 -#: gram.y:625 gram.y:737 gram.y:744 gram.y:752 gram.y:758 gram.y:858 -#: gram.y:865 gram.y:872 gram.y:879 gram.y:886 gram.y:912 gram.y:919 -#: gram.y:926 gram.y:1068 gram.y:1347 lib/iolog/iolog_fileio.c:1101 -#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:283 -#: lib/iolog/iolog_json.c:313 lib/iolog/iolog_json.c:435 -#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115 -#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133 -#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196 -#: logsrvd/eventlog.c:223 logsrvd/sendlog.c:443 plugins/sudoers/alias.c:125 -#: plugins/sudoers/alias.c:132 plugins/sudoers/alias.c:148 -#: plugins/sudoers/audit.c:108 plugins/sudoers/audit.c:212 -#: plugins/sudoers/auth/bsdauth.c:143 plugins/sudoers/auth/kerb5.c:118 -#: plugins/sudoers/auth/kerb5.c:144 plugins/sudoers/auth/pam.c:669 -#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59 -#: plugins/sudoers/cvtsudoers.c:120 plugins/sudoers/cvtsudoers.c:161 -#: plugins/sudoers/cvtsudoers.c:178 plugins/sudoers/cvtsudoers.c:189 -#: plugins/sudoers/cvtsudoers.c:301 plugins/sudoers/cvtsudoers.c:429 -#: plugins/sudoers/cvtsudoers.c:562 plugins/sudoers/cvtsudoers.c:579 -#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/cvtsudoers.c:757 -#: plugins/sudoers/cvtsudoers.c:765 plugins/sudoers/cvtsudoers.c:1179 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285 -#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151 -#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235 -#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371 -#: plugins/sudoers/cvtsudoers_ldif.c:426 plugins/sudoers/cvtsudoers_ldif.c:434 -#: plugins/sudoers/cvtsudoers_ldif.c:451 plugins/sudoers/cvtsudoers_ldif.c:460 -#: plugins/sudoers/cvtsudoers_ldif.c:607 plugins/sudoers/defaults.c:626 -#: plugins/sudoers/defaults.c:919 plugins/sudoers/defaults.c:1052 -#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:84 -#: plugins/sudoers/editor.c:95 plugins/sudoers/env.c:261 +#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314 +#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386 +#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524 +#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679 +#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971 +#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032 +#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280 +#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753 +#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062 +#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120 +#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335 +#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106 +#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125 +#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137 +#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480 +#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134 +#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115 +#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143 +#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144 +#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111 +#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119 +#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177 +#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300 +#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561 +#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641 +#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764 +#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182 +#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76 +#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194 +#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300 +#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421 +#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440 +#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460 +#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615 +#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923 +#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181 +#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92 #: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 #: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:483 -#: plugins/sudoers/iolog_client.c:105 plugins/sudoers/iolog_client.c:382 -#: plugins/sudoers/iolog_client.c:559 plugins/sudoers/iolog_client.c:678 -#: plugins/sudoers/iolog_client.c:696 plugins/sudoers/iolog_client.c:1176 -#: plugins/sudoers/iolog_client.c:1405 plugins/sudoers/iolog_client.c:1723 -#: plugins/sudoers/iolog_client.c:1751 plugins/sudoers/ldap.c:183 -#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431 -#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440 -#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743 -#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279 -#: plugins/sudoers/ldap.c:1706 plugins/sudoers/ldap.c:1743 -#: plugins/sudoers/ldap.c:1824 plugins/sudoers/ldap.c:1959 -#: plugins/sudoers/ldap.c:2060 plugins/sudoers/ldap.c:2076 +#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596 +#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184 +#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432 +#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441 +#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744 +#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281 +#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746 +#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962 +#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079 #: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 #: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 #: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 #: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 #: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760 #: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333 -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/linux_audit.c:83 -#: plugins/sudoers/logging.c:103 plugins/sudoers/logging.c:192 -#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545 -#: plugins/sudoers/logging.c:586 plugins/sudoers/logging.c:723 -#: plugins/sudoers/logging.c:1083 plugins/sudoers/match_command.c:243 -#: plugins/sudoers/match_command.c:391 plugins/sudoers/match_command.c:438 -#: plugins/sudoers/match_command.c:509 plugins/sudoers/match_digest.c:80 -#: plugins/sudoers/parse.c:193 plugins/sudoers/parse.c:205 -#: plugins/sudoers/parse.c:220 plugins/sudoers/parse.c:232 +#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84 +#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381 +#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706 +#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620 +#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999 +#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166 +#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446 +#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281 +#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499 +#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93 +#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213 +#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244 +#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275 #: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184 #: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260 #: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341 @@ -117,115 +120,138 @@ #: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624 #: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707 #: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752 -#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:491 -#: plugins/sudoers/policy.c:823 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:191 plugins/sudoers/pwutil.c:262 -#: plugins/sudoers/pwutil.c:340 plugins/sudoers/pwutil.c:514 -#: plugins/sudoers/pwutil.c:578 plugins/sudoers/pwutil.c:649 -#: plugins/sudoers/pwutil.c:808 plugins/sudoers/pwutil.c:865 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:967 -#: plugins/sudoers/sssd.c:146 plugins/sudoers/sssd.c:409 -#: plugins/sudoers/sssd.c:472 plugins/sudoers/sssd.c:516 -#: plugins/sudoers/sssd.c:563 plugins/sudoers/sssd.c:755 -#: plugins/sudoers/stubs.c:96 plugins/sudoers/stubs.c:104 -#: plugins/sudoers/sudoers.c:316 plugins/sudoers/sudoers.c:327 -#: plugins/sudoers/sudoers.c:337 plugins/sudoers/sudoers.c:380 -#: plugins/sudoers/sudoers.c:720 plugins/sudoers/sudoers.c:849 -#: plugins/sudoers/sudoers.c:894 plugins/sudoers/sudoers.c:1198 -#: plugins/sudoers/sudoreplay.c:553 plugins/sudoers/sudoreplay.c:556 -#: plugins/sudoers/sudoreplay.c:1260 plugins/sudoers/sudoreplay.c:1470 -#: plugins/sudoers/sudoreplay.c:1474 plugins/sudoers/testsudoers.c:128 +#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526 +#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265 +#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517 +#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652 +#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867 +#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968 +#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407 +#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514 +#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754 +#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118 +#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326 +#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381 +#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433 +#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927 +#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265 +#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555 +#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469 +#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128 #: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245 -#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:432 +#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432 #: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986 #: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104 #: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157 -#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:146 -#: plugins/sudoers/visudo.c:322 plugins/sudoers/visudo.c:328 -#: plugins/sudoers/visudo.c:438 plugins/sudoers/visudo.c:616 -#: plugins/sudoers/visudo.c:936 plugins/sudoers/visudo.c:1024 -#: plugins/sudoers/visudo.c:1121 toke.l:864 toke.l:981 toke.l:1039 +#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145 +#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329 +#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615 +#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008 +#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091 msgid "unable to allocate memory" msgstr "kan inte allokera minne" -#: gram.y:505 +#: gram.y:552 msgid "a digest requires a path name" msgstr "en kontrollsumma kräver ett sökvägsnamn" -#: gram.y:638 +#: gram.y:581 +msgid "values for \"CWD\" must start with a '/', '~', or '*'" +msgstr "värden för ”CWD” måste börja med ett ”/”, ”~” eller ”*”" + +#: gram.y:593 +msgid "values for \"CHROOT\" must start with a '/', '~', or '*'" +msgstr "värden för ”CHROOT” måste börja med ett ”/”, ”~” eller ”*”" + +#: gram.y:715 +#, c-format +msgid "syntax error, reserved word %s used as an alias name" +msgstr "syntaxfel, reserverat ord %s använt som ett aliasnamn" + +#: gram.y:735 msgid "invalid notbefore value" msgstr "ogiltigt notbefore-värde" -#: gram.y:646 +#: gram.y:743 msgid "invalid notafter value" msgstr "ogiltigt notafter-värde" -#: gram.y:655 plugins/sudoers/policy.c:306 +#: gram.y:752 plugins/sudoers/policy.c:335 msgid "timeout value too large" msgstr "tidsgränsvärde för stort" -#: gram.y:657 plugins/sudoers/policy.c:308 +#: gram.y:754 plugins/sudoers/policy.c:337 msgid "invalid timeout value" msgstr "ogiltigt värde för tidsgräns" -#: gram.y:1347 lib/iolog/iolog_fileio.c:1101 lib/iolog/iolog_json.c:120 -#: lib/iolog/iolog_json.c:282 lib/iolog/iolog_json.c:313 -#: lib/iolog/iolog_json.c:435 lib/iolog/iolog_json.c:713 -#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115 -#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133 -#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196 -#: logsrvd/eventlog.c:223 logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1221 -#: logsrvd/logsrvd.c:1266 logsrvd/sendlog.c:443 logsrvd/sendlog.c:1301 -#: logsrvd/sendlog.c:1308 logsrvd/sendlog.c:1726 plugins/sudoers/audit.c:108 -#: plugins/sudoers/audit.c:212 plugins/sudoers/auth/pam.c:482 +#: gram.y:1079 +#, c-format +msgid "%s:%d:%d: %s\n" +msgstr "%s:%d:%d: %s\n" + +#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753 +#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816 +#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998 +#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304 +#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457 +#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106 +#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125 +#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137 +#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293 +#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321 +#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115 +#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482 #: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111 -#: plugins/sudoers/cvtsudoers.c:120 plugins/sudoers/cvtsudoers.c:160 -#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188 -#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428 -#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578 -#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/cvtsudoers.c:757 -#: plugins/sudoers/cvtsudoers.c:764 plugins/sudoers/cvtsudoers.c:1179 -#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285 +#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159 +#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187 +#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427 +#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577 +#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756 +#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178 +#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284 #: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150 #: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234 #: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370 -#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433 -#: plugins/sudoers/cvtsudoers_ldif.c:450 plugins/sudoers/cvtsudoers_ldif.c:459 -#: plugins/sudoers/cvtsudoers_ldif.c:606 plugins/sudoers/defaults.c:626 -#: plugins/sudoers/defaults.c:919 plugins/sudoers/defaults.c:1052 -#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:84 -#: plugins/sudoers/editor.c:95 plugins/sudoers/env.c:261 -#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70 -#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:132 -#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:483 -#: plugins/sudoers/iolog_client.c:105 plugins/sudoers/iolog_client.c:215 -#: plugins/sudoers/iolog_client.c:236 plugins/sudoers/iolog_client.c:249 -#: plugins/sudoers/iolog_client.c:382 plugins/sudoers/iolog_client.c:678 -#: plugins/sudoers/iolog_client.c:696 plugins/sudoers/iolog_client.c:1176 -#: plugins/sudoers/iolog_client.c:1405 plugins/sudoers/iolog_client.c:1723 -#: plugins/sudoers/iolog_client.c:1751 plugins/sudoers/ldap.c:183 -#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431 -#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440 -#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743 -#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279 -#: plugins/sudoers/ldap.c:1706 plugins/sudoers/ldap.c:1743 -#: plugins/sudoers/ldap.c:1824 plugins/sudoers/ldap.c:1959 -#: plugins/sudoers/ldap.c:2060 plugins/sudoers/ldap.c:2076 -#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249 -#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337 -#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456 -#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586 -#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760 -#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332 -#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/linux_audit.c:83 -#: plugins/sudoers/logging.c:103 plugins/sudoers/logging.c:192 -#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545 -#: plugins/sudoers/logging.c:585 plugins/sudoers/logging.c:1083 -#: plugins/sudoers/match_command.c:242 plugins/sudoers/match_command.c:390 -#: plugins/sudoers/match_command.c:437 plugins/sudoers/match_command.c:509 -#: plugins/sudoers/match_digest.c:80 plugins/sudoers/parse.c:192 -#: plugins/sudoers/parse.c:204 plugins/sudoers/parse.c:219 -#: plugins/sudoers/parse.c:231 plugins/sudoers/parse_ldif.c:152 +#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428 +#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446 +#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467 +#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630 +#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098 +#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261 +#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54 +#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56 +#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72 +#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613 +#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422 +#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437 +#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453 +#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908 +#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709 +#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827 +#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063 +#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218 +#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301 +#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441 +#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553 +#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677 +#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325 +#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603 +#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105 +#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235 +#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381 +#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706 +#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620 +#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999 +#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165 +#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425 +#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527 +#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448 +#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573 +#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198 +#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229 +#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263 +#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152 #: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252 #: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264 #: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351 @@ -235,60 +261,112 @@ #: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648 #: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723 #: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758 -#: plugins/sudoers/policy.c:120 plugins/sudoers/policy.c:129 -#: plugins/sudoers/policy.c:138 plugins/sudoers/policy.c:164 -#: plugins/sudoers/policy.c:291 plugins/sudoers/policy.c:306 -#: plugins/sudoers/policy.c:308 plugins/sudoers/policy.c:337 -#: plugins/sudoers/policy.c:346 plugins/sudoers/policy.c:389 -#: plugins/sudoers/policy.c:399 plugins/sudoers/policy.c:408 -#: plugins/sudoers/policy.c:417 plugins/sudoers/policy.c:491 -#: plugins/sudoers/policy.c:823 plugins/sudoers/prompt.c:93 -#: plugins/sudoers/pwutil.c:191 plugins/sudoers/pwutil.c:262 -#: plugins/sudoers/pwutil.c:340 plugins/sudoers/pwutil.c:514 -#: plugins/sudoers/pwutil.c:578 plugins/sudoers/pwutil.c:649 -#: plugins/sudoers/pwutil.c:808 plugins/sudoers/pwutil.c:865 -#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:967 +#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148 +#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183 +#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335 +#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366 +#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418 +#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437 +#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526 +#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93 +#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265 +#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517 +#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652 +#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867 +#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968 #: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698 #: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364 -#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:145 -#: plugins/sudoers/sssd.c:409 plugins/sudoers/sssd.c:472 -#: plugins/sudoers/sssd.c:516 plugins/sudoers/sssd.c:563 -#: plugins/sudoers/sssd.c:755 plugins/sudoers/stubs.c:96 -#: plugins/sudoers/stubs.c:104 plugins/sudoers/sudoers.c:316 -#: plugins/sudoers/sudoers.c:327 plugins/sudoers/sudoers.c:337 -#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:720 -#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:894 -#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/sudoreplay.c:553 -#: plugins/sudoers/sudoreplay.c:556 plugins/sudoers/sudoreplay.c:1260 -#: plugins/sudoers/sudoreplay.c:1470 plugins/sudoers/sudoreplay.c:1474 +#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144 +#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470 +#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561 +#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110 +#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300 +#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370 +#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391 +#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794 +#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961 +#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552 +#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259 +#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473 #: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228 -#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:581 +#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587 #: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476 #: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51 #: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128 #: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123 -#: plugins/sudoers/visudo.c:146 plugins/sudoers/visudo.c:322 -#: plugins/sudoers/visudo.c:328 plugins/sudoers/visudo.c:438 -#: plugins/sudoers/visudo.c:616 plugins/sudoers/visudo.c:936 -#: plugins/sudoers/visudo.c:1024 plugins/sudoers/visudo.c:1121 toke.l:864 -#: toke.l:981 toke.l:1039 +#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323 +#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439 +#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935 +#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913 +#: toke.l:1033 toke.l:1091 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: lib/iolog/iolog_fileio.c:157 +#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463 +#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468 +#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244 +#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571 +#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330 +#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618 +#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748 +#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222 +#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90 +#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711 +#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161 +#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249 +#: plugins/sudoers/toke_util.c:169 +#, c-format +msgid "internal error, %s overflow" +msgstr "internt fel, %s spill" + +#: lib/eventlog/eventlog.c:343 +#, c-format +msgid "unable to dup stdin: %m" +msgstr "kan inte duplicera stdin: %m" + +#: lib/eventlog/eventlog.c:388 +#, c-format +msgid "unable to execute %s: %m" +msgstr "kan inte köra %s: %m" + +#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198 +msgid "unable to fork" +msgstr "kan inte grena process" + +#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490 +#, c-format +msgid "unable to fork: %m" +msgstr "kan inte grena process: %m" + +#: lib/eventlog/eventlog.c:480 +#, c-format +msgid "unable to open pipe: %m" +msgstr "kan inte öppna rör: %m" + +#: lib/eventlog/eventlog.c:894 +#, c-format +msgid "%8s : %s" +msgstr "%8s : %s" + +#: lib/eventlog/eventlog.c:923 +#, c-format +msgid "%8s : (command continued) %s" +msgstr "%8s : (kommando fortsätter) %s" + +#: lib/iolog/iolog_fileio.c:155 #, c-format msgid "%s exists but is not a directory (0%o)" msgstr "%s finns men är inte en katalog (0%o)" -#: lib/iolog/iolog_fileio.c:187 lib/iolog/iolog_fileio.c:233 +#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231 #: plugins/sudoers/timestamp.c:205 #, c-format msgid "unable to mkdir %s" msgstr "kan inte skapa katalogen %s" -#: lib/iolog/iolog_fileio.c:237 plugins/sudoers/visudo.c:733 -#: plugins/sudoers/visudo.c:744 +#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732 +#: plugins/sudoers/visudo.c:743 #, c-format msgid "unable to change mode of %s to 0%o" msgstr "kan inte ändra läge för %s till 0%o" @@ -298,63 +376,45 @@ msgid "expected JSON_STRING, got %d" msgstr "förväntade JSON_STRING, fick %d" -#: lib/iolog/iolog_json.c:305 +#: lib/iolog/iolog_json.c:327 msgid "missing double quote in name" msgstr "saknar citationstecken i namn" -#: lib/iolog/iolog_json.c:392 +#: lib/iolog/iolog_json.c:414 #, c-format msgid "expected JSON_OBJECT, got %d" msgstr "förväntade JSON_OBJECT, fick %d" -#: lib/iolog/iolog_json.c:441 lib/iolog/iolog_json.c:444 -#: lib/iolog/iolog_json.c:446 lib/iolog/iolog_json.c:538 -#: logsrvd/eventlog.c:228 plugins/sudoers/cvtsudoers_ldif.c:244 -#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:563 -#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330 -#: plugins/sudoers/env.c:435 plugins/sudoers/iolog.c:561 -#: plugins/sudoers/iolog.c:577 plugins/sudoers/ldap.c:516 -#: plugins/sudoers/ldap.c:747 plugins/sudoers/ldap.c:1080 -#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312 -#: plugins/sudoers/linux_audit.c:89 plugins/sudoers/logging.c:1088 -#: plugins/sudoers/policy.c:521 plugins/sudoers/policy.c:668 -#: plugins/sudoers/policy.c:678 plugins/sudoers/prompt.c:161 -#: plugins/sudoers/sudoers.c:916 plugins/sudoers/testsudoers.c:249 -#: plugins/sudoers/toke_util.c:169 -#, c-format -msgid "internal error, %s overflow" -msgstr "internt fel, %s spill" - -#: lib/iolog/iolog_json.c:607 lib/iolog/iolog_json.c:731 +#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753 msgid "unmatched close brace" msgstr "omatchad avslutningsklammerparentes" -#: lib/iolog/iolog_json.c:616 +#: lib/iolog/iolog_json.c:638 msgid "unexpected array" msgstr "oväntat array" -#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:733 +#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755 msgid "unmatched close bracket" msgstr "omatchad avslutningsklammer" -#: lib/iolog/iolog_json.c:637 +#: lib/iolog/iolog_json.c:659 msgid "unexpected string" msgstr "oväntad sträng" -#: lib/iolog/iolog_json.c:647 +#: lib/iolog/iolog_json.c:669 msgid "missing colon after name" msgstr "saknar kolon efter namn" -#: lib/iolog/iolog_json.c:658 lib/iolog/iolog_json.c:673 -#: lib/iolog/iolog_json.c:688 +#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695 +#: lib/iolog/iolog_json.c:710 msgid "unexpected boolean" msgstr "oväntad boolean" -#: lib/iolog/iolog_json.c:704 +#: lib/iolog/iolog_json.c:726 msgid "unexpected number" msgstr "oväntat nummer" -#: lib/iolog/iolog_json.c:741 +#: lib/iolog/iolog_json.c:763 #, c-format msgid "%s:%u unable to parse \"%s\"" msgstr "%s:%u kan inte tolka ”%s”" @@ -399,186 +459,184 @@ msgid "invalid timing file line: %s" msgstr "ogiltig rad i tidsmätningsfil: %s" -#: logsrvd/eventlog.c:430 plugins/sudoers/logging.c:112 -#, c-format -msgid "%8s : %s" -msgstr "%8s : %s" - -#: logsrvd/eventlog.c:459 plugins/sudoers/logging.c:136 -#, c-format -msgid "%8s : (command continued) %s" -msgstr "%8s : (kommando fortsätter) %s" - -#: logsrvd/iolog_writer.c:936 +#: logsrvd/iolog_writer.c:919 msgid "log is already complete, cannot be restarted" msgstr "logg är redan komplett, kan inte startas om" -#: logsrvd/iolog_writer.c:967 +#: logsrvd/iolog_writer.c:950 msgid "unable to restart log" msgstr "kan inte starta om logg" -#: logsrvd/logsrv_util.c:98 logsrvd/logsrv_util.c:105 -#: plugins/sudoers/sudoreplay.c:353 plugins/sudoers/sudoreplay.c:359 +#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106 +#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358 #, c-format msgid "unable to open %s/%s" msgstr "kan inte öppna %s/%s" -#: logsrvd/logsrv_util.c:132 +#: logsrvd/logsrv_util.c:133 #, c-format msgid "missing I/O log file %s/%s" msgstr "saknar I/O-loggfil %s/%s" -#: logsrvd/logsrv_util.c:139 +#: logsrvd/logsrv_util.c:140 #, c-format msgid "%s/%s: unable to seek forward %zu" msgstr "%s/%s: kan inte söka framåt %zu" -#: logsrvd/logsrv_util.c:149 +#: logsrvd/logsrv_util.c:150 #, c-format msgid "unable to find resume point [%lld, %ld] in %s/%s" msgstr "kan inte hitta omstartspunkt [%lld, %ld] i %s/%s" -#: logsrvd/logsrvd.c:230 logsrvd/logsrvd.c:299 logsrvd/logsrvd.c:343 -#: logsrvd/logsrvd.c:398 logsrvd/logsrvd.c:445 logsrvd/logsrvd.c:496 -#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:560 +#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394 +#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568 +#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632 msgid "state machine error" msgstr "fel i tillståndsmaskin" -#: logsrvd/logsrvd.c:239 +#: logsrvd/logsrvd.c:299 msgid "invalid AcceptMessage" msgstr "ogiltigt AcceptMessage" -#: logsrvd/logsrvd.c:250 +#: logsrvd/logsrvd.c:307 msgid "error parsing AcceptMessage" msgstr "fel vid tolkning av AcceptMessage" -#: logsrvd/logsrvd.c:257 +#: logsrvd/logsrvd.c:314 msgid "error creating I/O log" msgstr "fel vid skapande av I/O-logg" -#: logsrvd/logsrvd.c:265 +#: logsrvd/logsrvd.c:321 msgid "error logging accept event" msgstr "fel vid loggning av acceptanshändelse" -#: logsrvd/logsrvd.c:308 +#: logsrvd/logsrvd.c:362 msgid "invalid RejectMessage" msgstr "ogiltigt RejectMessage" -#: logsrvd/logsrvd.c:319 +#: logsrvd/logsrvd.c:370 msgid "error parsing RejectMessage" msgstr "fel vid tolkning av RejectMessage" -#: logsrvd/logsrvd.c:325 +#: logsrvd/logsrvd.c:376 msgid "error logging reject event" msgstr "fel vid loggning av avböjningshändelse" -#: logsrvd/logsrvd.c:430 +#: logsrvd/logsrvd.c:486 +msgid "invalid AlertMessage" +msgstr "ogiltigt AlertMessage" + +#: logsrvd/logsrvd.c:494 +msgid "error parsing AlertMessage" +msgstr "fel vid tolkning av AlertMessage" + +#: logsrvd/logsrvd.c:502 msgid "error logging alert event" msgstr "fel vid loggning av alarmhändelse" -#: logsrvd/logsrvd.c:451 logsrvd/logsrvd.c:502 logsrvd/logsrvd.c:534 +#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606 msgid "protocol error" msgstr "protokollfel" -#: logsrvd/logsrvd.c:461 +#: logsrvd/logsrvd.c:533 msgid "error writing IoBuffer" msgstr "fel vid skrivning av IoBuffer" -#: logsrvd/logsrvd.c:513 +#: logsrvd/logsrvd.c:585 msgid "error writing ChangeWindowSize" msgstr "fel vid skrivning av ChangeWindowSize" -#: logsrvd/logsrvd.c:545 +#: logsrvd/logsrvd.c:617 msgid "error writing CommandSuspend" msgstr "fel vid skrivning av CommandSuspend" -#: logsrvd/logsrvd.c:630 +#: logsrvd/logsrvd.c:702 msgid "unrecognized ClientMessage type" msgstr "okänd ClientMessage-typ" -#: logsrvd/logsrvd.c:895 +#: logsrvd/logsrvd.c:967 msgid "client message too large" msgstr "klientmeddelande för stort" -#: logsrvd/logsrvd.c:1125 logsrvd/logsrvd.c:1133 +#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205 #, c-format msgid "unable to set TLS 1.2 ciphersuite to %s: %s" msgstr "kan inte ställa in TLS 1.2-krypteringssvit till %s: %s" -#: logsrvd/logsrvd.c:1153 logsrvd/logsrvd.c:1161 +#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233 #, c-format msgid "unable to set TLS 1.3 ciphersuite to %s: %s" msgstr "kan inte ställa in TLS 1.3-krypteringssvit till %s: %s" -#: logsrvd/logsrvd.c:1197 +#: logsrvd/logsrvd.c:1269 #, c-format msgid "unable to get TLS server method: %s" msgstr "kan inte hämta TLS-servermetod: %s" -#: logsrvd/logsrvd.c:1202 +#: logsrvd/logsrvd.c:1274 #, c-format msgid "unable to create TLS context: %s" msgstr "kan inte skapa TLS-kontext: %s" -#: logsrvd/logsrvd.c:1209 plugins/sudoers/iolog_client.c:237 +#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236 #, c-format msgid "unable to load certificate %s" msgstr "kan inte läsa in certifikat %s" -#: logsrvd/logsrvd.c:1222 plugins/sudoers/iolog_client.c:217 +#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216 #, c-format msgid "unable to load certificate authority bundle %s" msgstr "kan inte läsa in certifikatauktoritetsbunt %s" -#: logsrvd/logsrvd.c:1267 plugins/sudoers/iolog_client.c:250 +#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249 #, c-format msgid "unable to load private key %s" msgstr "kan inte läsa in privat nyckel %s" -#: logsrvd/logsrvd.c:1284 logsrvd/logsrvd.c:1293 +#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365 #, c-format msgid "unable to set diffie-hellman parameters: %s" msgstr "kunde inte sätta diffie-hellman-parametrar: %s" -#: logsrvd/logsrvd.c:1306 +#: logsrvd/logsrvd.c:1378 #, c-format msgid "unable to set minimum protocol version to TLS 1.2: %s" msgstr "kunde inte sätta minsta protokollversion till TLS 1.2: %s" -#: logsrvd/logsrvd.c:1491 +#: logsrvd/logsrvd.c:1563 msgid "unable to get remote IP addr" msgstr "kan inte hämta fjärr-IP-adress" -#: logsrvd/logsrvd.c:1519 plugins/sudoers/iolog_client.c:264 +#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263 #, c-format msgid "Unable to attach user data to the ssl object: %s" msgstr "Kan inte fästa användardata på ssl-objektet: %s" -#: logsrvd/logsrvd.c:1527 logsrvd/logsrvd.c:1649 logsrvd/logsrvd.c:1749 -#: logsrvd/sendlog.c:1105 logsrvd/sendlog.c:1461 logsrvd/sendlog.c:1476 -#: logsrvd/sendlog.c:1534 plugins/sudoers/iolog.c:921 -#: plugins/sudoers/iolog.c:1054 plugins/sudoers/iolog.c:1152 -#: plugins/sudoers/iolog_client.c:109 plugins/sudoers/iolog_client.c:325 -#: plugins/sudoers/iolog_client.c:341 plugins/sudoers/iolog_client.c:387 -#: plugins/sudoers/iolog_client.c:567 plugins/sudoers/iolog_client.c:574 -#: plugins/sudoers/iolog_client.c:1150 plugins/sudoers/iolog_client.c:1186 -#: plugins/sudoers/iolog_client.c:1194 plugins/sudoers/iolog_client.c:1254 -#: plugins/sudoers/iolog_client.c:1361 plugins/sudoers/iolog_client.c:1477 -#: plugins/sudoers/iolog_client.c:1759 plugins/sudoers/iolog_client.c:1767 -#: plugins/sudoers/sudoreplay.c:513 plugins/sudoers/sudoreplay.c:560 -#: plugins/sudoers/sudoreplay.c:792 plugins/sudoers/sudoreplay.c:904 -#: plugins/sudoers/sudoreplay.c:994 plugins/sudoers/sudoreplay.c:1009 -#: plugins/sudoers/sudoreplay.c:1016 plugins/sudoers/sudoreplay.c:1023 -#: plugins/sudoers/sudoreplay.c:1030 plugins/sudoers/sudoreplay.c:1037 -#: plugins/sudoers/sudoreplay.c:1164 +#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823 +#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496 +#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956 +#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187 +#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324 +#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386 +#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594 +#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376 +#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425 +#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692 +#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015 +#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559 +#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903 +#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008 +#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022 +#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036 +#: plugins/sudoers/sudoreplay.c:1163 msgid "unable to add event to queue" msgstr "kan inte lägga till händelse till kö" -#: logsrvd/logsrvd.c:1703 logsrvd/logsrvd.c:1937 +#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011 msgid "unable setup listen socket" msgstr "kan inte ställa in lyssningsuttag" -#: logsrvd/logsrvd.c:1843 logsrvd/sendlog.c:123 +#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124 #, c-format msgid "" "%s - send sudo I/O log to remote server\n" @@ -587,7 +645,7 @@ "%s - skicka sudo I/O-logg till fjärrserver\n" "\n" -#: logsrvd/logsrvd.c:1846 +#: logsrvd/logsrvd.c:1920 msgid "" "\n" "Options:\n" @@ -605,78 +663,78 @@ " -R, --random-drop antal procents chans att anslutningar bryts\n" " -V, --version visa versionsinformation och avsluta\n" -#: logsrvd/logsrvd.c:1898 logsrvd/sendlog.c:1699 +#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719 msgid "Protobuf-C version 1.3 or higher required" msgstr "Protobuf-C version 1.3 eller högre krävs" -#: logsrvd/logsrvd.c:1916 +#: logsrvd/logsrvd.c:1990 #, c-format msgid "invalid random drop value: %s" msgstr "ogiltigt slumpmässigt avbrottsvärde: %s" -#: logsrvd/logsrvd.c:1920 logsrvd/sendlog.c:1749 -#: plugins/sudoers/cvtsudoers.c:229 plugins/sudoers/sudoreplay.c:300 -#: plugins/sudoers/visudo.c:178 +#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769 +#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299 +#: plugins/sudoers/visudo.c:177 #, c-format msgid "%s version %s\n" msgstr "%s version %s\n" -#: logsrvd/logsrvd_conf.c:393 +#: logsrvd/logsrvd_conf.c:331 msgid "TLS not supported" msgstr "TLS stöds inte" -#: logsrvd/logsrvd_conf.c:405 +#: logsrvd/logsrvd_conf.c:343 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: logsrvd/logsrvd_conf.c:471 logsrvd/logsrvd_conf.c:715 +#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653 #, c-format msgid "%s: not a fully qualified path" msgstr "%s: inte fullständigt kvalificerad sökväg" -#: logsrvd/logsrvd_conf.c:829 +#: logsrvd/logsrvd_conf.c:767 #, c-format msgid "%s:%d unmatched '[': %s" msgstr "%s:%d omatchad ”[”: %s" -#: logsrvd/logsrvd_conf.c:840 +#: logsrvd/logsrvd_conf.c:778 #, c-format msgid "%s:%d invalid config section: %s" msgstr "%s:%d ogiltigt konfigurationsavsnitt: %s" -#: logsrvd/logsrvd_conf.c:848 +#: logsrvd/logsrvd_conf.c:786 #, c-format msgid "%s:%d invalid configuration line: %s" msgstr "%s:%d ogiltig konfigurationsrad: %s" -#: logsrvd/logsrvd_conf.c:854 +#: logsrvd/logsrvd_conf.c:792 #, c-format msgid "%s:%d expected section name: %s" msgstr "%s:%d avsnittsnamn förväntades: %s" -#: logsrvd/logsrvd_conf.c:868 +#: logsrvd/logsrvd_conf.c:806 #, c-format msgid "invalid value for %s: %s" msgstr "ogiltigt värde för %s: %s" -#: logsrvd/logsrvd_conf.c:876 +#: logsrvd/logsrvd_conf.c:814 #, c-format msgid "%s:%d unknown key: %s" msgstr "%s:%d okänd nyckel: %s" -#: logsrvd/logsrvd_conf.c:1032 +#: logsrvd/logsrvd_conf.c:1003 #, c-format msgid "unknown syslog facility %s" msgstr "okänd syslog-funktionalitet: %s" -#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1040 -#: logsrvd/logsrvd_conf.c:1044 +#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011 +#: logsrvd/logsrvd_conf.c:1015 #, c-format msgid "unknown syslog priority %s" msgstr "okänd syslog-prioritet: %s" -#: logsrvd/sendlog.c:126 +#: logsrvd/sendlog.c:127 msgid "" "\n" "Options:\n" @@ -710,145 +768,148 @@ " -t, --test testa granskningsserver genom att skicka valda I/O-loggmeddelanden parallellt n gånger\n" " -V, --version visa versionsinformation och avsluta\n" -#: logsrvd/sendlog.c:163 plugins/sudoers/iolog_client.c:433 +#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432 #, c-format msgid "unable to look up %s:%s: %s" msgstr "kan inte slå upp %s:%s: %s" -#: logsrvd/sendlog.c:186 +#: logsrvd/sendlog.c:202 msgid "unable to get server IP addr" msgstr "kan inte hämta server-IP-adress" -#: logsrvd/sendlog.c:240 plugins/sudoers/sudoreplay.c:852 +#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851 #, c-format msgid "unable to read %s/%s: %s" msgstr "kan inte läsa %s/%s: %s" -#: logsrvd/sendlog.c:261 plugins/sudoers/iolog_client.c:684 +#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694 #, c-format msgid "client message too large: %zu" msgstr "klientmeddelande för stort: %zu" -#: logsrvd/sendlog.c:790 +#: logsrvd/sendlog.c:810 #, c-format msgid "%s: write buffer already in use" msgstr "%s: skrivbuffert används redan" -#: logsrvd/sendlog.c:842 plugins/sudoers/iolog.c:845 -#: plugins/sudoers/iolog.c:914 +#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880 +#: plugins/sudoers/iolog.c:949 #, c-format msgid "unexpected I/O event %d" msgstr "oväntad I/O-händelse %d" -#: logsrvd/sendlog.c:888 logsrvd/sendlog.c:905 logsrvd/sendlog.c:939 -#: plugins/sudoers/iolog_client.c:1155 plugins/sudoers/iolog_client.c:1225 -#: plugins/sudoers/iolog_client.c:1273 +#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959 +#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386 +#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490 #, c-format msgid "%s: unexpected state %d" msgstr "%s: oväntat tillstånd %d" -#: logsrvd/sendlog.c:911 plugins/sudoers/iolog_client.c:1231 +#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460 msgid "invalid ServerHello" msgstr "ogiltigt ServerHello" -#: logsrvd/sendlog.c:975 plugins/sudoers/iolog_client.c:1317 +#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534 #, c-format msgid "error message received from server: %s" msgstr "felmeddelande mottaget från server: %s" -#: logsrvd/sendlog.c:988 plugins/sudoers/iolog_client.c:1330 +#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547 #, c-format msgid "abort message received from server: %s" msgstr "avbrottsmeddelande mottaget från server: %s" -#: logsrvd/sendlog.c:1007 plugins/sudoers/iolog_client.c:1349 +#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566 msgid "unable to unpack ServerMessage" msgstr "kan inte packa upp ServerMessage" -#: logsrvd/sendlog.c:1047 plugins/sudoers/iolog_client.c:1382 +#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597 #, c-format msgid "%s: unexpected type_case value %d" msgstr "%s: oväntat type_case-värde %d" -#: logsrvd/sendlog.c:1076 +#: logsrvd/sendlog.c:1096 msgid "timeout reading from server" msgstr "tidsgräns passerad vid läsning från server" -#: logsrvd/sendlog.c:1154 +#: logsrvd/sendlog.c:1174 msgid "premature EOF" msgstr "oväntad EOF" -#: logsrvd/sendlog.c:1167 plugins/sudoers/iolog_client.c:1536 +#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751 #, c-format msgid "server message too large: %u" msgstr "servermeddelande för långt: %u" -#: logsrvd/sendlog.c:1218 +#: logsrvd/sendlog.c:1238 msgid "timeout writing to server" msgstr "tidsgräns passerad vid skrivning till server" -#: logsrvd/sendlog.c:1437 plugins/sudoers/iolog_client.c:297 +#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296 msgid "TLS handshake timeout occurred" msgstr "Tidsgräns för TLS-handskakning uppnådd" -#: logsrvd/sendlog.c:1456 logsrvd/sendlog.c:1471 -#: plugins/sudoers/iolog_client.c:319 plugins/sudoers/iolog_client.c:335 +#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491 +#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334 msgid "unable to set event" msgstr "kan inte ställa in händelse" -#: logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1485 +#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505 #, c-format msgid "TLS connection failed: %s" msgstr "TLS-anslutning misslyckades: %s" -#: logsrvd/sendlog.c:1518 +#: logsrvd/sendlog.c:1538 #, c-format msgid "Unable to initialize ssl context: %s" msgstr "Kan inte initiera ssl-kontext: %s" -#: logsrvd/sendlog.c:1523 plugins/sudoers/iolog_client.c:259 +#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258 #, c-format msgid "Unable to allocate ssl object: %s" msgstr "Kan inte allokera ssl-objekt: %s" -#: logsrvd/sendlog.c:1528 +#: logsrvd/sendlog.c:1548 #, c-format msgid "Unable to attach socket to the ssl object: %s" msgstr "Kan inte fästa kontakt på ssl-objektet: %s" -#: logsrvd/sendlog.c:1772 +#: logsrvd/sendlog.c:1792 msgid "both restart point and iolog ID must be specified" msgstr "både omstartspunkt och iolog-ID måste anges" -#: logsrvd/sendlog.c:1776 +#: logsrvd/sendlog.c:1796 msgid "a restart point may not be set when no I/O is sent" msgstr "en omstartspunkt får inte sättas när ingen I/O skickas" -#: logsrvd/sendlog.c:1851 +#: logsrvd/sendlog.c:1871 #, c-format msgid "exited prematurely with state %d" msgstr "avslutade oväntat i tillstånd %d" -#: logsrvd/sendlog.c:1852 +#: logsrvd/sendlog.c:1872 #, c-format msgid "elapsed time sent to server [%lld, %ld]" msgstr "förfluten tid skickad till server [%lld, %ld]" -#: logsrvd/sendlog.c:1854 +#: logsrvd/sendlog.c:1874 #, c-format msgid "commit point received from server [%lld, %ld]" msgstr "incheckningspunkt mottagen från server [%lld, %ld]" -#: plugins/sudoers/alias.c:144 +#: plugins/sudoers/alias.c:148 #, c-format msgid "Alias \"%s\" already defined" msgstr "Aliaset ”%s” är redan definierat" -#: plugins/sudoers/auth/aix_auth.c:198 plugins/sudoers/logging.c:784 -msgid "unable to fork" -msgstr "kan inte grena process" +#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343 +#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002 +#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175 +#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114 +msgid "unable to get time of day" +msgstr "kan inte hämta tid på dagen" -#: plugins/sudoers/auth/aix_auth.c:278 +#: plugins/sudoers/auth/aix_auth.c:277 #, c-format msgid "unable to change password for %s" msgstr "kan inte ändra lösenord för %s" @@ -870,11 +931,11 @@ msgid "unable to initialize BSD authentication" msgstr "kan inte initiera BSD-autentisering" -#: plugins/sudoers/auth/bsdauth.c:180 +#: plugins/sudoers/auth/bsdauth.c:179 msgid "your account has expired" msgstr "ditt konto har gått ut" -#: plugins/sudoers/auth/bsdauth.c:182 +#: plugins/sudoers/auth/bsdauth.c:181 msgid "approval failed" msgstr "godkännande misslyckades" @@ -981,7 +1042,7 @@ msgid "PAM account management error: %s" msgstr "Fel vid hantering av PAM-konto: %s" -#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:242 +#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243 #, c-format msgid "you do not exist in the %s database" msgstr "du finns inte i %s-databasen" @@ -1010,7 +1071,7 @@ msgid "SecurID communication failed" msgstr "SecurID-kommunikation misslyckades" -#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:212 +#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:210 msgid "unknown SecurID error" msgstr "okänt SecurID-fel" @@ -1018,7 +1079,7 @@ msgid "invalid passcode length for SecurID" msgstr "ogiltig lösenordslängd för SecurID" -#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:124 +#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:123 msgid "unable to initialize SIA session" msgstr "kan inte initiera SIA-session" @@ -1042,7 +1103,7 @@ msgid "Unable to initialize authentication methods." msgstr "Kan inte initiera autentiseringsmetoder." -#: plugins/sudoers/auth/sudo_auth.c:473 +#: plugins/sudoers/auth/sudo_auth.c:471 msgid "Authentication methods:" msgstr "Autentiseringsmetoder:" @@ -1075,117 +1136,117 @@ "\n" #: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311 -#: plugins/sudoers/sudoers.c:763 plugins/sudoers/sudoers.c:811 +#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858 #: plugins/sudoers/tsdump.c:119 #, c-format msgid "unknown uid: %u" msgstr "okänt uid: %u" -#: plugins/sudoers/check.c:306 plugins/sudoers/iolog.c:117 -#: plugins/sudoers/policy.c:1037 plugins/sudoers/sudoers.c:387 -#: plugins/sudoers/sudoers.c:388 plugins/sudoers/sudoers.c:1240 -#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:392 +#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85 +#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088 +#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307 +#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386 #, c-format msgid "unknown user: %s" msgstr "okänd användare: %s" -#: plugins/sudoers/cvtsudoers.c:195 +#: plugins/sudoers/cvtsudoers.c:194 #, c-format msgid "order increment: %s: %s" msgstr "ordningsinkrement: %s: %s" -#: plugins/sudoers/cvtsudoers.c:211 +#: plugins/sudoers/cvtsudoers.c:210 #, c-format msgid "starting order: %s: %s" msgstr "startordning: %s: %s" -#: plugins/sudoers/cvtsudoers.c:221 +#: plugins/sudoers/cvtsudoers.c:220 #, c-format msgid "order padding: %s: %s" msgstr "ordningsutfyllnad: %s: %s" -#: plugins/sudoers/cvtsudoers.c:231 plugins/sudoers/visudo.c:180 +#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179 #, c-format msgid "%s grammar version %d\n" msgstr "%s grammatikversion %d\n" -#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/testsudoers.c:167 +#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/testsudoers.c:167 #, c-format msgid "unsupported input format %s" msgstr "inmatningsformat %s stöds inte" -#: plugins/sudoers/cvtsudoers.c:263 +#: plugins/sudoers/cvtsudoers.c:262 #, c-format msgid "unsupported output format %s" msgstr "utmatningsformat %s stöds inte" -#: plugins/sudoers/cvtsudoers.c:315 +#: plugins/sudoers/cvtsudoers.c:314 #, c-format msgid "%s: input and output files must be different" msgstr "%s: in- och utmatningsfiler måste vara olika" -#: plugins/sudoers/cvtsudoers.c:331 plugins/sudoers/sudoers.c:181 -#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:248 -#: plugins/sudoers/visudo.c:604 plugins/sudoers/visudo.c:927 +#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178 +#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249 +#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926 msgid "unable to initialize sudoers default values" msgstr "kan inte initiera sudoers standardvärden" -#: plugins/sudoers/cvtsudoers.c:417 plugins/sudoers/ldap_conf.c:431 +#: plugins/sudoers/cvtsudoers.c:416 plugins/sudoers/ldap_conf.c:431 #, c-format msgid "%s: %s: %s: %s" msgstr "%s: %s: %s: %s" -#: plugins/sudoers/cvtsudoers.c:476 +#: plugins/sudoers/cvtsudoers.c:475 #, c-format msgid "%s: unknown key word: %s" msgstr "%s: okänt nyckelord: %s" -#: plugins/sudoers/cvtsudoers.c:522 +#: plugins/sudoers/cvtsudoers.c:521 #, c-format msgid "invalid defaults type: %s" msgstr "ogiltig standardtyp: %s" -#: plugins/sudoers/cvtsudoers.c:545 +#: plugins/sudoers/cvtsudoers.c:544 #, c-format msgid "invalid suppression type: %s" msgstr "ogiltig undertryckningstyp: %s" -#: plugins/sudoers/cvtsudoers.c:585 plugins/sudoers/cvtsudoers.c:599 +#: plugins/sudoers/cvtsudoers.c:584 plugins/sudoers/cvtsudoers.c:598 #, c-format msgid "invalid filter: %s" msgstr "ogiltigt filter: %s" -#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:635 -#: plugins/sudoers/cvtsudoers.c:1245 plugins/sudoers/cvtsudoers_json.c:861 -#: plugins/sudoers/cvtsudoers_ldif.c:680 plugins/sudoers/sudoers.c:986 -#: plugins/sudoers/sudoreplay.c:1436 plugins/sudoers/timestamp.c:441 -#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:923 +#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634 +#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872 +#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053 +#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441 +#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922 #, c-format msgid "unable to open %s" msgstr "kan inte öppna %s" -#: plugins/sudoers/cvtsudoers.c:638 plugins/sudoers/visudo.c:932 +#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931 #, c-format msgid "failed to parse %s file, unknown error" msgstr "misslyckades med att tolka %s-filen, okänt fel" -#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/visudo.c:949 +#: plugins/sudoers/cvtsudoers.c:645 #, c-format msgid "parse error in %s near line %d\n" msgstr "tolkningsfel i %s nära rad %d\n" -#: plugins/sudoers/cvtsudoers.c:649 plugins/sudoers/visudo.c:952 +#: plugins/sudoers/cvtsudoers.c:648 #, c-format msgid "parse error in %s\n" msgstr "tolkningsfel i %s\n" -#: plugins/sudoers/cvtsudoers.c:1292 plugins/sudoers/sudoreplay.c:1125 +#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124 #: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328 #, c-format msgid "unable to write to %s" msgstr "kan inte skriva till %s" -#: plugins/sudoers/cvtsudoers.c:1315 +#: plugins/sudoers/cvtsudoers.c:1314 #, c-format msgid "" "%s - convert between sudoers file formats\n" @@ -1194,7 +1255,7 @@ "%s - konvertera mellan sudoers filformat\n" "\n" -#: plugins/sudoers/cvtsudoers.c:1317 +#: plugins/sudoers/cvtsudoers.c:1316 msgid "" "\n" "Options:\n" @@ -1235,675 +1296,700 @@ " -V, --version visa versionsinformation och avsluta" #: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514 -#: plugins/sudoers/cvtsudoers_json.c:702 +#: plugins/sudoers/cvtsudoers_json.c:713 #, c-format msgid "unknown defaults entry \"%s\"" msgstr "okänd standardpost ”%s”" -#: plugins/sudoers/cvtsudoers_json.c:640 plugins/sudoers/cvtsudoers_json.c:653 -#: plugins/sudoers/cvtsudoers_ldif.c:345 plugins/sudoers/cvtsudoers_ldif.c:356 -#: plugins/sudoers/ldap.c:502 +#: plugins/sudoers/cvtsudoers_json.c:651 plugins/sudoers/cvtsudoers_json.c:664 +#: plugins/sudoers/cvtsudoers_ldif.c:346 plugins/sudoers/cvtsudoers_ldif.c:357 +#: plugins/sudoers/ldap.c:503 msgid "unable to get GMT time" msgstr "kan inte hämta GMT-tid" -#: plugins/sudoers/cvtsudoers_json.c:643 plugins/sudoers/cvtsudoers_json.c:656 -#: plugins/sudoers/cvtsudoers_ldif.c:348 plugins/sudoers/cvtsudoers_ldif.c:359 -#: plugins/sudoers/ldap.c:508 +#: plugins/sudoers/cvtsudoers_json.c:654 plugins/sudoers/cvtsudoers_json.c:667 +#: plugins/sudoers/cvtsudoers_ldif.c:349 plugins/sudoers/cvtsudoers_ldif.c:360 +#: plugins/sudoers/ldap.c:509 msgid "unable to format timestamp" msgstr "kan inte formatera tidsstämpel" -#: plugins/sudoers/cvtsudoers_ldif.c:632 +#: plugins/sudoers/cvtsudoers_ldif.c:640 #, c-format msgid "too many sudoers entries, maximum %u" msgstr "för många sudoers-poster, maximalt %u" -#: plugins/sudoers/cvtsudoers_ldif.c:675 +#: plugins/sudoers/cvtsudoers_ldif.c:683 msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified." msgstr "miljövariabeln SUDOERS_BASE är inte satt och flaggan -b angavs inte." -#: plugins/sudoers/def_data.c:42 +#: plugins/sudoers/def_data.c:50 #, c-format msgid "Syslog facility if syslog is being used for logging: %s" msgstr "Syslog-facilitet om syslog används för loggning: %s" -#: plugins/sudoers/def_data.c:46 +#: plugins/sudoers/def_data.c:54 #, c-format msgid "Syslog priority to use when user authenticates successfully: %s" msgstr "Syslog-prioritet att använda när användaren lyckas med autentisering: %s" -#: plugins/sudoers/def_data.c:50 +#: plugins/sudoers/def_data.c:58 #, c-format msgid "Syslog priority to use when user authenticates unsuccessfully: %s" msgstr "Syslog-prioritet att använda när användaren misslyckas med autentisering: %s" -#: plugins/sudoers/def_data.c:54 +#: plugins/sudoers/def_data.c:62 msgid "Put OTP prompt on its own line" msgstr "Lägg OTP-prompt på en egen rad" -#: plugins/sudoers/def_data.c:58 +#: plugins/sudoers/def_data.c:66 msgid "Ignore '.' in $PATH" msgstr "Ignorera ”.” i $PATH" -#: plugins/sudoers/def_data.c:62 +#: plugins/sudoers/def_data.c:70 msgid "Always send mail when sudo is run" msgstr "Skicka alltid e-post när sudo körs" -#: plugins/sudoers/def_data.c:66 +#: plugins/sudoers/def_data.c:74 msgid "Send mail if user authentication fails" msgstr "Skicka e-post om användarens autentisering misslyckas" -#: plugins/sudoers/def_data.c:70 +#: plugins/sudoers/def_data.c:78 msgid "Send mail if the user is not in sudoers" msgstr "Skicka e-post om användaren inte finns med i sudoers" -#: plugins/sudoers/def_data.c:74 +#: plugins/sudoers/def_data.c:82 msgid "Send mail if the user is not in sudoers for this host" msgstr "Skicka e-post om användaren inte finns med i sudoers för denna värddator" -#: plugins/sudoers/def_data.c:78 +#: plugins/sudoers/def_data.c:86 msgid "Send mail if the user is not allowed to run a command" msgstr "Skicka e-post om användaren inte tillåts att köra ett kommando" -#: plugins/sudoers/def_data.c:82 +#: plugins/sudoers/def_data.c:90 msgid "Send mail if the user tries to run a command" msgstr "Skicka e-post om användaren försöker köra ett kommando" -#: plugins/sudoers/def_data.c:86 +#: plugins/sudoers/def_data.c:94 msgid "Use a separate timestamp for each user/tty combo" msgstr "Använd en separat tidsstämpel för varje användar-/tty-kombination" -#: plugins/sudoers/def_data.c:90 +#: plugins/sudoers/def_data.c:98 msgid "Lecture user the first time they run sudo" msgstr "Lär upp användaren första gången de kör sudo" -#: plugins/sudoers/def_data.c:94 +#: plugins/sudoers/def_data.c:102 #, c-format msgid "File containing the sudo lecture: %s" msgstr "Fil som innehåller sudo-lektion: %s" -#: plugins/sudoers/def_data.c:98 +#: plugins/sudoers/def_data.c:106 msgid "Require users to authenticate by default" msgstr "Kräv att användare autentiseras som standard" -#: plugins/sudoers/def_data.c:102 +#: plugins/sudoers/def_data.c:110 msgid "Root may run sudo" msgstr "Root får köra sudo" -#: plugins/sudoers/def_data.c:106 +#: plugins/sudoers/def_data.c:114 msgid "Log the hostname in the (non-syslog) log file" msgstr "Logga värdnamnet i (den icke syslog-baserade) loggfilen" -#: plugins/sudoers/def_data.c:110 +#: plugins/sudoers/def_data.c:118 msgid "Log the year in the (non-syslog) log file" msgstr "Logga året i (den icke syslog-baserade) loggfilen" -#: plugins/sudoers/def_data.c:114 +#: plugins/sudoers/def_data.c:122 msgid "If sudo is invoked with no arguments, start a shell" msgstr "Om sudo startas utan argument, starta ett skal" -#: plugins/sudoers/def_data.c:118 +#: plugins/sudoers/def_data.c:126 msgid "Set $HOME to the target user when starting a shell with -s" msgstr "Ställ in $HOME till målanvändaren när ett skal startas med -s" -#: plugins/sudoers/def_data.c:122 +#: plugins/sudoers/def_data.c:130 msgid "Always set $HOME to the target user's home directory" msgstr "Ställ alltid in $HOME till målanvändarens hemkatalog" -#: plugins/sudoers/def_data.c:126 +#: plugins/sudoers/def_data.c:134 msgid "Allow some information gathering to give useful error messages" msgstr "Tillåt viss informationsinsamling för att ge meningsfulla felmeddelanden" -#: plugins/sudoers/def_data.c:130 +#: plugins/sudoers/def_data.c:138 msgid "Require fully-qualified hostnames in the sudoers file" msgstr "Kräv fullständiga värdnamn i sudoers-filen" -#: plugins/sudoers/def_data.c:134 +#: plugins/sudoers/def_data.c:142 msgid "Insult the user when they enter an incorrect password" msgstr "Förolämpa användaren när de anger ett felaktigt lösenord" -#: plugins/sudoers/def_data.c:138 +#: plugins/sudoers/def_data.c:146 msgid "Only allow the user to run sudo if they have a tty" msgstr "Tillåt bara användare att köra sudo om de har en tty" -#: plugins/sudoers/def_data.c:142 +#: plugins/sudoers/def_data.c:150 msgid "Visudo will honor the EDITOR environment variable" msgstr "Visudo kommer att respektera miljövariabeln EDITOR" -#: plugins/sudoers/def_data.c:146 +#: plugins/sudoers/def_data.c:154 msgid "Prompt for root's password, not the users's" msgstr "Fråga efter root-lösenordet, inte användarens" -#: plugins/sudoers/def_data.c:150 +#: plugins/sudoers/def_data.c:158 msgid "Prompt for the runas_default user's password, not the users's" msgstr "Fråga efter runas_default-användarens lösenord, inte användarens" -#: plugins/sudoers/def_data.c:154 +#: plugins/sudoers/def_data.c:162 msgid "Prompt for the target user's password, not the users's" msgstr "Fråga efter målanvändarens lösenord, inte användarens" -#: plugins/sudoers/def_data.c:158 +#: plugins/sudoers/def_data.c:166 msgid "Apply defaults in the target user's login class if there is one" msgstr "Tillämpa standardvärden i målanvändarens inloggningsklass om det finns en" -#: plugins/sudoers/def_data.c:162 +#: plugins/sudoers/def_data.c:170 msgid "Set the LOGNAME and USER environment variables" msgstr "Ställ in miljövariablerna LOGNAME och USER" -#: plugins/sudoers/def_data.c:166 +#: plugins/sudoers/def_data.c:174 msgid "Only set the effective uid to the target user, not the real uid" msgstr "Sätt bara det effektiva uid:t till målanvändaren, inte till det riktiga uid:t" -#: plugins/sudoers/def_data.c:170 +#: plugins/sudoers/def_data.c:178 msgid "Don't initialize the group vector to that of the target user" msgstr "Initiera inte gruppvektorn till den från målanvändaren" -#: plugins/sudoers/def_data.c:174 +#: plugins/sudoers/def_data.c:182 #, c-format msgid "Length at which to wrap log file lines (0 for no wrap): %u" msgstr "Längden vid vilken långa loggfilsrader radbryts (0 för att inte radbryta): %u" -#: plugins/sudoers/def_data.c:178 +#: plugins/sudoers/def_data.c:186 #, c-format msgid "Authentication timestamp timeout: %.1f minutes" msgstr "Tidsgräns för autentiseringstidsstämpel: %.1f minuter" -#: plugins/sudoers/def_data.c:182 +#: plugins/sudoers/def_data.c:190 #, c-format msgid "Password prompt timeout: %.1f minutes" msgstr "Tidsgräns för lösenordsprompt: %.1f minuter" -#: plugins/sudoers/def_data.c:186 +#: plugins/sudoers/def_data.c:194 #, c-format msgid "Number of tries to enter a password: %u" msgstr "Antal försök att ange ett lösenord: %u" -#: plugins/sudoers/def_data.c:190 +#: plugins/sudoers/def_data.c:198 #, c-format msgid "Umask to use or 0777 to use user's: 0%o" msgstr "Umask att använda eller 0777 för att använda användarens: 0%o" -#: plugins/sudoers/def_data.c:194 +#: plugins/sudoers/def_data.c:202 #, c-format msgid "Path to log file: %s" msgstr "Sökväg till loggfil: %s" -#: plugins/sudoers/def_data.c:198 +#: plugins/sudoers/def_data.c:206 #, c-format msgid "Path to mail program: %s" msgstr "Sökväg till e-postprogram: %s" -#: plugins/sudoers/def_data.c:202 +#: plugins/sudoers/def_data.c:210 #, c-format msgid "Flags for mail program: %s" msgstr "Flaggor för e-postprogram: %s" -#: plugins/sudoers/def_data.c:206 +#: plugins/sudoers/def_data.c:214 #, c-format msgid "Address to send mail to: %s" msgstr "Adress att skicka e-post till: %s" -#: plugins/sudoers/def_data.c:210 +#: plugins/sudoers/def_data.c:218 #, c-format msgid "Address to send mail from: %s" msgstr "Adress att skicka e-post från: %s" -#: plugins/sudoers/def_data.c:214 +#: plugins/sudoers/def_data.c:222 #, c-format msgid "Subject line for mail messages: %s" msgstr "Ämnesrad för e-postmeddelanden: %s" -#: plugins/sudoers/def_data.c:218 +#: plugins/sudoers/def_data.c:226 #, c-format msgid "Incorrect password message: %s" msgstr "Meddelande vid felaktigt lösenord: %s" -#: plugins/sudoers/def_data.c:222 +#: plugins/sudoers/def_data.c:230 #, c-format msgid "Path to lecture status dir: %s" msgstr "Sökväg till lektionsstatuskatalog: %s" -#: plugins/sudoers/def_data.c:226 +#: plugins/sudoers/def_data.c:234 #, c-format msgid "Path to authentication timestamp dir: %s" msgstr "Sökväg till katalog för autentiseringstidsstämplar: %s" -#: plugins/sudoers/def_data.c:230 +#: plugins/sudoers/def_data.c:238 #, c-format msgid "Owner of the authentication timestamp dir: %s" msgstr "Ägare av katalogen för autentiseringstidsstämplar: %s" -#: plugins/sudoers/def_data.c:234 +#: plugins/sudoers/def_data.c:242 #, c-format msgid "Users in this group are exempt from password and PATH requirements: %s" msgstr "Användare i denna grupp är undantagna från lösenords- och SÖKVÄGs-kraven: %s" -#: plugins/sudoers/def_data.c:238 +#: plugins/sudoers/def_data.c:246 #, c-format msgid "Default password prompt: %s" msgstr "Standard lösenordsprompt: %s" -#: plugins/sudoers/def_data.c:242 +#: plugins/sudoers/def_data.c:250 msgid "If set, passprompt will override system prompt in all cases." msgstr "Om inställt kommer passprompt att åsidosätta systemprompten i varje fall." -#: plugins/sudoers/def_data.c:246 +#: plugins/sudoers/def_data.c:254 #, c-format msgid "Default user to run commands as: %s" msgstr "Standardanvändaren att köra kommandon som: %s" -#: plugins/sudoers/def_data.c:250 +#: plugins/sudoers/def_data.c:258 #, c-format msgid "Value to override user's $PATH with: %s" msgstr "Värde att åsidosätta användarens $PATH med: %s" -#: plugins/sudoers/def_data.c:254 +#: plugins/sudoers/def_data.c:262 #, c-format msgid "Path to the editor for use by visudo: %s" msgstr "Sökväg till textredigerare för användning av visudo: %s" -#: plugins/sudoers/def_data.c:258 +#: plugins/sudoers/def_data.c:266 #, c-format msgid "When to require a password for 'list' pseudocommand: %s" msgstr "När ett lösenord ska krävas för pseudokommandot ”list”: %s" -#: plugins/sudoers/def_data.c:262 +#: plugins/sudoers/def_data.c:270 #, c-format msgid "When to require a password for 'verify' pseudocommand: %s" msgstr "När lösenord ska krävas för pseudokommandot ”verify”: %s" -#: plugins/sudoers/def_data.c:266 -msgid "Preload the dummy exec functions contained in the sudo_noexec library" -msgstr "Förinläs attrapp-exec-funktioner som finns i biblioteket sudo_noexec" +#: plugins/sudoers/def_data.c:274 +msgid "Preload the sudo_noexec library which replaces the exec functions" +msgstr "Förinläs sudo_noexec-biblioteket vilket ersätter exec-funktionerna" -#: plugins/sudoers/def_data.c:270 +#: plugins/sudoers/def_data.c:278 msgid "If LDAP directory is up, do we ignore local sudoers file" msgstr "Om LDAP-registret är uppe, ignorerar vi den lokala sudoers-filen" -#: plugins/sudoers/def_data.c:274 +#: plugins/sudoers/def_data.c:282 #, c-format msgid "File descriptors >= %d will be closed before executing a command" -msgstr "Fildeskriptorer >= %d kommer att stängas innan ett kommando exekveras" +msgstr "Fildeskriptorer >= %d kommer att stängas innan ett kommando körs" -#: plugins/sudoers/def_data.c:278 -msgid "If set, users may override the value of `closefrom' with the -C option" +#: plugins/sudoers/def_data.c:286 +msgid "If set, users may override the value of \"closefrom\" with the -C option" msgstr "Om inställt kan användare åsidosätta värdet ”closefrom” med flaggan -C" -#: plugins/sudoers/def_data.c:282 +#: plugins/sudoers/def_data.c:290 msgid "Allow users to set arbitrary environment variables" msgstr "Låt användare ställa in godtyckliga miljövariabler" -#: plugins/sudoers/def_data.c:286 +#: plugins/sudoers/def_data.c:294 msgid "Reset the environment to a default set of variables" msgstr "Återställ miljön till standarduppsättningen av variabler" -#: plugins/sudoers/def_data.c:290 -msgid "Environment variables to check for sanity:" -msgstr "Miljövariabler att kontrollera:" +#: plugins/sudoers/def_data.c:298 +msgid "Environment variables to check for safety:" +msgstr "Miljövariabler att säkerhetskontrollera:" -#: plugins/sudoers/def_data.c:294 +#: plugins/sudoers/def_data.c:302 msgid "Environment variables to remove:" msgstr "Miljövariabler att ta bort:" -#: plugins/sudoers/def_data.c:298 +#: plugins/sudoers/def_data.c:306 msgid "Environment variables to preserve:" msgstr "Miljövariabler att behålla:" -#: plugins/sudoers/def_data.c:302 +#: plugins/sudoers/def_data.c:310 #, c-format msgid "SELinux role to use in the new security context: %s" msgstr "SELinux-roll att använda i den nya säkerhetskontexten: %s" -#: plugins/sudoers/def_data.c:306 +#: plugins/sudoers/def_data.c:314 #, c-format msgid "SELinux type to use in the new security context: %s" msgstr "SELinux-typ att använda i den nya säkerhetskontexten: %s" -#: plugins/sudoers/def_data.c:310 +#: plugins/sudoers/def_data.c:318 #, c-format msgid "Path to the sudo-specific environment file: %s" msgstr "Sökväg till den sudo-specifika miljöfilen: %s" -#: plugins/sudoers/def_data.c:314 +#: plugins/sudoers/def_data.c:322 #, c-format msgid "Path to the restricted sudo-specific environment file: %s" msgstr "Sökväg till den begränsade sudo-specifika miljöfilen: %s" -#: plugins/sudoers/def_data.c:318 +#: plugins/sudoers/def_data.c:326 #, c-format msgid "Locale to use while parsing sudoers: %s" msgstr "Lokalanpassning att använda vid tolkning av sudoers: %s" -#: plugins/sudoers/def_data.c:322 +#: plugins/sudoers/def_data.c:330 msgid "Allow sudo to prompt for a password even if it would be visible" msgstr "Tillåt sudo att fråga efter ett lösenord även om det skulle vara synligt" -#: plugins/sudoers/def_data.c:326 +#: plugins/sudoers/def_data.c:334 msgid "Provide visual feedback at the password prompt when there is user input" msgstr "Ge visuell återkoppling vid lösenordsprompten när det finns användarinmatad data" -#: plugins/sudoers/def_data.c:330 +#: plugins/sudoers/def_data.c:338 msgid "Use faster globbing that is less accurate but does not access the filesystem" msgstr "Använd snabbare matchning som är mindre exakt men inte använder filsystemet" -#: plugins/sudoers/def_data.c:334 +#: plugins/sudoers/def_data.c:342 msgid "The umask specified in sudoers will override the user's, even if it is more permissive" msgstr "Umasken angiven i sudoers kommer att åsidosätta användarens, även om den är mer tillåtande" -#: plugins/sudoers/def_data.c:338 +#: plugins/sudoers/def_data.c:346 msgid "Log user's input for the command being run" msgstr "Logga användarens inmatning för kommandot som körs" -#: plugins/sudoers/def_data.c:342 +#: plugins/sudoers/def_data.c:350 msgid "Log the output of the command being run" msgstr "Logga utmatningen för kommandot som körs" -#: plugins/sudoers/def_data.c:346 +#: plugins/sudoers/def_data.c:354 msgid "Compress I/O logs using zlib" msgstr "Komprimera I/O-loggar med hjälp av zlib" -#: plugins/sudoers/def_data.c:350 +#: plugins/sudoers/def_data.c:358 msgid "Always run commands in a pseudo-tty" msgstr "Kör alltid kommandon i en pseudo-tty" -#: plugins/sudoers/def_data.c:354 +#: plugins/sudoers/def_data.c:362 #, c-format msgid "Plugin for non-Unix group support: %s" msgstr "Insticksmodul för stöd för icke-Unix-grupper: %s" -#: plugins/sudoers/def_data.c:358 +#: plugins/sudoers/def_data.c:366 #, c-format msgid "Directory in which to store input/output logs: %s" msgstr "Katalog i vilken in-/utmatningsloggar lagras: %s" -#: plugins/sudoers/def_data.c:362 +#: plugins/sudoers/def_data.c:370 #, c-format msgid "File in which to store the input/output log: %s" msgstr "Fil i vilken in-/utmatningsloggar lagras: %s" -#: plugins/sudoers/def_data.c:366 +#: plugins/sudoers/def_data.c:374 msgid "Add an entry to the utmp/utmpx file when allocating a pty" msgstr "Lägg till en post till utmp/utmpx-filen när en pty allokeras" -#: plugins/sudoers/def_data.c:370 +#: plugins/sudoers/def_data.c:378 msgid "Set the user in utmp to the runas user, not the invoking user" msgstr "Sätt användaren i utmp till runas-användaren, inte användaren som anropar" -#: plugins/sudoers/def_data.c:374 +#: plugins/sudoers/def_data.c:382 #, c-format msgid "Set of permitted privileges: %s" msgstr "Uppsättning tillåtna rättigheter: %s" -#: plugins/sudoers/def_data.c:378 +#: plugins/sudoers/def_data.c:386 #, c-format msgid "Set of limit privileges: %s" msgstr "Uppsättning av begränsningsrättigheter: %s" -#: plugins/sudoers/def_data.c:382 +#: plugins/sudoers/def_data.c:390 msgid "Run commands on a pty in the background" msgstr "Kör kommandon i en pty i bakgrunden" -#: plugins/sudoers/def_data.c:386 +#: plugins/sudoers/def_data.c:394 #, c-format msgid "PAM service name to use: %s" msgstr "PAM-tjänstnamn att använda: %s" -#: plugins/sudoers/def_data.c:390 +#: plugins/sudoers/def_data.c:398 #, c-format msgid "PAM service name to use for login shells: %s" msgstr "PAM-tjänstnamn att använda för inloggningsskal: %s" -#: plugins/sudoers/def_data.c:394 +#: plugins/sudoers/def_data.c:402 msgid "Attempt to establish PAM credentials for the target user" msgstr "Försök att etablera PAM-inloggningsuppgifter för målanvändaren" -#: plugins/sudoers/def_data.c:398 +#: plugins/sudoers/def_data.c:406 msgid "Create a new PAM session for the command to run in" msgstr "Skapa en ny PAM-session för kommandot att köra i" -#: plugins/sudoers/def_data.c:402 +#: plugins/sudoers/def_data.c:410 msgid "Perform PAM account validation management" msgstr "Utför valideringshantering av PAM-konto" -#: plugins/sudoers/def_data.c:406 +#: plugins/sudoers/def_data.c:414 #, c-format msgid "Maximum I/O log sequence number: %s" msgstr "Största sekvensnummer i I/O-logg: %s" -#: plugins/sudoers/def_data.c:410 +#: plugins/sudoers/def_data.c:418 msgid "Enable sudoers netgroup support" msgstr "Aktivera sudoers nätgruppsstöd" -#: plugins/sudoers/def_data.c:414 +#: plugins/sudoers/def_data.c:422 msgid "Check parent directories for writability when editing files with sudoedit" msgstr "Kontrollera överordnade kataloger för skrivbarhet när filer redigeras med sudoedit" -#: plugins/sudoers/def_data.c:418 +#: plugins/sudoers/def_data.c:426 msgid "Follow symbolic links when editing files with sudoedit" msgstr "Följ symboliska länkar när filer redigeras med sudoedit" -#: plugins/sudoers/def_data.c:422 +#: plugins/sudoers/def_data.c:430 msgid "Query the group plugin for unknown system groups" msgstr "Fråga gruppinsticksmodulen efter okända systemgrupper" -#: plugins/sudoers/def_data.c:426 +#: plugins/sudoers/def_data.c:434 msgid "Match netgroups based on the entire tuple: user, host and domain" msgstr "Matcha nätgrupper baserat på hela tupeln: användare, värd och domän" -#: plugins/sudoers/def_data.c:430 +#: plugins/sudoers/def_data.c:438 msgid "Allow commands to be run even if sudo cannot write to the audit log" msgstr "Tillåt kommandon att köras även om sudo inte kan skriva till granskningsloggen" -#: plugins/sudoers/def_data.c:434 +#: plugins/sudoers/def_data.c:442 msgid "Allow commands to be run even if sudo cannot write to the I/O log" msgstr "Tillåt kommandon att köras även om sudo inte kan skriva I/O-loggen" -#: plugins/sudoers/def_data.c:438 +#: plugins/sudoers/def_data.c:446 msgid "Allow commands to be run even if sudo cannot write to the log file" msgstr "Tillåt kommandon att köras även om sudo inte kan skriva till loggfilen" -#: plugins/sudoers/def_data.c:442 +#: plugins/sudoers/def_data.c:450 msgid "Resolve groups in sudoers and match on the group ID, not the name" msgstr "Gör namnupplösning för grupper i sudoers och matcha efter grupp-ID, inte namnet" -#: plugins/sudoers/def_data.c:446 +#: plugins/sudoers/def_data.c:454 #, c-format msgid "Log entries larger than this value will be split into multiple syslog messages: %u" msgstr "Loggposter större än detta värde kommer att delas upp i flera syslog-meddelanden: %u" -#: plugins/sudoers/def_data.c:450 +#: plugins/sudoers/def_data.c:458 #, c-format msgid "User that will own the I/O log files: %s" msgstr "Användare som kommer att äga I/O-loggfilerna: %s" -#: plugins/sudoers/def_data.c:454 +#: plugins/sudoers/def_data.c:462 #, c-format msgid "Group that will own the I/O log files: %s" msgstr "Grupp som kommer att äga I/O-loggfilerna: %s" -#: plugins/sudoers/def_data.c:458 +#: plugins/sudoers/def_data.c:466 #, c-format msgid "File mode to use for the I/O log files: 0%o" msgstr "Filrättigheter att använda för I/O-loggfilerna: 0%o" -#: plugins/sudoers/def_data.c:462 +#: plugins/sudoers/def_data.c:470 #, c-format msgid "Execute commands by file descriptor instead of by path: %s" -msgstr "Exekvera kommandon efter fildeskriptor istället för efter sökväg: %s" +msgstr "Kör kommandon efter fildeskriptor istället för efter sökväg: %s" -#: plugins/sudoers/def_data.c:466 +#: plugins/sudoers/def_data.c:474 msgid "Ignore unknown Defaults entries in sudoers instead of producing a warning" msgstr "Hoppa över okända Defaults-poster i sudoers istället för att skriva ut en varning" -#: plugins/sudoers/def_data.c:470 +#: plugins/sudoers/def_data.c:478 #, c-format msgid "Time in seconds after which the command will be terminated: %u" msgstr "Tid i sekunder efter vilka kommandot kommer att avslutas: %u" -#: plugins/sudoers/def_data.c:474 +#: plugins/sudoers/def_data.c:482 msgid "Allow the user to specify a timeout on the command line" msgstr "Tillåt användaren att ange en tidsgräns på kommandoraden" -#: plugins/sudoers/def_data.c:478 +#: plugins/sudoers/def_data.c:486 msgid "Flush I/O log data to disk immediately instead of buffering it" msgstr "Spola ut I/O-loggdata till disk omedelbart istället för att buffra det" -#: plugins/sudoers/def_data.c:482 +#: plugins/sudoers/def_data.c:490 msgid "Include the process ID when logging via syslog" msgstr "Inkludera process-ID:t vid loggning via syslog" -#: plugins/sudoers/def_data.c:486 +#: plugins/sudoers/def_data.c:494 #, c-format msgid "Type of authentication timestamp record: %s" msgstr "Typ av post för autentiseringstidsstämplar: %s" -#: plugins/sudoers/def_data.c:490 +#: plugins/sudoers/def_data.c:498 #, c-format msgid "Authentication failure message: %s" msgstr "Autentiseringsfelsmeddelande: %s" -#: plugins/sudoers/def_data.c:494 +#: plugins/sudoers/def_data.c:502 msgid "Ignore case when matching user names" msgstr "Matcha användarnamn skiftlägesokänsligt" -#: plugins/sudoers/def_data.c:498 +#: plugins/sudoers/def_data.c:506 msgid "Ignore case when matching group names" msgstr "Matcha gruppnamn skiftlägesokänsligt" -#: plugins/sudoers/def_data.c:502 +#: plugins/sudoers/def_data.c:510 msgid "Log when a command is allowed by sudoers" msgstr "Logga när ett kommando tillåts av sudoers" -#: plugins/sudoers/def_data.c:506 +#: plugins/sudoers/def_data.c:514 msgid "Log when a command is denied by sudoers" msgstr "Logga när ett kommando nekas av sudoers" -#: plugins/sudoers/def_data.c:510 +#: plugins/sudoers/def_data.c:518 msgid "Sudo log server(s) to connect to with optional port" msgstr "Sudo-loggservrar att ansluta till med valfri port" -#: plugins/sudoers/def_data.c:514 +#: plugins/sudoers/def_data.c:522 #, c-format msgid "Sudo log server timeout in seconds: %u" msgstr "Tidsgräns för sudo-loggserver i sekunder: %u" -#: plugins/sudoers/def_data.c:518 +#: plugins/sudoers/def_data.c:526 msgid "Enable SO_KEEPALIVE socket option on the socket connected to the logserver" msgstr "Aktivera SO_KEEPALIVE-kontaktalternativ på kontakten ansluten till loggservern" -#: plugins/sudoers/def_data.c:522 +#: plugins/sudoers/def_data.c:530 #, c-format msgid "Path to the audit server's CA bundle file: %s" msgstr "Sökväg till granskningsserverns CA-buntfil: %s" -#: plugins/sudoers/def_data.c:526 +#: plugins/sudoers/def_data.c:534 #, c-format msgid "Path to the sudoers certificate file: %s" msgstr "Sökväg till sudoers certifikatfil: %s" -#: plugins/sudoers/def_data.c:530 +#: plugins/sudoers/def_data.c:538 #, c-format msgid "Path to the sudoers private key file: %s" msgstr "Sökväg till sudoers privata nyckelfil: %s" -#: plugins/sudoers/def_data.c:534 +#: plugins/sudoers/def_data.c:542 msgid "Verify that the log server's certificate is valid" msgstr "Verifiera att loggserverns certifikatfil är giltig" -#: plugins/sudoers/def_data.c:538 +#: plugins/sudoers/def_data.c:546 msgid "Allow the use of unknown runas user and/or group ID" msgstr "Tillåt användningen av okänd runas-användare och/eller grupp-ID" -#: plugins/sudoers/def_data.c:542 +#: plugins/sudoers/def_data.c:550 msgid "Only permit running commands as a user with a valid shell" msgstr "Tillåt endast körning av kommandon som en användare med ett giltigt skal" -#: plugins/sudoers/def_data.c:546 +#: plugins/sudoers/def_data.c:554 msgid "Set the pam remote user to the user running sudo" msgstr "Ställ in pam-fjärranvändaren för användaren som kör sudo" -#: plugins/sudoers/def_data.c:550 +#: plugins/sudoers/def_data.c:558 msgid "Set the pam remote host to the local host name" msgstr "Ställ in pam-fjärrvärden till det lokala värdnamnet" -#: plugins/sudoers/defaults.c:183 +#: plugins/sudoers/def_data.c:562 #, c-format -msgid "%s:%d unknown defaults entry \"%s\"" -msgstr "%s:%d okänd standardpost ”%s”" +msgid "Working directory to change to before executing the command: %s" +msgstr "Arbetskatalog att ändra till före körning av kommandot: %s" -#: plugins/sudoers/defaults.c:186 +#: plugins/sudoers/def_data.c:566 #, c-format -msgid "%s: unknown defaults entry \"%s\"" -msgstr "%s: okänd standardpost ”%s”" +msgid "Root directory to change to before executing the command: %s" +msgstr "Rotkatalog att ändra till innan kommandot körs: %s" -#: plugins/sudoers/defaults.c:229 +#: plugins/sudoers/def_data.c:570 #, c-format -msgid "%s:%d no value specified for \"%s\"" -msgstr "%s:%d inget värde angivet för ”%s”" +msgid "The format of logs to produce: %s" +msgstr "Formatet för loggarna som ska produceras: %s" -#: plugins/sudoers/defaults.c:232 +#: plugins/sudoers/defaults.c:185 #, c-format -msgid "%s: no value specified for \"%s\"" -msgstr "%s: inget värde angivet för ”%s”" +msgid "%s:%d:%d: unknown defaults entry \"%s\"" +msgstr "%s:%d:%d: okänd standardpost ”%s”" + +#: plugins/sudoers/defaults.c:188 +#, c-format +msgid "%s: unknown defaults entry \"%s\"" +msgstr "%s: okänd standardpost ”%s”" -#: plugins/sudoers/defaults.c:252 +#: plugins/sudoers/defaults.c:234 #, c-format -msgid "%s:%d values for \"%s\" must start with a '/'" -msgstr "%s:%d värden för ”%s” måste börja med ett ”/”" +msgid "%s:%d:%d: no value specified for \"%s\"" +msgstr "%s:%d:%d: inget värde angivet för ”%s”" -#: plugins/sudoers/defaults.c:255 +#: plugins/sudoers/defaults.c:237 #, c-format -msgid "%s: values for \"%s\" must start with a '/'" -msgstr "%s: värden för ”%s” måste börja med ett ”/”" +msgid "%s: no value specified for \"%s\"" +msgstr "%s: inget värde angivet för ”%s”" -#: plugins/sudoers/defaults.c:277 +#: plugins/sudoers/defaults.c:275 #, c-format -msgid "%s:%d option \"%s\" does not take a value" -msgstr "%s:%d flaggan ”%s” tar inte emot något värde" +msgid "%s:%d:%d: option \"%s\" does not take a value" +msgstr "%s:%d:%d: flaggan ”%s” tar inte emot något värde" -#: plugins/sudoers/defaults.c:280 +#: plugins/sudoers/defaults.c:278 #, c-format msgid "%s: option \"%s\" does not take a value" msgstr "%s: flaggan ”%s” tar inte emot något värde" -#: plugins/sudoers/defaults.c:305 +#: plugins/sudoers/defaults.c:303 #, c-format -msgid "%s:%d invalid Defaults type 0x%x for option \"%s\"" -msgstr "%s:%d ogiltig standardtyp 0x%x för flagga ”%s”" +msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\"" +msgstr "%s:%d:%d: ogiltig standardtyp 0x%x för flagga ”%s”" -#: plugins/sudoers/defaults.c:308 +#: plugins/sudoers/defaults.c:306 #, c-format msgid "%s: invalid Defaults type 0x%x for option \"%s\"" msgstr "%s: ogiltig standardtyp 0x%x för flagga ”%s”" -#: plugins/sudoers/defaults.c:318 +#: plugins/sudoers/defaults.c:316 #, c-format -msgid "%s:%d value \"%s\" is invalid for option \"%s\"" -msgstr "%s:%d värdet ”%s” är ogiltigt för flaggan ”%s”" +msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\"" +msgstr "%s:%d:%d: värdet ”%s” är ogiltigt för flaggan ”%s”" -#: plugins/sudoers/defaults.c:321 +#: plugins/sudoers/defaults.c:319 #, c-format msgid "%s: value \"%s\" is invalid for option \"%s\"" msgstr "%s: värdet ”%s” är ogiltigt för flaggan ”%s”" -#: plugins/sudoers/env.c:404 +#: plugins/sudoers/defaults.c:1030 +#, c-format +msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'" +msgstr "%s:%d:%d: värden för ”%s” måste börja med ett ”/”, ”~” eller ”*”" + +#: plugins/sudoers/defaults.c:1034 +#, c-format +msgid "%s: values for \"%s\" must start with a '/', '~', or '*'" +msgstr "%s: värden för ”%s” måste börja med ett ”/”, ”~” eller ”*”" + +#: plugins/sudoers/defaults.c:1045 +#, c-format +msgid "%s:%d:%d: values for \"%s\" must start with a '/'" +msgstr "%s:%d:%d: värden för ”%s” måste börja med ett ”/”" + +#: plugins/sudoers/defaults.c:1049 +#, c-format +msgid "%s: values for \"%s\" must start with a '/'" +msgstr "%s: värden för ”%s” måste börja med ett ”/”" + +#: plugins/sudoers/env.c:405 msgid "sudo_putenv: corrupted envp, length mismatch" msgstr "sudo_putenv: trasig envp, längd stämmer inte" -#: plugins/sudoers/env.c:1131 +#: plugins/sudoers/env.c:1133 msgid "unable to rebuild the environment" msgstr "kan inte återuppbygga miljön" -#: plugins/sudoers/env.c:1205 +#: plugins/sudoers/env.c:1207 #, c-format msgid "sorry, you are not allowed to set the following environment variables: %s" msgstr "du får inte lov att ställa in följande miljövariabler: %s" -#: plugins/sudoers/file.c:104 +#: plugins/sudoers/file.c:107 #, c-format msgid "parse error in %s near line %d" msgstr "tolkningsfel i %s nära rad %d" -#: plugins/sudoers/file.c:107 +#: plugins/sudoers/file.c:110 #, c-format msgid "parse error in %s" msgstr "tolkningsfel i %s" @@ -1928,7 +2014,7 @@ msgid "%s must only be writable by owner" msgstr "%s får endast vara skrivbar av ägaren" -#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:571 +#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:569 #, c-format msgid "unable to load %s: %s" msgstr "kan inte läsa in %s: %s" @@ -1957,122 +2043,78 @@ msgid "Local IP address and netmask pairs:\n" msgstr "Lokala IP-adress- och nätmaskpar:\n" -#: plugins/sudoers/iolog.c:142 plugins/sudoers/sudoers.c:393 -#: plugins/sudoers/sudoers.c:394 plugins/sudoers/sudoers.c:1274 -#: plugins/sudoers/testsudoers.c:416 +#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445 +#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410 #, c-format msgid "unknown group: %s" msgstr "okänd grupp: %s" -#: plugins/sudoers/iolog.c:517 plugins/sudoers/iolog.c:807 -#: plugins/sudoers/iolog.c:959 plugins/sudoers/iolog.c:966 -#: plugins/sudoers/iolog.c:1087 plugins/sudoers/iolog.c:1094 -#: plugins/sudoers/iolog.c:1193 plugins/sudoers/iolog.c:1200 +#: plugins/sudoers/iolog.c:622 +msgid "unable to update sequence file" +msgstr "kan inte uppdatera sekvensfil" + +#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841 +#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001 +#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129 +#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235 #, c-format msgid "unable to write to I/O log file: %s" msgstr "kan inte skriva till I/O-loggfil: %s" -#: plugins/sudoers/iolog.c:566 -msgid "unable to update sequence file" -msgstr "kan inte uppdatera sekvensfil" - -#: plugins/sudoers/iolog.c:605 +#: plugins/sudoers/iolog.c:661 #, c-format msgid "unable to create %s/%s" msgstr "kan inte skapa %s/%s" -#: plugins/sudoers/iolog.c:631 -msgid "unable to connect to log server" -msgstr "kan inte ansluta till loggserver" - -#: plugins/sudoers/iolog.c:851 +#: plugins/sudoers/iolog.c:886 #, c-format msgid "%s: internal error, I/O log file for event %d not open" msgstr "%s: internt fel, I/O-loggfil för händelse %d inte öppen" -#: plugins/sudoers/iolog.c:944 plugins/sudoers/iolog.c:1072 -#: plugins/sudoers/iolog.c:1177 plugins/sudoers/timestamp.c:855 -#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:492 -#: plugins/sudoers/visudo.c:498 +#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107 +#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855 +#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493 +#: plugins/sudoers/visudo.c:499 msgid "unable to read the clock" msgstr "kan inte läsa klockan" -#: plugins/sudoers/iolog.c:1169 plugins/sudoers/iolog_client.c:977 +#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193 #, c-format msgid "%s: internal error, invalid signal %d" msgstr "%s: internt fel, ogiltig signal %d" -#: plugins/sudoers/iolog_client.c:113 plugins/sudoers/iolog_client.c:392 -#: plugins/sudoers/iolog_client.c:1200 plugins/sudoers/iolog_client.c:1775 -msgid "error in event loop" -msgstr "fel i händelseloop" - -#: plugins/sudoers/iolog_client.c:194 -#, c-format -msgid "Creation of new SSL_CTX object failed: %s" -msgstr "Skapande av nytt SSL_CTX-objekt misslyckades: %s" - -#: plugins/sudoers/iolog_client.c:346 plugins/sudoers/iolog_client.c:351 -#, c-format -msgid "TLS connection to %s:%s failed: %s" -msgstr "TLS-anslutning till %s:%s misslyckades: %s" - -#: plugins/sudoers/iolog_client.c:496 -msgid "TLS initialization was unsuccessful" -msgstr "TLS-initiering misslyckades" - -#: plugins/sudoers/iolog_client.c:505 -msgid "TLS handshake was unsuccessful" -msgstr "TLS-handskakning misslyckades" - -#: plugins/sudoers/iolog_client.c:767 plugins/sudoers/iolog_client.c:959 -msgid "unable to get time of day" -msgstr "kan inte hämta tid på dagen" - -#: plugins/sudoers/iolog_client.c:986 -#, c-format -msgid "%s: internal error, invalid exit status %d" -msgstr "%s: internt fel, ogiltig avslutningskod %d" - -#: plugins/sudoers/iolog_client.c:1523 -msgid "lost connection to log server" -msgstr "förlorade kontakten med loggservern" - -#: plugins/sudoers/iolog_client.c:1600 -msgid "missing write buffer" -msgstr "saknar skrivbuffert" - -#: plugins/sudoers/ldap.c:176 plugins/sudoers/ldap_conf.c:291 +#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:291 msgid "starttls not supported when using ldaps" msgstr "starttls stöds inte när ldaps används" -#: plugins/sudoers/ldap.c:247 +#: plugins/sudoers/ldap.c:248 #, c-format msgid "unable to initialize SSL cert and key db: %s" msgstr "kan inte initiera SSL-certifikat och nyckeldatabas: %s" -#: plugins/sudoers/ldap.c:250 +#: plugins/sudoers/ldap.c:251 #, c-format msgid "you must set TLS_CERT in %s to use SSL" msgstr "du måste ställa in TLS_CERT i %s för att använda SSL" -#: plugins/sudoers/ldap.c:1658 +#: plugins/sudoers/ldap.c:1660 #, c-format msgid "unable to initialize LDAP: %s" msgstr "kan inte initiera LDAP: %s" -#: plugins/sudoers/ldap.c:1694 +#: plugins/sudoers/ldap.c:1697 msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()" msgstr "start_tls angivet men LDAP-bibliotek har inte stöd för ldap_start_tls_s() eller ldap_start_tls_s_np()" -#: plugins/sudoers/ldap.c:1831 plugins/sudoers/parse_ldif.c:744 +#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744 #, c-format msgid "invalid sudoOrder attribute: %s" msgstr "ogiltigt sudoOrder-attribut: %s" #: plugins/sudoers/ldap_conf.c:200 -msgid "sudo_ldap_conf_add_ports: port too large" -msgstr "sudo_ldap_conf_add_ports: port är för stor" +#, c-format +msgid "%s: port too large" +msgstr "%s: port för stor" #: plugins/sudoers/ldap_conf.c:260 #, c-format @@ -2083,7 +2125,7 @@ msgid "unable to mix ldap and ldaps URIs" msgstr "kan inte blanda ldap- och ldaps-URI:er" -#: plugins/sudoers/ldap_util.c:548 plugins/sudoers/ldap_util.c:550 +#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555 #, c-format msgid "unable to convert sudoOption: %s%s%s" msgstr "kan inte konvertera sudoOption: %s%s%s" @@ -2092,66 +2134,91 @@ msgid "unable to open audit system" msgstr "kan inte öppna granskningssystem" -#: plugins/sudoers/linux_audit.c:100 +#: plugins/sudoers/linux_audit.c:101 msgid "unable to send audit message" msgstr "kan inte skicka granskningsmeddelande" -#: plugins/sudoers/logging.c:167 +#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391 +#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023 +msgid "error in event loop" +msgstr "fel i händelseloop" + +#: plugins/sudoers/log_client.c:193 #, c-format -msgid "unable to open log file: %s" -msgstr "kan inte öppna loggfil: %s" +msgid "Creation of new SSL_CTX object failed: %s" +msgstr "Skapande av nytt SSL_CTX-objekt misslyckades: %s" -#: plugins/sudoers/logging.c:175 +#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350 #, c-format -msgid "unable to lock log file: %s" -msgstr "kan inte låsa loggfil: %s" +msgid "TLS connection to %s:%s failed: %s" +msgstr "TLS-anslutning till %s:%s misslyckades: %s" + +#: plugins/sudoers/log_client.c:519 +msgid "TLS initialization was unsuccessful" +msgstr "TLS-initiering misslyckades" -#: plugins/sudoers/logging.c:208 +#: plugins/sudoers/log_client.c:528 +msgid "TLS handshake was unsuccessful" +msgstr "TLS-handskakning misslyckades" + +#: plugins/sudoers/log_client.c:1202 #, c-format -msgid "unable to write log file: %s" -msgstr "kan inte skriva till loggfil: %s" +msgid "%s: internal error, invalid exit status %d" +msgstr "%s: internt fel, ogiltig avslutningskod %d" -#: plugins/sudoers/logging.c:241 +#: plugins/sudoers/log_client.c:1738 +msgid "lost connection to log server" +msgstr "förlorade kontakten med loggservern" + +#: plugins/sudoers/log_client.c:1815 +msgid "missing write buffer" +msgstr "saknar skrivbuffert" + +#: plugins/sudoers/log_client.c:1964 +msgid "unable to connect to log server" +msgstr "kan inte ansluta till loggserver" + +#: plugins/sudoers/logging.c:244 msgid "user NOT in sudoers" msgstr "användare finns INTE i sudoers" -#: plugins/sudoers/logging.c:243 +#: plugins/sudoers/logging.c:246 msgid "user NOT authorized on host" msgstr "användaren är INTE auktoriserad på värddatorn" -#: plugins/sudoers/logging.c:245 +#: plugins/sudoers/logging.c:248 msgid "command not allowed" msgstr "kommandot tillåts inte" -#: plugins/sudoers/logging.c:288 +#: plugins/sudoers/logging.c:269 #, c-format msgid "%s is not in the sudoers file. This incident will be reported.\n" msgstr "%s finns inte i filen sudoers. Denna incident kommer att rapporteras.\n" -#: plugins/sudoers/logging.c:291 +#: plugins/sudoers/logging.c:272 #, c-format msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n" msgstr "%s tillåts inte att köra sudo på %s. Denna incident kommer att rapporteras.\n" -#: plugins/sudoers/logging.c:295 +#: plugins/sudoers/logging.c:276 #, c-format msgid "Sorry, user %s may not run sudo on %s.\n" msgstr "Tyvärr, användaren %s får inte köra sudo på %s.\n" -#: plugins/sudoers/logging.c:298 +#: plugins/sudoers/logging.c:279 #, c-format msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n" msgstr "Tyvärr, användaren %s tillåts inte att köra ”%s%s%s” som %s%s%s på %s.\n" -#: plugins/sudoers/logging.c:335 plugins/sudoers/sudoers.c:512 -#: plugins/sudoers/sudoers.c:514 plugins/sudoers/sudoers.c:516 -#: plugins/sudoers/sudoers.c:518 plugins/sudoers/sudoers.c:665 -#: plugins/sudoers/sudoers.c:667 +#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583 +#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587 +#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739 +#: plugins/sudoers/sudoers.c:741 #, c-format msgid "%s: command not found" msgstr "%s: kommandot hittades inte" -#: plugins/sudoers/logging.c:337 plugins/sudoers/sudoers.c:508 +#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579 #, c-format msgid "" "ignoring \"%s\" found in '.'\n" @@ -2160,47 +2227,37 @@ "ignorerar ”%s” som hittades i ”.”\n" "Använd ”sudo ./%s” om detta är den ”%s” som du vill köra." -#: plugins/sudoers/logging.c:354 -msgid "authentication failure" -msgstr "autentiseringsfel" - -#: plugins/sudoers/logging.c:380 -msgid "a password is required" -msgstr "ett lösenord krävs" - -#: plugins/sudoers/logging.c:450 +#: plugins/sudoers/logging.c:337 #, c-format msgid "%u incorrect password attempt" msgid_plural "%u incorrect password attempts" msgstr[0] "%u felaktigt lösenordsförsök" msgstr[1] "%u felaktiga lösenordsförsök" -#: plugins/sudoers/logging.c:714 -#, c-format -msgid "unable to dup stdin: %m" -msgstr "kan inte duplicera stdin: %m" +#: plugins/sudoers/logging.c:393 +msgid "authentication failure" +msgstr "autentiseringsfel" -#: plugins/sudoers/logging.c:751 -#, c-format -msgid "unable to execute %s: %m" -msgstr "kan inte köra %s: %m" +#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453 +msgid "a password is required" +msgstr "ett lösenord krävs" -#: plugins/sudoers/logging.c:792 plugins/sudoers/logging.c:848 +#: plugins/sudoers/logging.c:729 #, c-format -msgid "unable to fork: %m" -msgstr "kan inte grena process: %m" +msgid "unable to open log file: %s" +msgstr "kan inte öppna loggfil: %s" -#: plugins/sudoers/logging.c:838 +#: plugins/sudoers/logging.c:762 #, c-format -msgid "unable to open pipe: %m" -msgstr "kan inte öppna rör: %m" +msgid "unable to write log file: %s" +msgstr "kan inte skriva till loggfil: %s" -#: plugins/sudoers/match_digest.c:116 +#: plugins/sudoers/match_digest.c:129 #, c-format msgid "digest for %s (%s) is not in %s form" msgstr "kontrollsumma för %s (%s) är inte på %s-form" -#: plugins/sudoers/parse.c:442 +#: plugins/sudoers/parse.c:518 #, c-format msgid "" "\n" @@ -2209,8 +2266,7 @@ "\n" "LDAP-roll: %s\n" -#: plugins/sudoers/parse.c:445 -#, c-format +#: plugins/sudoers/parse.c:521 msgid "" "\n" "Sudoers entry:\n" @@ -2218,42 +2274,38 @@ "\n" "Sudoers-post:\n" -#: plugins/sudoers/parse.c:447 -#, c-format +#: plugins/sudoers/parse.c:523 msgid " RunAsUsers: " msgstr " KörSomAnvändare: " -#: plugins/sudoers/parse.c:462 -#, c-format +#: plugins/sudoers/parse.c:538 msgid " RunAsGroups: " msgstr " KörSomGrupper: " -#: plugins/sudoers/parse.c:472 -#, c-format +#: plugins/sudoers/parse.c:548 msgid " Options: " msgstr " Flaggor: " -#: plugins/sudoers/parse.c:522 -#, c-format +#: plugins/sudoers/parse.c:602 msgid " Commands:\n" msgstr " Kommandon:\n" -#: plugins/sudoers/parse.c:713 +#: plugins/sudoers/parse.c:793 #, c-format msgid "Matching Defaults entries for %s on %s:\n" msgstr "Matchande standardposter för %s på %s:\n" -#: plugins/sudoers/parse.c:731 +#: plugins/sudoers/parse.c:811 #, c-format msgid "Runas and Command-specific defaults for %s:\n" msgstr "Runas- och kommando-specifika standardvärden för %s:\n" -#: plugins/sudoers/parse.c:749 +#: plugins/sudoers/parse.c:829 #, c-format msgid "User %s may run the following commands on %s:\n" msgstr "Användare %s får köra följande kommandon på %s:\n" -#: plugins/sudoers/parse.c:764 +#: plugins/sudoers/parse.c:844 #, c-format msgid "User %s is not allowed to run sudo on %s.\n" msgstr "Användaren %s tillåts inte att köra sudo på %s.\n" @@ -2268,48 +2320,58 @@ msgid "invalid LDIF attribute: %s" msgstr "ogiltigt LDIF-attribut: %s" -#: plugins/sudoers/policy.c:77 plugins/sudoers/policy.c:102 +#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102 #, c-format msgid "invalid %.*s set by sudo front-end" msgstr "ogiltigt %.*s inställt av sudo-framände" -#: plugins/sudoers/policy.c:281 plugins/sudoers/testsudoers.c:272 +#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272 msgid "unable to parse network address list" msgstr "kan inte tolka nätverksadresslista" -#: plugins/sudoers/policy.c:426 +#: plugins/sudoers/policy.c:455 msgid "user name not set by sudo front-end" msgstr "användarnamn inte inställt av sudo-framände" -#: plugins/sudoers/policy.c:430 +#: plugins/sudoers/policy.c:459 msgid "user-ID not set by sudo front-end" msgstr "användar-ID inte inställt av sudo-framände" -#: plugins/sudoers/policy.c:434 +#: plugins/sudoers/policy.c:463 msgid "group-ID not set by sudo front-end" msgstr "grupp-ID inte inställt av sudo-framände" -#: plugins/sudoers/policy.c:438 +#: plugins/sudoers/policy.c:467 msgid "host name not set by sudo front-end" msgstr "värdnamn inte inställt av sudo-framände" -#: plugins/sudoers/policy.c:896 plugins/sudoers/visudo.c:230 -#: plugins/sudoers/visudo.c:861 +#: plugins/sudoers/policy.c:643 +#, c-format +msgid "invalid working directory: %s" +msgstr "ogiltig arbetskatalog: %s" + +#: plugins/sudoers/policy.c:811 +#, c-format +msgid "invalid chroot directory: %s" +msgstr "ogiltig chroot-katalog: %s" + +#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231 +#: plugins/sudoers/visudo.c:860 #, c-format msgid "unable to execute %s" msgstr "kan inte köra %s" -#: plugins/sudoers/policy.c:1060 +#: plugins/sudoers/policy.c:1111 #, c-format msgid "Sudoers policy plugin version %s\n" msgstr "Sudoers policyinsticksmodul version %s\n" -#: plugins/sudoers/policy.c:1062 +#: plugins/sudoers/policy.c:1113 #, c-format msgid "Sudoers file grammar version %d\n" msgstr "Sudoers-filgrammatik version %d\n" -#: plugins/sudoers/policy.c:1066 +#: plugins/sudoers/policy.c:1117 #, c-format msgid "" "\n" @@ -2318,86 +2380,86 @@ "\n" "Sökväg till sudoers: %s\n" -#: plugins/sudoers/policy.c:1069 +#: plugins/sudoers/policy.c:1120 #, c-format msgid "nsswitch path: %s\n" msgstr "Sökväg till nsswitch: %s\n" -#: plugins/sudoers/policy.c:1071 +#: plugins/sudoers/policy.c:1122 #, c-format msgid "ldap.conf path: %s\n" msgstr "Sökväg till ldap.conf: %s\n" -#: plugins/sudoers/policy.c:1072 +#: plugins/sudoers/policy.c:1123 #, c-format msgid "ldap.secret path: %s\n" msgstr "Sökväg till ldap.secret: %s\n" -#: plugins/sudoers/policy.c:1105 +#: plugins/sudoers/policy.c:1156 #, c-format msgid "unable to register hook of type %d (version %d.%d)" msgstr "kan inte registrera krok av typ %d (version %d.%d)" -#: plugins/sudoers/pwutil.c:214 plugins/sudoers/pwutil.c:232 +#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235 #, c-format msgid "unable to cache uid %u" msgstr "kan inte cacha uid %u" -#: plugins/sudoers/pwutil.c:226 +#: plugins/sudoers/pwutil.c:229 #, c-format msgid "unable to cache uid %u, already exists" msgstr "kan inte cacha uid %u, finns redan" -#: plugins/sudoers/pwutil.c:286 plugins/sudoers/pwutil.c:304 -#: plugins/sudoers/pwutil.c:367 plugins/sudoers/pwutil.c:412 +#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307 +#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415 #, c-format msgid "unable to cache user %s" msgstr "kan inte cacha användare %s" -#: plugins/sudoers/pwutil.c:299 +#: plugins/sudoers/pwutil.c:302 #, c-format msgid "unable to cache user %s, already exists" msgstr "kan inte cacha användare %s, finns redan" -#: plugins/sudoers/pwutil.c:531 plugins/sudoers/pwutil.c:549 +#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552 #, c-format msgid "unable to cache gid %u" msgstr "kan inte cacha gid %u" -#: plugins/sudoers/pwutil.c:543 +#: plugins/sudoers/pwutil.c:546 #, c-format msgid "unable to cache gid %u, already exists" msgstr "kan inte cacha gid %u, finns redan" -#: plugins/sudoers/pwutil.c:596 plugins/sudoers/pwutil.c:614 -#: plugins/sudoers/pwutil.c:662 plugins/sudoers/pwutil.c:704 +#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617 +#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707 #, c-format msgid "unable to cache group %s" msgstr "kan inte cacha grupp %s" -#: plugins/sudoers/pwutil.c:609 +#: plugins/sudoers/pwutil.c:612 #, c-format msgid "unable to cache group %s, already exists" msgstr "kan inte cacha grupp %s, finns redan" -#: plugins/sudoers/pwutil.c:831 plugins/sudoers/pwutil.c:883 -#: plugins/sudoers/pwutil.c:933 plugins/sudoers/pwutil.c:986 +#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885 +#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987 #, c-format msgid "unable to cache group list for %s, already exists" msgstr "kan inte cacha grupplista för %s, finns redan" -#: plugins/sudoers/pwutil.c:837 plugins/sudoers/pwutil.c:888 -#: plugins/sudoers/pwutil.c:939 plugins/sudoers/pwutil.c:991 +#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890 +#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992 #, c-format msgid "unable to cache group list for %s" msgstr "kan inte cacha grupplista för %s" -#: plugins/sudoers/pwutil.c:877 +#: plugins/sudoers/pwutil.c:879 #, c-format msgid "unable to parse groups for %s" msgstr "kan inte tolka grupper för %s" -#: plugins/sudoers/pwutil.c:980 +#: plugins/sudoers/pwutil.c:981 #, c-format msgid "unable to parse gids for %s" msgstr "kan inte tolka gids för %s" @@ -2461,239 +2523,259 @@ msgid "truncated audit path argv[0]: %s" msgstr "trunkerad granskningssökväg argv[0]: %s" -#: plugins/sudoers/sssd.c:573 +#: plugins/sudoers/sssd.c:572 msgid "unable to initialize SSS source. Is SSSD installed on your machine?" msgstr "kan inte initiera SSS-källa. Är SSSD installerat på din maskin?" -#: plugins/sudoers/sssd.c:581 plugins/sudoers/sssd.c:590 -#: plugins/sudoers/sssd.c:599 plugins/sudoers/sssd.c:608 -#: plugins/sudoers/sssd.c:617 +#: plugins/sudoers/sssd.c:580 plugins/sudoers/sssd.c:589 +#: plugins/sudoers/sssd.c:598 plugins/sudoers/sssd.c:607 +#: plugins/sudoers/sssd.c:616 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "kan inte hitta symbol ”%s” i %s" -#: plugins/sudoers/sudoers.c:217 plugins/sudoers/sudoers.c:943 +#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010 msgid "problem with defaults entries" msgstr "problem med standardposter" -#: plugins/sudoers/sudoers.c:221 +#: plugins/sudoers/sudoers.c:218 msgid "no valid sudoers sources found, quitting" msgstr "inga giltiga sudoers-källor hittades, avslutar" -#: plugins/sudoers/sudoers.c:297 +#: plugins/sudoers/sudoers.c:292 +#, c-format +msgid "user not allowed to change root directory to %s" +msgstr "användare inte tillåten att ändra rotkatalog till %s" + +#: plugins/sudoers/sudoers.c:294 +#, c-format +msgid "you are not permitted to use the -R option with %s" +msgstr "du tillåts inte att använda flaggan -R med %s" + +#: plugins/sudoers/sudoers.c:319 +#, c-format +msgid "user not allowed to change directory to %s" +msgstr "användare inte tillåten att ändra katalog till %s" + +#: plugins/sudoers/sudoers.c:320 +#, c-format +msgid "you are not permitted to use the -D option with %s" +msgstr "du tillåts inte att använda flaggan -D med %s" + +#: plugins/sudoers/sudoers.c:351 msgid "sudoers specifies that root is not allowed to sudo" msgstr "sudoers anger att root inte tillåts att använda sudo" -#: plugins/sudoers/sudoers.c:357 +#: plugins/sudoers/sudoers.c:411 msgid "user not allowed to override closefrom limit" msgstr "användare inte tillåten att åsidosätta closefrom-begränsning" -#: plugins/sudoers/sudoers.c:358 +#: plugins/sudoers/sudoers.c:412 msgid "you are not permitted to use the -C option" msgstr "du tillåts inte att använda flaggan -C" -#: plugins/sudoers/sudoers.c:420 +#: plugins/sudoers/sudoers.c:472 #, c-format msgid "timestamp owner (%s): No such user" msgstr "tidsstämpelägare (%s): Det finns ingen sådan användare" -#: plugins/sudoers/sudoers.c:435 +#: plugins/sudoers/sudoers.c:487 msgid "no tty" msgstr "ingen tty" -#: plugins/sudoers/sudoers.c:436 +#: plugins/sudoers/sudoers.c:488 msgid "sorry, you must have a tty to run sudo" msgstr "tyvärr, du måste ha en tty för att köra sudo" -#: plugins/sudoers/sudoers.c:442 plugins/sudoers/sudoers.c:444 +#: plugins/sudoers/sudoers.c:495 #, c-format msgid "invalid shell for user %s: %s" msgstr "ogiltigt skal för användare %s: %s" -#: plugins/sudoers/sudoers.c:507 +#: plugins/sudoers/sudoers.c:578 msgid "command in current directory" msgstr "kommando i aktuell katalog" -#: plugins/sudoers/sudoers.c:525 +#: plugins/sudoers/sudoers.c:597 msgid "user not allowed to set a command timeout" msgstr "användare inte tillåten att ställa in en tidsgräns för kommandon" -#: plugins/sudoers/sudoers.c:526 +#: plugins/sudoers/sudoers.c:599 msgid "sorry, you are not allowed set a command timeout" msgstr "tyvärr, du tillåts inte att ställa in en tidsgräns för kommandon" -#: plugins/sudoers/sudoers.c:534 -msgid "user not allowed to set a preserve the environment" -msgstr "användare inte tillåten att ställa in att behålla miljön" +#: plugins/sudoers/sudoers.c:607 +msgid "user not allowed to preserve the environment" +msgstr "användare inte tillåten att behålla miljön" -#: plugins/sudoers/sudoers.c:535 +#: plugins/sudoers/sudoers.c:609 msgid "sorry, you are not allowed to preserve the environment" msgstr "tyvärr, du tillåts inte att behålla miljövariabler" -#: plugins/sudoers/sudoers.c:878 +#: plugins/sudoers/sudoers.c:945 msgid "command too long" msgstr "kommandot för långt" -#: plugins/sudoers/sudoers.c:936 +#: plugins/sudoers/sudoers.c:1003 msgid "sudoedit doesn't need to be run via sudo" msgstr "sudoedit behöver inte köras via sudo" -#: plugins/sudoers/sudoers.c:990 plugins/sudoers/sudoreplay.c:1548 +#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547 #: plugins/sudoers/tsdump.c:138 #, c-format msgid "unable to read %s" msgstr "kan inte läsa %s" -#: plugins/sudoers/sudoers.c:1015 plugins/sudoers/visudo.c:431 -#: plugins/sudoers/visudo.c:727 +#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432 +#: plugins/sudoers/visudo.c:726 #, c-format msgid "unable to stat %s" msgstr "kan inte ta status på %s" -#: plugins/sudoers/sudoers.c:1019 plugins/sudoers/visudo.c:1037 +#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018 #, c-format msgid "%s is not a regular file" msgstr "%s är inte en vanlig fil" -#: plugins/sudoers/sudoers.c:1023 plugins/sudoers/timestamp.c:252 toke.l:1060 +#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "%s ägs av uid %u, ska vara %u" -#: plugins/sudoers/sudoers.c:1027 toke.l:1065 +#: plugins/sudoers/sudoers.c:1094 toke.l:1117 #, c-format msgid "%s is world writable" msgstr "%s är skrivbar för alla" -#: plugins/sudoers/sudoers.c:1031 toke.l:1068 +#: plugins/sudoers/sudoers.c:1098 toke.l:1120 #, c-format msgid "%s is owned by gid %u, should be %u" msgstr "%s ägs av gid %u, ska vara %u" -#: plugins/sudoers/sudoers.c:1064 +#: plugins/sudoers/sudoers.c:1131 #, c-format msgid "only root can use \"-c %s\"" msgstr "endast root kan använda ”-c %s”" -#: plugins/sudoers/sudoers.c:1083 +#: plugins/sudoers/sudoers.c:1150 #, c-format msgid "unknown login class: %s" msgstr "okänd inloggningsklass: %s" -#: plugins/sudoers/sudoers.c:1168 plugins/sudoers/sudoers.c:1183 +#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250 #, c-format msgid "unable to resolve host %s" msgstr "kan inte slå upp värddatorn %s" -#: plugins/sudoers/sudoreplay.c:258 +#: plugins/sudoers/sudoreplay.c:257 #, c-format msgid "invalid filter option: %s" msgstr "ogiltig filterflagga: %s" -#: plugins/sudoers/sudoreplay.c:274 +#: plugins/sudoers/sudoreplay.c:273 #, c-format msgid "invalid max wait: %s" msgstr "ogiltig största väntan: %s" -#: plugins/sudoers/sudoreplay.c:297 +#: plugins/sudoers/sudoreplay.c:296 #, c-format msgid "invalid speed factor: %s" msgstr "ogiltig hastighetsfaktor: %s" -#: plugins/sudoers/sudoreplay.c:333 +#: plugins/sudoers/sudoreplay.c:332 #, c-format msgid "%s/%.2s/%.2s/%.2s: %s" msgstr "%s/%.2s/%.2s/%.2s: %s" -#: plugins/sudoers/sudoreplay.c:338 +#: plugins/sudoers/sudoreplay.c:337 #, c-format msgid "%s/timing: %s" msgstr "%s/tidsmätning: %s" -#: plugins/sudoers/sudoreplay.c:342 +#: plugins/sudoers/sudoreplay.c:341 #, c-format msgid "%s/%s: %s" msgstr "%s/%s: %s" -#: plugins/sudoers/sudoreplay.c:366 +#: plugins/sudoers/sudoreplay.c:365 #, c-format msgid "Replaying sudo session: %s" msgstr "Spelar upp sudo-session: %s" -#: plugins/sudoers/sudoreplay.c:628 +#: plugins/sudoers/sudoreplay.c:627 msgid "unable to set tty to raw mode" msgstr "kan inte ställa in tty i råläge" -#: plugins/sudoers/sudoreplay.c:679 +#: plugins/sudoers/sudoreplay.c:678 msgid "Warning: your terminal is too small to properly replay the log.\n" msgstr "Varning: din terminal är för liten för att korrekt spela upp loggen.\n" -#: plugins/sudoers/sudoreplay.c:680 +#: plugins/sudoers/sudoreplay.c:679 #, c-format msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d." msgstr "Logg-geometri är %d x %d, din terminals geometri är %d x %d." -#: plugins/sudoers/sudoreplay.c:708 +#: plugins/sudoers/sudoreplay.c:707 msgid "Replay finished, press any key to restore the terminal." msgstr "Uppspelning avslutad, tryck på en tangent för att återställa terminalen." -#: plugins/sudoers/sudoreplay.c:1198 plugins/sudoers/sudoreplay.c:1228 +#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227 #, c-format msgid "ambiguous expression \"%s\"" msgstr "tvetydigt uttryck ”%s”" -#: plugins/sudoers/sudoreplay.c:1250 +#: plugins/sudoers/sudoreplay.c:1249 msgid "unmatched ')' in expression" msgstr "omatchat ”)” i uttryck" -#: plugins/sudoers/sudoreplay.c:1254 +#: plugins/sudoers/sudoreplay.c:1253 #, c-format msgid "unknown search term \"%s\"" msgstr "okänt sökvillkor ”%s”" -#: plugins/sudoers/sudoreplay.c:1269 +#: plugins/sudoers/sudoreplay.c:1268 #, c-format msgid "%s requires an argument" msgstr "%s kräver ett argument" -#: plugins/sudoers/sudoreplay.c:1272 plugins/sudoers/sudoreplay.c:1524 +#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523 #, c-format msgid "invalid regular expression: %s" msgstr "ogiltigt reguljärt uttryck: %s" -#: plugins/sudoers/sudoreplay.c:1277 +#: plugins/sudoers/sudoreplay.c:1276 #, c-format msgid "could not parse date \"%s\"" msgstr "kunde inte tolka datumet ”%s”" -#: plugins/sudoers/sudoreplay.c:1286 +#: plugins/sudoers/sudoreplay.c:1285 msgid "unmatched '(' in expression" msgstr "omatchat ”(” i uttryck" -#: plugins/sudoers/sudoreplay.c:1288 +#: plugins/sudoers/sudoreplay.c:1287 msgid "illegal trailing \"or\"" msgstr "ogiltigt avslutande ”or”" -#: plugins/sudoers/sudoreplay.c:1290 +#: plugins/sudoers/sudoreplay.c:1289 msgid "illegal trailing \"!\"" msgstr "ogiltigt efterföljande ”!”" -#: plugins/sudoers/sudoreplay.c:1348 +#: plugins/sudoers/sudoreplay.c:1347 #, c-format msgid "unknown search type %d" msgstr "okänd söktyp %d" -#: plugins/sudoers/sudoreplay.c:1615 +#: plugins/sudoers/sudoreplay.c:1614 #, c-format msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n" msgstr "användning: %s [-hnRS] [-d kat] [-m num] [-s num] ID\n" -#: plugins/sudoers/sudoreplay.c:1618 +#: plugins/sudoers/sudoreplay.c:1617 #, c-format msgid "usage: %s [-h] [-d dir] -l [search expression]\n" msgstr "användning: %s [-h] [-d kat] -l [sökuttryck]\n" -#: plugins/sudoers/sudoreplay.c:1627 +#: plugins/sudoers/sudoreplay.c:1626 #, c-format msgid "" "%s - replay sudo session logs\n" @@ -2702,7 +2784,7 @@ "%s - spela upp loggar från sudo-session\n" "\n" -#: plugins/sudoers/sudoreplay.c:1629 +#: plugins/sudoers/sudoreplay.c:1628 msgid "" "\n" "Options:\n" @@ -2730,11 +2812,11 @@ " -s, --speed=num påskynda eller fördröj utmatning\n" " -V, --version visa versionsinformation och avsluta" -#: plugins/sudoers/testsudoers.c:354 +#: plugins/sudoers/testsudoers.c:348 msgid "\thost unmatched" msgstr "\tvärd omatchad" -#: plugins/sudoers/testsudoers.c:357 +#: plugins/sudoers/testsudoers.c:351 msgid "" "\n" "Command allowed" @@ -2742,7 +2824,7 @@ "\n" "Kommandot tillåts" -#: plugins/sudoers/testsudoers.c:358 +#: plugins/sudoers/testsudoers.c:352 msgid "" "\n" "Command denied" @@ -2750,7 +2832,7 @@ "\n" "Kommandot nekades" -#: plugins/sudoers/testsudoers.c:358 +#: plugins/sudoers/testsudoers.c:352 msgid "" "\n" "Command unmatched" @@ -2795,90 +2877,90 @@ msgid "the -x option will be removed in a future release" msgstr "flaggan -x kommer att tas bort i en framtida version" -#: plugins/sudoers/visudo.c:227 +#: plugins/sudoers/visudo.c:228 msgid "please consider using the cvtsudoers utility instead" msgstr "överväg att använda verktyget cvtsudoers istället" -#: plugins/sudoers/visudo.c:278 plugins/sudoers/visudo.c:660 +#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659 #, c-format msgid "press return to edit %s: " msgstr "tryck på retur för att redigera %s: " -#: plugins/sudoers/visudo.c:339 +#: plugins/sudoers/visudo.c:340 #, c-format msgid "specified editor (%s) doesn't exist" msgstr "angiven redigerare (%s) finns inte" -#: plugins/sudoers/visudo.c:341 +#: plugins/sudoers/visudo.c:342 #, c-format msgid "no editor found (editor path = %s)" msgstr "ingen textredigerare hittad (sökväg för textredigerare = %s)" -#: plugins/sudoers/visudo.c:451 plugins/sudoers/visudo.c:459 +#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460 msgid "write error" msgstr "skrivfel" -#: plugins/sudoers/visudo.c:505 +#: plugins/sudoers/visudo.c:506 #, c-format msgid "unable to stat temporary file (%s), %s unchanged" msgstr "kan inte hämta filinformation för temporärfil (%s), %s oförändrad" # sebras: not an exact translation, but I think it captures the meaning of the original text. -#: plugins/sudoers/visudo.c:512 +#: plugins/sudoers/visudo.c:513 #, c-format msgid "zero length temporary file (%s), %s unchanged" msgstr "temporärfil tom (%s), %s oförändrad" -#: plugins/sudoers/visudo.c:518 +#: plugins/sudoers/visudo.c:519 #, c-format msgid "editor (%s) failed, %s unchanged" msgstr "redigeraren (%s) misslyckades, %s är oförändrad" -#: plugins/sudoers/visudo.c:540 +#: plugins/sudoers/visudo.c:541 #, c-format msgid "%s unchanged" msgstr "%s oförändrad" -#: plugins/sudoers/visudo.c:599 +#: plugins/sudoers/visudo.c:598 #, c-format msgid "unable to re-open temporary file (%s), %s unchanged." msgstr "kan inte återöppna temporärfil (%s), %s är oförändrad." -#: plugins/sudoers/visudo.c:611 +#: plugins/sudoers/visudo.c:610 #, c-format msgid "unable to parse temporary file (%s), unknown error" msgstr "kan inte tolka temporärfil (%s), okänt fel" -#: plugins/sudoers/visudo.c:649 +#: plugins/sudoers/visudo.c:648 #, c-format msgid "internal error, unable to find %s in list!" msgstr "internt fel, kan inte hitta %s i listan!" -#: plugins/sudoers/visudo.c:729 plugins/sudoers/visudo.c:738 +#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737 #, c-format msgid "unable to set (uid, gid) of %s to (%u, %u)" msgstr "kan inte ställa in (uid, gid) för %s till (%u, %u)" -#: plugins/sudoers/visudo.c:761 +#: plugins/sudoers/visudo.c:760 #, c-format msgid "%s and %s not on the same file system, using mv to rename" msgstr "%s och %s finns inte på samma filsystem, använder mv för att byta namn" -#: plugins/sudoers/visudo.c:775 +#: plugins/sudoers/visudo.c:774 #, c-format msgid "command failed: '%s %s %s', %s unchanged" msgstr "kommandot misslyckades: ”%s %s %s”, %s är oförändrad" -#: plugins/sudoers/visudo.c:785 +#: plugins/sudoers/visudo.c:784 #, c-format msgid "error renaming %s, %s unchanged" msgstr "fel vid namnbyte för %s, %s är oförändrad" -#: plugins/sudoers/visudo.c:806 +#: plugins/sudoers/visudo.c:805 msgid "What now? " msgstr "Nu då? " -#: plugins/sudoers/visudo.c:820 +#: plugins/sudoers/visudo.c:819 msgid "" "Options are:\n" " (e)dit sudoers file again\n" @@ -2890,66 +2972,66 @@ " avsluta (x) utan att spara ändringar i sudoers-filen\n" " Avsluta (Q) och spara ändringar i sudoers-filen (FARLIGT!)\n" -#: plugins/sudoers/visudo.c:866 +#: plugins/sudoers/visudo.c:865 #, c-format msgid "unable to run %s" msgstr "kan inte köra %s" -#: plugins/sudoers/visudo.c:896 +#: plugins/sudoers/visudo.c:895 #, c-format msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n" msgstr "%s: felaktig ägare (uid, gid) ska vara (%u, %u)\n" -#: plugins/sudoers/visudo.c:903 +#: plugins/sudoers/visudo.c:902 #, c-format msgid "%s: bad permissions, should be mode 0%o\n" msgstr "%s: felaktiga rättigheter, bör vara läge 0%o\n" -#: plugins/sudoers/visudo.c:960 plugins/sudoers/visudo.c:967 +#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958 #, c-format msgid "%s: parsed OK\n" msgstr "%s: tolkad OK\n" -#: plugins/sudoers/visudo.c:986 +#: plugins/sudoers/visudo.c:977 #, c-format msgid "%s busy, try again later" msgstr "%s är upptagen, försök igen senare" -#: plugins/sudoers/visudo.c:989 +#: plugins/sudoers/visudo.c:980 #, c-format msgid "unable to lock %s" msgstr "kan inte låsa %s" -#: plugins/sudoers/visudo.c:990 +#: plugins/sudoers/visudo.c:981 msgid "Edit anyway? [y/N]" msgstr "Redigera ändå? [y/N]" -#: plugins/sudoers/visudo.c:1083 +#: plugins/sudoers/visudo.c:1091 #, c-format -msgid "Error: %s:%d cycle in %s \"%s\"" -msgstr "Fel: %s:%d cykel i %s ”%s”" +msgid "Error: %s:%d:%d: cycle in %s \"%s\"" +msgstr "Fel: %s:%d:%d: cykel i %s ”%s”" -#: plugins/sudoers/visudo.c:1084 +#: plugins/sudoers/visudo.c:1092 #, c-format -msgid "Warning: %s:%d cycle in %s \"%s\"" -msgstr "Varning: %s:%d cykel i %s ”%s”" +msgid "Warning: %s:%d:%d: cycle in %s \"%s\"" +msgstr "Varning: %s:%d:%d: cykel i %s ”%s”" -#: plugins/sudoers/visudo.c:1088 +#: plugins/sudoers/visudo.c:1096 #, c-format -msgid "Error: %s:%d %s \"%s\" referenced but not defined" -msgstr "Fel: %s:%d %s ”%s” refererad till men inte definierad" +msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined" +msgstr "Fel: %s:%d:%d: %s ”%s” refererad till men inte definierad" -#: plugins/sudoers/visudo.c:1089 +#: plugins/sudoers/visudo.c:1097 #, c-format -msgid "Warning: %s:%d %s \"%s\" referenced but not defined" -msgstr "Varning: %s:%d %s ”%s” refererad till men inte definierad" +msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined" +msgstr "Varning: %s:%d:%d: %s ”%s” refererad till men inte definierad" -#: plugins/sudoers/visudo.c:1180 +#: plugins/sudoers/visudo.c:1188 #, c-format -msgid "Warning: %s:%d unused %s \"%s\"" -msgstr "Varning: %s:%d oanvänd %s ”%s”" +msgid "Warning: %s:%d:%d: unused %s \"%s\"" +msgstr "Varning: %s:%d:%d: oanvänd %s ”%s”" -#: plugins/sudoers/visudo.c:1295 +#: plugins/sudoers/visudo.c:1303 #, c-format msgid "" "%s - safely edit the sudoers file\n" @@ -2958,7 +3040,7 @@ "%s - redigera sudoers-filen på ett säkert sätt\n" "\n" -#: plugins/sudoers/visudo.c:1297 +#: plugins/sudoers/visudo.c:1305 msgid "" "\n" "Options:\n" @@ -2978,10 +3060,43 @@ " -s, --strict strikt syntaxkontroll\n" " -V, --version visa versionsinformation och avsluta\n" -#: toke.l:1032 +#: toke.l:179 +msgid "empty string" +msgstr "tom sträng" + +#: toke.l:189 toke.l:491 +msgid "empty group" +msgstr "tom grupp" + +#: toke.l:197 toke.l:489 +msgid "empty netgroup" +msgstr "tom nätgrupp" + +#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392 +msgid "invalid line continuation" +msgstr "ogiltig radfortsättning" + +#: toke.l:528 toke.l:540 +msgid "invalid IPv6 address" +msgstr "ogiltig IPv6-adress" + +#: toke.l:764 +msgid "unexpected line break in string" +msgstr "oväntad radbrytning i sträng" + +#: toke.l:1084 msgid "too many levels of includes" msgstr "för många nivåer av inkluderingar" +#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library" +#~ msgstr "Förinläs attrapp-exec-funktioner som finns i biblioteket sudo_noexec" + +#~ msgid "sudo_ldap_conf_add_ports: port too large" +#~ msgstr "sudo_ldap_conf_add_ports: port är för stor" + +#~ msgid "unable to lock log file: %s" +#~ msgstr "kan inte låsa loggfil: %s" + #~ msgid "SSL_connect failed: ssl_error=%d, stack=%s\n" #~ msgstr "SSL_connect misslyckades: ssl_error=%d, stack=%s\n" diff -Nru sudo-1.9.4p2/plugins/sudoers/policy.c sudo-1.9.5p2/plugins/sudoers/policy.c --- sudo-1.9.4p2/plugins/sudoers/policy.c 2020-12-16 19:34:30.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/policy.c 2021-01-23 09:45:11.000000000 -0600 @@ -88,10 +88,11 @@ int sudoers_policy_deserialize_info(void *v) { + const int edit_mask = MODE_EDIT|MODE_IGNORE_TICKET|MODE_NONINTERACTIVE; struct sudoers_open_info *info = v; - char * const *cur; const char *p, *errstr, *groups = NULL; const char *remhost = NULL; + char * const *cur; int flags = 0; debug_decl(sudoers_policy_deserialize_info, SUDOERS_DEBUG_PLUGIN); @@ -348,6 +349,12 @@ #endif } + /* Sudo front-end should restrict mode flags for sudoedit. */ + if (ISSET(flags, MODE_EDIT) && (flags & edit_mask) != flags) { + sudo_warnx(U_("invalid mode flags from sudo front end: 0x%x"), flags); + goto bad; + } + user_gid = (gid_t)-1; user_sid = (pid_t)-1; user_uid = (gid_t)-1; @@ -839,11 +846,11 @@ } #endif /* HAVE_LOGIN_CAP_H */ #ifdef HAVE_SELINUX - if (user_role != NULL) { + if (def_selinux && user_role != NULL) { if ((command_info[info_len++] = sudo_new_key_val("selinux_role", user_role)) == NULL) goto oom; } - if (user_type != NULL) { + if (def_selinux && user_type != NULL) { if ((command_info[info_len++] = sudo_new_key_val("selinux_type", user_type)) == NULL) goto oom; } diff -Nru sudo-1.9.4p2/plugins/sudoers/rcstr.c sudo-1.9.5p2/plugins/sudoers/rcstr.c --- sudo-1.9.4p2/plugins/sudoers/rcstr.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/rcstr.c 2021-01-09 14:12:16.000000000 -0600 @@ -66,7 +66,7 @@ rcs->refcnt = 1; rcs->str[0] = '\0'; /* cppcheck-suppress memleak */ - debug_return_ptr(rcs->str); + debug_return_ptr(rcs->str); // -V773 } char * diff -Nru sudo-1.9.4p2/plugins/sudoers/redblack.c sudo-1.9.5p2/plugins/sudoers/redblack.c --- sudo-1.9.4p2/plugins/sudoers/redblack.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/redblack.c 2021-01-09 14:12:16.000000000 -0600 @@ -109,7 +109,7 @@ * Similarly, the fake root node keeps us from having to worry * about splitting the root. */ - tree->root.left = tree->root.right = tree->root.parent = &tree->nil; + tree->root.left = tree->root.right = tree->root.parent = &tree->nil; // -V778 tree->root.color = black; tree->root.data = NULL; diff -Nru sudo-1.9.4p2/plugins/sudoers/starttime.c sudo-1.9.5p2/plugins/sudoers/starttime.c --- sudo-1.9.4p2/plugins/sudoers/starttime.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/starttime.c 2021-01-09 14:12:16.000000000 -0600 @@ -98,7 +98,7 @@ mib[3] = (int)pid; mib[4] = sizeof(*ki_proc); mib[5] = 1; - do { + for (;;) { struct sudo_kinfo_proc *kp; size += size / 10; @@ -108,7 +108,9 @@ } ki_proc = kp; rc = sysctl(mib, sudo_kp_namelen, ki_proc, &size, NULL, 0); - } while (rc == -1 && errno == ENOMEM); + if (rc != -1 || errno != ENOMEM) + break; + } if (rc != -1) { #if defined(HAVE_KINFO_PROC_FREEBSD) /* FreeBSD and Dragonfly */ diff -Nru sudo-1.9.4p2/plugins/sudoers/sudoers.c sudo-1.9.5p2/plugins/sudoers/sudoers.c --- sudo-1.9.4p2/plugins/sudoers/sudoers.c 2020-12-20 09:51:07.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/sudoers.c 2021-01-23 09:45:11.000000000 -0600 @@ -296,7 +296,7 @@ free(def_runchroot); if ((def_runchroot = strdup(user_runchroot)) == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - debug_return_bool(-1); + debug_return_int(-1); } debug_return_bool(true); } @@ -547,7 +547,7 @@ /* If run as root with SUDO_USER set, set sudo_user.pw to that user. */ /* XXX - causes confusion when root is not listed in sudoers */ - if (sudo_mode & (MODE_RUN | MODE_EDIT) && prev_user != NULL) { + if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT) && prev_user != NULL) { if (user_uid == 0 && strcmp(prev_user, "root") != 0) { struct passwd *pw; @@ -932,8 +932,8 @@ if (user_cmnd == NULL) user_cmnd = NewArgv[0]; - if (sudo_mode & (MODE_RUN | MODE_EDIT | MODE_CHECK)) { - if (ISSET(sudo_mode, MODE_RUN | MODE_CHECK)) { + if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT|MODE_CHECK)) { + if (!ISSET(sudo_mode, MODE_EDIT)) { const char *runchroot = user_runchroot; if (runchroot == NULL && def_runchroot != NULL && strcmp(def_runchroot, "*") != 0) @@ -961,7 +961,8 @@ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); debug_return_int(NOT_FOUND_ERROR); } - if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL)) { + if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL) && + ISSET(sudo_mode, MODE_RUN)) { /* * When running a command via a shell, the sudo front-end * escapes potential meta chars. We unescape non-spaces @@ -969,10 +970,22 @@ */ for (to = user_args, av = NewArgv + 1; (from = *av); av++) { while (*from) { - if (from[0] == '\\' && !isspace((unsigned char)from[1])) + if (from[0] == '\\' && from[1] != '\0' && + !isspace((unsigned char)from[1])) { from++; + } + if (size - (to - user_args) < 1) { + sudo_warnx(U_("internal error, %s overflow"), + __func__); + debug_return_int(NOT_FOUND_ERROR); + } *to++ = *from++; } + if (size - (to - user_args) < 1) { + sudo_warnx(U_("internal error, %s overflow"), + __func__); + debug_return_int(NOT_FOUND_ERROR); + } *to++ = ' '; } *--to = '\0'; diff -Nru sudo-1.9.4p2/plugins/sudoers/timestamp.c sudo-1.9.5p2/plugins/sudoers/timestamp.c --- sudo-1.9.4p2/plugins/sudoers/timestamp.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/timestamp.c 2021-01-23 09:45:11.000000000 -0600 @@ -307,17 +307,7 @@ nwritten = write(fd, entry, entry->size); } else { old_eof = offset; -#ifdef HAVE_PWRITE nwritten = pwrite(fd, entry, entry->size, offset); -#else - if (lseek(fd, offset, SEEK_SET) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO|SUDO_DEBUG_LINENO, - "unable to seek to %lld", (long long)offset); - nwritten = -1; - } else { - nwritten = write(fd, entry, entry->size); - } -#endif } if ((size_t)nwritten != entry->size) { if (nwritten == -1) { @@ -577,16 +567,7 @@ } /* Seek to the record position and read it. */ -#ifdef HAVE_PREAD nread = pread(cookie->fd, entry, sizeof(*entry), cookie->pos); -#else - if (lseek(cookie->fd, cookie->pos, SEEK_SET) == -1) { - sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO|SUDO_DEBUG_LINENO, - "unable to seek to %lld", (long long)cookie->pos); - goto done; - } - nread = read(cookie->fd, entry, sizeof(*entry)); -#endif if (nread != sizeof(*entry)) { /* short read, should not happen */ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, @@ -662,8 +643,8 @@ if (entry.size == sizeof(struct timestamp_entry_v1)) { /* Old sudo record, convert it to TS_LOCKEXCL. */ entry.type = TS_LOCKEXCL; - memset((char *)&entry + offsetof(struct timestamp_entry, type), 0, - nread - offsetof(struct timestamp_entry, type)); + memset((char *)&entry + offsetof(struct timestamp_entry, flags), 0, + nread - offsetof(struct timestamp_entry, flags)); if (ts_write(cookie->fd, cookie->fname, &entry, 0) == -1) debug_return_bool(false); } else { diff -Nru sudo-1.9.4p2/plugins/sudoers/toke.c sudo-1.9.5p2/plugins/sudoers/toke.c --- sudo-1.9.4p2/plugins/sudoers/toke.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/toke.c 2021-01-09 14:12:16.000000000 -0600 @@ -2759,6 +2759,9 @@ # define NAMLEN(dirent) strlen((dirent)->d_name) #endif +// PVS Studio suppression +// -V::519, 1004, 1037 + int sudolineno; /* current sudoers line number. */ char *sudoers; /* sudoers file being parsed. */ struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */ @@ -2801,7 +2804,7 @@ -#line 2799 "toke.c" +#line 2802 "toke.c" #define INITIAL 0 #define GOTDEFS 1 @@ -3021,9 +3024,9 @@ } { -#line 114 "toke.l" +#line 117 "toke.l" -#line 3021 "toke.c" +#line 3024 "toke.c" while ( 1 ) /* loops until end-of-file is reached */ { @@ -3083,7 +3086,7 @@ case 1: YY_RULE_SETUP -#line 115 "toke.l" +#line 118 "toke.l" { LEXTRACE(", "); return ','; @@ -3091,12 +3094,12 @@ YY_BREAK case 2: YY_RULE_SETUP -#line 120 "toke.l" +#line 123 "toke.l" BEGIN STARTDEFS; YY_BREAK case 3: YY_RULE_SETUP -#line 122 "toke.l" +#line 125 "toke.l" { BEGIN INDEFS; LEXTRACE("DEFVAR "); @@ -3108,7 +3111,7 @@ case 4: YY_RULE_SETUP -#line 131 "toke.l" +#line 134 "toke.l" { BEGIN STARTDEFS; LEXTRACE(", "); @@ -3117,7 +3120,7 @@ YY_BREAK case 5: YY_RULE_SETUP -#line 137 "toke.l" +#line 140 "toke.l" { LEXTRACE("= "); return '='; @@ -3125,7 +3128,7 @@ YY_BREAK case 6: YY_RULE_SETUP -#line 142 "toke.l" +#line 145 "toke.l" { LEXTRACE("+= "); return '+'; @@ -3133,7 +3136,7 @@ YY_BREAK case 7: YY_RULE_SETUP -#line 147 "toke.l" +#line 150 "toke.l" { LEXTRACE("-= "); return '-'; @@ -3141,7 +3144,7 @@ YY_BREAK case 8: YY_RULE_SETUP -#line 152 "toke.l" +#line 155 "toke.l" { LEXTRACE("BEGINSTR "); sudoerslval.string = NULL; @@ -3151,7 +3154,7 @@ YY_BREAK case 9: YY_RULE_SETUP -#line 159 "toke.l" +#line 162 "toke.l" { LEXTRACE("WORD(2) "); if (!fill(sudoerstext, sudoersleng)) @@ -3164,7 +3167,7 @@ case 10: /* rule 10 can match eol */ YY_RULE_SETUP -#line 168 "toke.l" +#line 171 "toke.l" { /* Line continuation char followed by newline. */ sudolineno++; @@ -3173,7 +3176,7 @@ YY_BREAK case 11: YY_RULE_SETUP -#line 174 "toke.l" +#line 177 "toke.l" { LEXTRACE("ENDSTR "); BEGIN prev_state; @@ -3211,7 +3214,7 @@ YY_BREAK case 12: YY_RULE_SETUP -#line 209 "toke.l" +#line 212 "toke.l" { LEXTRACE("BACKSLASH "); if (!append(sudoerstext, sudoersleng)) @@ -3220,7 +3223,7 @@ YY_BREAK case 13: YY_RULE_SETUP -#line 215 "toke.l" +#line 218 "toke.l" { LEXTRACE("STRBODY "); if (!append(sudoerstext, sudoersleng)) @@ -3231,7 +3234,7 @@ case 14: YY_RULE_SETUP -#line 223 "toke.l" +#line 226 "toke.l" { /* quoted fnmatch glob char, pass verbatim */ LEXTRACE("QUOTEDCHAR "); @@ -3242,7 +3245,7 @@ YY_BREAK case 15: YY_RULE_SETUP -#line 231 "toke.l" +#line 234 "toke.l" { /* quoted sudoers special char, strip backslash */ LEXTRACE("QUOTEDCHAR "); @@ -3254,7 +3257,7 @@ case 16: /* rule 16 can match eol */ YY_RULE_SETUP -#line 239 "toke.l" +#line 242 "toke.l" { BEGIN INITIAL; sudoersless(0); @@ -3264,7 +3267,7 @@ YY_BREAK case 17: YY_RULE_SETUP -#line 246 "toke.l" +#line 249 "toke.l" { LEXTRACE("ARG "); if (!fill_args(sudoerstext, sudoersleng, sawspace)) @@ -3275,7 +3278,7 @@ case 18: YY_RULE_SETUP -#line 254 "toke.l" +#line 257 "toke.l" { /* Only return DIGEST if the length is correct. */ yy_size_t digest_len = @@ -3293,7 +3296,7 @@ YY_BREAK case 19: YY_RULE_SETUP -#line 269 "toke.l" +#line 272 "toke.l" { /* Only return DIGEST if the length is correct. */ yy_size_t len, digest_len = @@ -3318,7 +3321,7 @@ YY_BREAK case 20: YY_RULE_SETUP -#line 291 "toke.l" +#line 294 "toke.l" { if (continued) { sudoerserror(N_("invalid line continuation")); @@ -3333,7 +3336,7 @@ YY_BREAK case 21: YY_RULE_SETUP -#line 303 "toke.l" +#line 306 "toke.l" { if (continued) { sudoerserror(N_("invalid line continuation")); @@ -3349,7 +3352,7 @@ case 22: /* rule 22 can match eol */ YY_RULE_SETUP -#line 315 "toke.l" +#line 318 "toke.l" { if (continued) { sudoerserror(N_("invalid line continuation")); @@ -3369,7 +3372,7 @@ case 23: /* rule 23 can match eol */ YY_RULE_SETUP -#line 331 "toke.l" +#line 334 "toke.l" { if (continued) { sudoerserror(N_("invalid line continuation")); @@ -3388,7 +3391,7 @@ YY_BREAK case 24: YY_RULE_SETUP -#line 347 "toke.l" +#line 350 "toke.l" { char deftype; int n; @@ -3432,7 +3435,7 @@ YY_BREAK case 25: YY_RULE_SETUP -#line 388 "toke.l" +#line 391 "toke.l" { int n; @@ -3462,7 +3465,7 @@ YY_BREAK case 26: YY_RULE_SETUP -#line 415 "toke.l" +#line 418 "toke.l" { /* cmnd does not require passwd for this user */ LEXTRACE("NOPASSWD "); @@ -3471,7 +3474,7 @@ YY_BREAK case 27: YY_RULE_SETUP -#line 421 "toke.l" +#line 424 "toke.l" { /* cmnd requires passwd for this user */ LEXTRACE("PASSWD "); @@ -3480,7 +3483,7 @@ YY_BREAK case 28: YY_RULE_SETUP -#line 427 "toke.l" +#line 430 "toke.l" { LEXTRACE("NOEXEC "); return NOEXEC; @@ -3488,7 +3491,7 @@ YY_BREAK case 29: YY_RULE_SETUP -#line 432 "toke.l" +#line 435 "toke.l" { LEXTRACE("EXEC "); return EXEC; @@ -3496,7 +3499,7 @@ YY_BREAK case 30: YY_RULE_SETUP -#line 437 "toke.l" +#line 440 "toke.l" { LEXTRACE("SETENV "); return SETENV; @@ -3504,7 +3507,7 @@ YY_BREAK case 31: YY_RULE_SETUP -#line 442 "toke.l" +#line 445 "toke.l" { LEXTRACE("NOSETENV "); return NOSETENV; @@ -3512,7 +3515,7 @@ YY_BREAK case 32: YY_RULE_SETUP -#line 447 "toke.l" +#line 450 "toke.l" { LEXTRACE("LOG_OUTPUT "); return LOG_OUTPUT; @@ -3520,7 +3523,7 @@ YY_BREAK case 33: YY_RULE_SETUP -#line 452 "toke.l" +#line 455 "toke.l" { LEXTRACE("NOLOG_OUTPUT "); return NOLOG_OUTPUT; @@ -3528,7 +3531,7 @@ YY_BREAK case 34: YY_RULE_SETUP -#line 457 "toke.l" +#line 460 "toke.l" { LEXTRACE("LOG_INPUT "); return LOG_INPUT; @@ -3536,7 +3539,7 @@ YY_BREAK case 35: YY_RULE_SETUP -#line 462 "toke.l" +#line 465 "toke.l" { LEXTRACE("NOLOG_INPUT "); return NOLOG_INPUT; @@ -3544,7 +3547,7 @@ YY_BREAK case 36: YY_RULE_SETUP -#line 467 "toke.l" +#line 470 "toke.l" { LEXTRACE("MAIL "); return MAIL; @@ -3552,7 +3555,7 @@ YY_BREAK case 37: YY_RULE_SETUP -#line 472 "toke.l" +#line 475 "toke.l" { LEXTRACE("NOMAIL "); return NOMAIL; @@ -3560,7 +3563,7 @@ YY_BREAK case 38: YY_RULE_SETUP -#line 477 "toke.l" +#line 480 "toke.l" { LEXTRACE("FOLLOW "); return FOLLOWLNK; @@ -3568,7 +3571,7 @@ YY_BREAK case 39: YY_RULE_SETUP -#line 482 "toke.l" +#line 485 "toke.l" { LEXTRACE("NOFOLLOW "); return NOFOLLOWLNK; @@ -3576,7 +3579,7 @@ YY_BREAK case 40: YY_RULE_SETUP -#line 487 "toke.l" +#line 490 "toke.l" { if (sudoerstext[0] == '+') sudoerserror(N_("empty netgroup")); @@ -3588,7 +3591,7 @@ YY_BREAK case 41: YY_RULE_SETUP -#line 496 "toke.l" +#line 499 "toke.l" { /* netgroup */ if (!fill(sudoerstext, sudoersleng)) @@ -3599,7 +3602,7 @@ YY_BREAK case 42: YY_RULE_SETUP -#line 504 "toke.l" +#line 507 "toke.l" { /* group */ if (!fill(sudoerstext, sudoersleng)) @@ -3610,7 +3613,7 @@ YY_BREAK case 43: YY_RULE_SETUP -#line 512 "toke.l" +#line 515 "toke.l" { if (!fill(sudoerstext, sudoersleng)) yyterminate(); @@ -3620,7 +3623,7 @@ YY_BREAK case 44: YY_RULE_SETUP -#line 519 "toke.l" +#line 522 "toke.l" { if (!fill(sudoerstext, sudoersleng)) yyterminate(); @@ -3630,7 +3633,7 @@ YY_BREAK case 45: YY_RULE_SETUP -#line 526 "toke.l" +#line 529 "toke.l" { if (!ipv6_valid(sudoerstext)) { sudoerserror(N_("invalid IPv6 address")); @@ -3645,7 +3648,7 @@ YY_BREAK case 46: YY_RULE_SETUP -#line 538 "toke.l" +#line 541 "toke.l" { if (!ipv6_valid(sudoerstext)) { sudoerserror(N_("invalid IPv6 address")); @@ -3660,7 +3663,7 @@ YY_BREAK case 47: YY_RULE_SETUP -#line 550 "toke.l" +#line 553 "toke.l" { LEXTRACE("ALL "); return ALL; @@ -3669,7 +3672,7 @@ YY_BREAK case 48: YY_RULE_SETUP -#line 556 "toke.l" +#line 559 "toke.l" { LEXTRACE("CMND_TIMEOUT "); return CMND_TIMEOUT; @@ -3677,7 +3680,7 @@ YY_BREAK case 49: YY_RULE_SETUP -#line 561 "toke.l" +#line 564 "toke.l" { LEXTRACE("NOTBEFORE "); return NOTBEFORE; @@ -3685,7 +3688,7 @@ YY_BREAK case 50: YY_RULE_SETUP -#line 566 "toke.l" +#line 569 "toke.l" { LEXTRACE("NOTAFTER "); return NOTAFTER; @@ -3693,7 +3696,7 @@ YY_BREAK case 51: YY_RULE_SETUP -#line 571 "toke.l" +#line 574 "toke.l" { LEXTRACE("CWD "); prev_state = YY_START; @@ -3703,7 +3706,7 @@ YY_BREAK case 52: YY_RULE_SETUP -#line 578 "toke.l" +#line 581 "toke.l" { LEXTRACE("CHROOT "); prev_state = YY_START; @@ -3713,7 +3716,7 @@ YY_BREAK case 53: YY_RULE_SETUP -#line 585 "toke.l" +#line 588 "toke.l" { #ifdef HAVE_SELINUX LEXTRACE("ROLE "); @@ -3725,7 +3728,7 @@ YY_BREAK case 54: YY_RULE_SETUP -#line 594 "toke.l" +#line 597 "toke.l" { #ifdef HAVE_SELINUX LEXTRACE("TYPE "); @@ -3737,7 +3740,7 @@ YY_BREAK case 55: YY_RULE_SETUP -#line 602 "toke.l" +#line 605 "toke.l" { #ifdef HAVE_PRIV_SET LEXTRACE("PRIVS "); @@ -3749,7 +3752,7 @@ YY_BREAK case 56: YY_RULE_SETUP -#line 611 "toke.l" +#line 614 "toke.l" { #ifdef HAVE_PRIV_SET LEXTRACE("LIMITPRIVS "); @@ -3761,7 +3764,7 @@ YY_BREAK case 57: YY_RULE_SETUP -#line 620 "toke.l" +#line 623 "toke.l" { got_alias: if (!fill(sudoerstext, sudoersleng)) @@ -3772,7 +3775,7 @@ YY_BREAK case 58: YY_RULE_SETUP -#line 628 "toke.l" +#line 631 "toke.l" { /* XXX - no way to specify digest for command */ /* no command args allowed for Defaults!/path */ @@ -3784,7 +3787,7 @@ YY_BREAK case 59: YY_RULE_SETUP -#line 637 "toke.l" +#line 640 "toke.l" { digest_type = SUDO_DIGEST_SHA224; BEGIN WANTDIGEST; @@ -3794,7 +3797,7 @@ YY_BREAK case 60: YY_RULE_SETUP -#line 644 "toke.l" +#line 647 "toke.l" { digest_type = SUDO_DIGEST_SHA256; BEGIN WANTDIGEST; @@ -3804,7 +3807,7 @@ YY_BREAK case 61: YY_RULE_SETUP -#line 651 "toke.l" +#line 654 "toke.l" { digest_type = SUDO_DIGEST_SHA384; BEGIN WANTDIGEST; @@ -3814,7 +3817,7 @@ YY_BREAK case 62: YY_RULE_SETUP -#line 658 "toke.l" +#line 661 "toke.l" { digest_type = SUDO_DIGEST_SHA512; BEGIN WANTDIGEST; @@ -3824,7 +3827,7 @@ YY_BREAK case 63: YY_RULE_SETUP -#line 665 "toke.l" +#line 668 "toke.l" { BEGIN GOTCMND; LEXTRACE("COMMAND "); @@ -3834,7 +3837,7 @@ YY_BREAK case 64: YY_RULE_SETUP -#line 672 "toke.l" +#line 675 "toke.l" { BEGIN prev_state; if (!fill(sudoerstext, sudoersleng)) @@ -3845,7 +3848,7 @@ YY_BREAK case 65: YY_RULE_SETUP -#line 680 "toke.l" +#line 683 "toke.l" { /* directories can't have args... */ if (sudoerstext[sudoersleng - 1] == '/') { @@ -3862,7 +3865,7 @@ YY_BREAK case 66: YY_RULE_SETUP -#line 694 "toke.l" +#line 697 "toke.l" { LEXTRACE("BEGINSTR "); sudoerslval.string = NULL; @@ -3872,7 +3875,7 @@ YY_BREAK case 67: YY_RULE_SETUP -#line 701 "toke.l" +#line 704 "toke.l" { /* a word */ if (!fill(sudoerstext, sudoersleng)) @@ -3884,7 +3887,7 @@ case 68: YY_RULE_SETUP -#line 710 "toke.l" +#line 713 "toke.l" { /* include file/directory */ if (!fill(sudoerstext, sudoersleng)) @@ -3896,7 +3899,7 @@ YY_BREAK case 69: YY_RULE_SETUP -#line 719 "toke.l" +#line 722 "toke.l" { LEXTRACE("BEGINSTR "); sudoerslval.string = NULL; @@ -3907,7 +3910,7 @@ case 70: YY_RULE_SETUP -#line 727 "toke.l" +#line 730 "toke.l" { LEXTRACE("( "); return '('; @@ -3915,7 +3918,7 @@ YY_BREAK case 71: YY_RULE_SETUP -#line 732 "toke.l" +#line 735 "toke.l" { LEXTRACE(") "); return ')'; @@ -3923,7 +3926,7 @@ YY_BREAK case 72: YY_RULE_SETUP -#line 737 "toke.l" +#line 740 "toke.l" { LEXTRACE(", "); return ','; @@ -3931,7 +3934,7 @@ YY_BREAK case 73: YY_RULE_SETUP -#line 742 "toke.l" +#line 745 "toke.l" { LEXTRACE("= "); return '='; @@ -3939,7 +3942,7 @@ YY_BREAK case 74: YY_RULE_SETUP -#line 747 "toke.l" +#line 750 "toke.l" { LEXTRACE(": "); return ':'; @@ -3947,7 +3950,7 @@ YY_BREAK case 75: YY_RULE_SETUP -#line 752 "toke.l" +#line 755 "toke.l" { if (sudoersleng & 1) { LEXTRACE("!"); @@ -3958,7 +3961,7 @@ case 76: /* rule 76 can match eol */ YY_RULE_SETUP -#line 759 "toke.l" +#line 762 "toke.l" { if (YY_START == INSTR) { /* re-scan after changing state */ @@ -3977,7 +3980,7 @@ YY_BREAK case 77: YY_RULE_SETUP -#line 775 "toke.l" +#line 778 "toke.l" { /* throw away space/tabs */ sawspace = true; /* but remember for fill_args */ } @@ -3985,7 +3988,7 @@ case 78: /* rule 78 can match eol */ YY_RULE_SETUP -#line 779 "toke.l" +#line 782 "toke.l" { sawspace = true; /* remember for fill_args */ sudolineno++; @@ -3995,7 +3998,7 @@ case 79: /* rule 79 can match eol */ YY_RULE_SETUP -#line 785 "toke.l" +#line 788 "toke.l" { if (sudoerstext[sudoersleng - 1] == '\n') { /* comment ending in a newline */ @@ -4013,7 +4016,7 @@ YY_BREAK case 80: YY_RULE_SETUP -#line 800 "toke.l" +#line 803 "toke.l" { LEXTRACE("NOMATCH "); return NOMATCH; @@ -4028,7 +4031,7 @@ case YY_STATE_EOF(WANTDIGEST): case YY_STATE_EOF(GOTINC): case YY_STATE_EOF(EXPECTPATH): -#line 805 "toke.l" +#line 808 "toke.l" { if (!pop_include()) yyterminate(); @@ -4036,10 +4039,10 @@ YY_BREAK case 81: YY_RULE_SETUP -#line 810 "toke.l" +#line 813 "toke.l" ECHO; YY_BREAK -#line 4037 "toke.c" +#line 4040 "toke.c" case YY_END_OF_BUFFER: { @@ -5000,7 +5003,7 @@ #define YYTABLES_NAME "yytables" -#line 810 "toke.l" +#line 813 "toke.l" struct path_list { diff -Nru sudo-1.9.4p2/plugins/sudoers/toke.l sudo-1.9.5p2/plugins/sudoers/toke.l --- sudo-1.9.4p2/plugins/sudoers/toke.l 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/toke.l 2021-01-09 14:12:16.000000000 -0600 @@ -50,6 +50,9 @@ # define NAMLEN(dirent) strlen((dirent)->d_name) #endif +// PVS Studio suppression +// -V::519, 1004, 1037 + int sudolineno; /* current sudoers line number. */ char *sudoers; /* sudoers file being parsed. */ struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */ diff -Nru sudo-1.9.4p2/plugins/sudoers/toke_util.c sudo-1.9.5p2/plugins/sudoers/toke_util.c --- sudo-1.9.4p2/plugins/sudoers/toke_util.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/toke_util.c 2021-01-09 14:12:16.000000000 -0600 @@ -117,7 +117,7 @@ *dst = '\0'; /* Check for sudoedit specified as a fully-qualified path. */ - if ((dst = strrchr(sudoerslval.command.cmnd, '/')) != NULL) { + if ((dst = strrchr(sudoerslval.command.cmnd, '/')) != NULL) { // -V575 if (strcmp(dst, "/sudoedit") == 0) { if (sudoers_strict) { sudoerserror( diff -Nru sudo-1.9.4p2/plugins/sudoers/tsgetgrpw.c sudo-1.9.5p2/plugins/sudoers/tsgetgrpw.c --- sudo-1.9.4p2/plugins/sudoers/tsgetgrpw.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/tsgetgrpw.c 2021-01-09 14:12:16.000000000 -0600 @@ -86,8 +86,12 @@ { if (pwf == NULL) { pwf = fopen(pwfile, "r"); - if (pwf != NULL) - (void)fcntl(fileno(pwf), F_SETFD, FD_CLOEXEC); + if (pwf != NULL) { + if (fcntl(fileno(pwf), F_SETFD, FD_CLOEXEC) == -1) { + fclose(pwf); + pwf = NULL; + } + } } else { rewind(pwf); } @@ -164,7 +168,10 @@ if (pwf == NULL) { if ((pwf = fopen(pwfile, "r")) == NULL) return NULL; - (void)fcntl(fileno(pwf), F_SETFD, FD_CLOEXEC); + if (fcntl(fileno(pwf), F_SETFD, FD_CLOEXEC) == -1) { + fclose(pwf); + return NULL; + } } else { rewind(pwf); } @@ -187,7 +194,10 @@ if (pwf == NULL) { if ((pwf = fopen(pwfile, "r")) == NULL) return NULL; - (void)fcntl(fileno(pwf), F_SETFD, FD_CLOEXEC); + if (fcntl(fileno(pwf), F_SETFD, FD_CLOEXEC) == -1) { + fclose(pwf); + return NULL; + } } else { rewind(pwf); } @@ -215,8 +225,12 @@ { if (grf == NULL) { grf = fopen(grfile, "r"); - if (grf != NULL) - (void)fcntl(fileno(grf), F_SETFD, FD_CLOEXEC); + if (grf != NULL) { + if (fcntl(fileno(grf), F_SETFD, FD_CLOEXEC) == -1) { + fclose(grf); + grf = NULL; + } + } } else { rewind(grf); } @@ -290,7 +304,10 @@ if (grf == NULL) { if ((grf = fopen(grfile, "r")) == NULL) return NULL; - (void)fcntl(fileno(grf), F_SETFD, FD_CLOEXEC); + if (fcntl(fileno(grf), F_SETFD, FD_CLOEXEC) == -1) { + fclose(grf); + grf = NULL; + } } else { rewind(grf); } @@ -313,7 +330,10 @@ if (grf == NULL) { if ((grf = fopen(grfile, "r")) == NULL) return NULL; - (void)fcntl(fileno(grf), F_SETFD, FD_CLOEXEC); + if (fcntl(fileno(grf), F_SETFD, FD_CLOEXEC) == -1) { + fclose(grf); + grf = NULL; + } } else { rewind(grf); } @@ -336,8 +356,7 @@ GETGROUPS_T **groupsp, int *ngroupsp) { GETGROUPS_T *groups = *groupsp; - int grpsize = *ngroupsp; - int i, ngroups = 1; + int i, grpsize, ngroups = 1; int ret = -1; struct group *grp; @@ -352,7 +371,7 @@ grpsize <<= 2; } else { /* Static group vector. */ - if (grpsize < 1) + if ((grpsize = *ngroupsp) < 1) return -1; } diff -Nru sudo-1.9.4p2/plugins/sudoers/visudo.c sudo-1.9.5p2/plugins/sudoers/visudo.c --- sudo-1.9.4p2/plugins/sudoers/visudo.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/sudoers/visudo.c 2021-01-09 14:12:16.000000000 -0600 @@ -477,7 +477,7 @@ ac = editor_argc - 3; if (lineno > 0) { (void)snprintf(linestr, sizeof(linestr), "+%d", lineno); - editor_argv[ac++] = linestr; + editor_argv[ac++] = linestr; // -V507 } editor_argv[ac++] = "--"; editor_argv[ac++] = sp->tpath; diff -Nru sudo-1.9.4p2/plugins/system_group/Makefile.in sudo-1.9.5p2/plugins/system_group/Makefile.in --- sudo-1.9.4p2/plugins/system_group/Makefile.in 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/plugins/system_group/Makefile.in 2021-01-09 14:12:16.000000000 -0600 @@ -72,7 +72,7 @@ SSP_LDFLAGS = @SSP_LDFLAGS@ # cppcheck options, usually set in the top-level Makefile -CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 # splint options, usually set in the top-level Makefile SPLINT_OPTS = -D__restrict= -checks Binary files /tmp/iZuZwXTqez/sudo-1.9.4p2/po/ko.mo and /tmp/cZR8a_TUxF/sudo-1.9.5p2/po/ko.mo differ diff -Nru sudo-1.9.4p2/po/ko.po sudo-1.9.5p2/po/ko.po --- sudo-1.9.4p2/po/ko.po 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/po/ko.po 2021-01-09 14:12:16.000000000 -0600 @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.2rc1\n" +"Project-Id-Version: sudo 1.9.3b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2020-06-24 05:35-0600\n" -"PO-Revision-Date: 2020-07-17 23:13+0900\n" +"POT-Creation-Date: 2020-09-12 08:28-0600\n" +"PO-Revision-Date: 2020-12-11 01:07+0900\n" "Last-Translator: Seong-ho Cho \n" "Language-Team: Korean \n" "Language: ko\n" @@ -52,17 +52,17 @@ #: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290 #: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52 #: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:462 src/load_plugins.c:468 -#: src/parse_args.c:176 src/parse_args.c:197 src/parse_args.c:270 -#: src/parse_args.c:593 src/parse_args.c:615 src/parse_args.c:640 +#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469 +#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 +#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 #: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:485 src/selinux.c:494 src/sesh.c:116 -#: src/sudo.c:624 src/sudo.c:693 src/sudo.c:703 src/sudo.c:724 src/sudo.c:743 -#: src/sudo.c:752 src/sudo.c:761 src/sudo.c:778 src/sudo.c:820 src/sudo.c:830 -#: src/sudo.c:859 src/sudo.c:1045 src/sudo.c:1067 src/sudo.c:1365 -#: src/sudo.c:1538 src/sudo.c:1732 src/sudo.c:2076 src/sudo_edit.c:263 -#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:974 -#: src/sudo_edit.c:994 +#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115 +#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751 +#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838 +#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373 +#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263 +#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976 +#: src/sudo_edit.c:996 #, c-format msgid "%s: %s" msgstr "%s: %s" @@ -85,20 +85,20 @@ #: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 #: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298 #: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:462 src/load_plugins.c:468 -#: src/parse_args.c:176 src/parse_args.c:198 src/parse_args.c:270 -#: src/parse_args.c:593 src/parse_args.c:615 src/parse_args.c:640 +#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469 +#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 +#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 #: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:485 src/selinux.c:494 src/sesh.c:116 -#: src/sudo.c:234 src/sudo.c:624 src/sudo.c:859 src/sudo.c:1045 -#: src/sudo.c:1067 src/sudo.c:1365 src/sudo.c:1538 src/sudo.c:1732 -#: src/sudo.c:2076 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854 -#: src/sudo_edit.c:974 src/sudo_edit.c:994 +#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115 +#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053 +#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740 +#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854 +#: src/sudo_edit.c:976 src/sudo_edit.c:996 msgid "unable to allocate memory" msgstr "메모리를 할당할 수 없습니다" #: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 +#: src/selinux.c:264 src/sudo.c:369 #, c-format msgid "unable to open %s" msgstr "%s을(를) 열 수 없습니다" @@ -175,12 +175,22 @@ msgid "%s is group writable" msgstr "%s에 그룹 구성원이 기록할 수 있습니다" -#: src/copy_file.c:118 +#: src/copy_file.c:91 +#, c-format +msgid "%s: truncate %s to zero bytes? (y/n) [n] " +msgstr "%s: %s 문자열을 0 바이트로 자릅니까? (y/n) [n] " + +#: src/copy_file.c:95 +#, c-format +msgid "not overwriting %s" +msgstr "%s 덮어쓰지 않음" + +#: src/copy_file.c:117 #, c-format msgid "unable to read from %s" msgstr "%s을(를) 읽을 수 없습니다" -#: src/copy_file.c:122 src/sudo_edit.c:695 +#: src/copy_file.c:134 src/sudo_edit.c:695 #, c-format msgid "unable to write to %s" msgstr "%s에 기록할 수 없습니다" @@ -261,7 +271,7 @@ msgstr "처리 tty를 설정할 수 없습니다" #: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465 -#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:304 +#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306 msgid "unable to create pipe" msgstr "파이프를 만들 수 없습니다" @@ -271,7 +281,7 @@ msgstr "상위로부터 메시지를 받을 수 없습니다" #: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544 -#: src/sudo_edit.c:735 src/tgetpass.c:308 +#: src/sudo_edit.c:735 src/tgetpass.c:310 msgid "unable to fork" msgstr "포킹할 수 없습니다" @@ -279,7 +289,7 @@ msgid "unable to restore tty label" msgstr "tty 레이블을 복원할 수 없습니다" -#: src/exec_monitor.c:632 src/sesh.c:126 src/sudo.c:1123 +#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131 #, c-format msgid "unable to execute %s" msgstr "%s을(를) 실행할 수 없습니다" @@ -330,7 +340,7 @@ #: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 #: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 #: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307 -#: src/load_plugins.c:353 +#: src/load_plugins.c:354 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "%s의 %d번째 줄에서 \"%s\" 플러그인을 불러오는 중 오류" @@ -375,67 +385,67 @@ msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "%2$s의 %3$d번째 줄에서 \"%1$s\" 정책 플러그인 무시" -#: src/load_plugins.c:329 +#: src/load_plugins.c:330 msgid "only a single policy plugin may be specified" msgstr "단일 정책 플러그인을 지정하십시오" -#: src/load_plugins.c:355 +#: src/load_plugins.c:356 #, c-format msgid "unknown plugin type %d found in %s" msgstr "%2$s에 알 수 없는 정책 유형 %1$d이(가) 있습니다" -#: src/load_plugins.c:541 +#: src/load_plugins.c:552 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "%s 정책 플러그인에 check_policy 메서드가 없습니다" -#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:477 +#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479 #, c-format msgid "internal error, %s overflow" msgstr "내부 오류, %s 오버플로우" -#: src/parse_args.c:218 +#: src/parse_args.c:223 #, c-format msgid "invalid environment variable name: %s" msgstr "잘못된 환경 변수 이름: %s" -#: src/parse_args.c:319 +#: src/parse_args.c:325 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "-C의 인자 값은 3보다 크거나 같아야 합니다" -#: src/parse_args.c:532 +#: src/parse_args.c:552 msgid "you may not specify both the -i and -s options" msgstr "-i 와 -s 옵션을 함께 지정할 수 없습니다" -#: src/parse_args.c:536 +#: src/parse_args.c:557 msgid "you may not specify both the -i and -E options" msgstr "-i 와 -E 옵션을 함께 지정할 수 없습니다" -#: src/parse_args.c:546 +#: src/parse_args.c:567 msgid "the -E option is not valid in edit mode" msgstr "-E 옵션은 편집 모드에서 유효하지 않습니다" -#: src/parse_args.c:548 +#: src/parse_args.c:570 msgid "you may not specify environment variables in edit mode" msgstr "편집 모드에서 환경 변수를 지정할 수 없습니다" -#: src/parse_args.c:557 +#: src/parse_args.c:580 msgid "the -U option may only be used with the -l option" msgstr "-U 옵션은 -l 옵션만 함께 사용할 수 있습니다" -#: src/parse_args.c:561 +#: src/parse_args.c:584 msgid "the -A and -S options may not be used together" msgstr "-A 와 -S 옵션을 함께 사용할 수 없습니다" -#: src/parse_args.c:654 +#: src/parse_args.c:677 msgid "sudoedit is not supported on this platform" msgstr "이 플랫폼에서 sudoedit를 지원하지 않습니다" -#: src/parse_args.c:735 +#: src/parse_args.c:759 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:749 +#: src/parse_args.c:773 #, c-format msgid "" "%s - edit files as another user\n" @@ -444,7 +454,7 @@ "%s - 다른 사용자 권한으로 파일을 편집합니다\n" "\n" -#: src/parse_args.c:751 +#: src/parse_args.c:775 #, c-format msgid "" "%s - execute a command as another user\n" @@ -453,8 +463,7 @@ "%s - 다른 사용자 권한으로 명령을 실행합니다\n" "\n" -#: src/parse_args.c:756 -#, c-format +#: src/parse_args.c:780 msgid "" "\n" "Options:\n" @@ -462,123 +471,131 @@ "\n" "옵션:\n" -#: src/parse_args.c:758 +#: src/parse_args.c:782 msgid "use a helper program for password prompting" msgstr "암호 질문에 보조 프로그램 활용" -#: src/parse_args.c:761 +#: src/parse_args.c:785 msgid "use specified BSD authentication type" msgstr "지정 BSD 인증 형식 활용" -#: src/parse_args.c:764 +#: src/parse_args.c:788 msgid "run command in the background" msgstr "백그라운드에서 명령 실행" -#: src/parse_args.c:766 +#: src/parse_args.c:790 msgid "ring bell when prompting" msgstr "프롬프트를 띄울 때 알림 소리를 냅니다" -#: src/parse_args.c:768 +#: src/parse_args.c:792 msgid "close all file descriptors >= num" msgstr "num 보다 크거나 같은 모든 파일 서술자를 닫습니다" -#: src/parse_args.c:771 +#: src/parse_args.c:795 msgid "run command with the specified BSD login class" msgstr "지정 BSD 로그인 클래스로 명령을 실행합니다" -#: src/parse_args.c:774 +#: src/parse_args.c:798 +msgid "change the working directory before running command" +msgstr "명령 실행 전 작업 디렉터리를 바꿉니다" + +#: src/parse_args.c:800 msgid "preserve user environment when running command" msgstr "명령을 실행할 때 사용자 환경을 유지합니다" -#: src/parse_args.c:776 +#: src/parse_args.c:802 msgid "preserve specific environment variables" msgstr "지정 환경 변수 값을 유지합니다" -#: src/parse_args.c:778 +#: src/parse_args.c:804 msgid "edit files instead of running a command" msgstr "명령을 실행하는 대신 파일을 편집합니다" -#: src/parse_args.c:780 +#: src/parse_args.c:806 msgid "run command as the specified group name or ID" msgstr "지정 그룹 이름 또는 ID로 명령을 실행합니다" -#: src/parse_args.c:782 +#: src/parse_args.c:808 msgid "set HOME variable to target user's home dir" msgstr "대상 사용자의 내 폴더에 HOME 변수를 지정합니다" -#: src/parse_args.c:784 +#: src/parse_args.c:810 msgid "display help message and exit" msgstr "도움말을 보여주고 빠져나갑니다" -#: src/parse_args.c:786 +#: src/parse_args.c:812 msgid "run command on host (if supported by plugin)" msgstr "(플러그인에서 지원한다면)호스트에서 명령을 실행합니다" -#: src/parse_args.c:788 +#: src/parse_args.c:814 msgid "run login shell as the target user; a command may also be specified" msgstr "대상 사용자 자격으로 셸에 로그인하며 명령을 지정할 수 있습니다" -#: src/parse_args.c:790 +#: src/parse_args.c:816 msgid "remove timestamp file completely" msgstr "타임스탬프 파일을 완전히 제거합니다" -#: src/parse_args.c:792 +#: src/parse_args.c:818 msgid "invalidate timestamp file" msgstr "타임스탬프 파일을 초기화합니다" -#: src/parse_args.c:794 +#: src/parse_args.c:820 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "사용자 권한을 보여주거나 지정 명령을 확인합니다. 긴 형식으로 보려면 옵션을 두 번 사용하십시오" -#: src/parse_args.c:796 +#: src/parse_args.c:822 msgid "non-interactive mode, no prompts are used" msgstr "비대화형 모드. 프롬프트를 사용하지 않습니다" -#: src/parse_args.c:798 +#: src/parse_args.c:824 msgid "preserve group vector instead of setting to target's" msgstr "대상을 설정하는 대신 그룹 벡터를 유지합니다" -#: src/parse_args.c:800 +#: src/parse_args.c:826 msgid "use the specified password prompt" msgstr "지정 암호 프롬프트를 활용합니다" -#: src/parse_args.c:803 +#: src/parse_args.c:828 +msgid "change the root directory before running command" +msgstr "명령 실행 전 루트 디렉터리를 바꿉니다" + +#: src/parse_args.c:831 msgid "create SELinux security context with specified role" msgstr "지정 역할을 지닌 SELinux 보안 컨텍스트를 만듭니다" -#: src/parse_args.c:806 +#: src/parse_args.c:834 msgid "read password from standard input" msgstr "표준 입력으로 암호를 입력 받습니다" -#: src/parse_args.c:808 +#: src/parse_args.c:836 msgid "run shell as the target user; a command may also be specified" msgstr "셸을 대상 사용자 명의로 실행하며 명령을 지정할 수 있습니다" -#: src/parse_args.c:811 +#: src/parse_args.c:839 msgid "create SELinux security context with specified type" msgstr "지정 유형의 SELinux 보안 컨텍스트를 만듭니다" -#: src/parse_args.c:814 +#: src/parse_args.c:842 msgid "terminate command after the specified time limit" msgstr "지정 제한 시간 이후로 명령 실행을 멈춥니다" -#: src/parse_args.c:816 +#: src/parse_args.c:844 msgid "in list mode, display privileges for user" msgstr "목록 모드에서 사용자 권한을 보여줍니다" -#: src/parse_args.c:818 +#: src/parse_args.c:846 msgid "run command (or edit file) as specified user name or ID" msgstr "지정한 사용자 이름 또는 ID로 명령을 실행(또는 파일 편집)" -#: src/parse_args.c:820 +#: src/parse_args.c:848 msgid "display version information and exit" msgstr "버전 정보를 보여주고 나갑니다" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "update user's timestamp without running a command" msgstr "명령을 실행하지 않고 사용자 타임스탬프를 업데이트합니다" -#: src/parse_args.c:824 +#: src/parse_args.c:852 msgid "stop processing command line arguments" msgstr "명령행 인자 처리를 멈춥니다" @@ -683,16 +700,16 @@ msgid "unable to set key creation context to %s" msgstr "키 생성 컨텍스트를 %s(으)로 설정할 수 없습니다" -#: src/sesh.c:78 +#: src/sesh.c:77 msgid "requires at least one argument" msgstr "최소한 하나의 인자가 필요합니다" -#: src/sesh.c:107 +#: src/sesh.c:106 #, c-format msgid "invalid file descriptor number: %s" msgstr "잘못된 파일 서술자 번호: %s" -#: src/sesh.c:121 +#: src/sesh.c:120 #, c-format msgid "unable to run %s as a login shell" msgstr "%s(을)를 로그인 쉘로 실행할 수 없습니다" @@ -745,124 +762,124 @@ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "경고! \"%s\" 프로젝트에 자원 처리 할당에 실패했습니다" -#: src/sudo.c:219 +#: src/sudo.c:220 #, c-format msgid "Sudo version %s\n" msgstr "sudo 버전 %s\n" -#: src/sudo.c:221 +#: src/sudo.c:222 #, c-format msgid "Configure options: %s\n" msgstr "설정 옵션: %s\n" -#: src/sudo.c:230 +#: src/sudo.c:231 msgid "fatal error, unable to load plugins" msgstr "치명적인 오류. 플러그인을 불러올 수 없습니다" -#: src/sudo.c:275 +#: src/sudo.c:277 msgid "plugin did not return a command to execute" msgstr "플러그인에서 실행할 명령을 반환하지 않았습니다" -#: src/sudo.c:310 +#: src/sudo.c:312 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "예상치 못한 sudo 모드 0x%x" -#: src/sudo.c:543 +#: src/sudo.c:546 #, c-format msgid "you do not exist in the %s database" msgstr "%s 데이터베이스에 없는 사용자입니다" -#: src/sudo.c:600 +#: src/sudo.c:603 msgid "unable to determine tty" msgstr "tty를 지정할 수 없습니다" -#: src/sudo.c:905 +#: src/sudo.c:913 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s은(는) %d uid를 소유해야 하며 setuid 비트를 설정해야 합니다" -#: src/sudo.c:908 +#: src/sudo.c:916 #, 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:914 +#: src/sudo.c:922 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "%d은(는) 유효한 uid가 아닙니다. sudo에 setuid root를 설치했습니까?" -#: src/sudo.c:930 +#: src/sudo.c:938 msgid "unable to set supplementary group IDs" msgstr "추가 그룹 ID를 설정할 수 없습니다" -#: src/sudo.c:937 +#: src/sudo.c:945 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "유효한 gid를 %u 실행 gid로 설정할 수 없습니다" -#: src/sudo.c:943 +#: src/sudo.c:951 #, c-format msgid "unable to set gid to runas gid %u" msgstr "gid를 실행 gid %u(으)로 설정할 수 없습니다" -#: src/sudo.c:986 +#: src/sudo.c:994 #, c-format msgid "unexpected child termination condition: %d" msgstr "예상치 못한 하위 프로세스 중단 상태: %d" -#: src/sudo.c:1095 +#: src/sudo.c:1103 msgid "unable to initialize policy plugin" msgstr "정책 플러그인을 초기화할 수 없습니다" -#: src/sudo.c:1158 +#: src/sudo.c:1166 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "%s 정책 플러그인에 \"check_policy\" 메서드가 빠졌습니다" -#: src/sudo.c:1173 src/sudo.c:1226 src/sudo.c:1270 +#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278 msgid "command rejected by policy" msgstr "정책을 통해 명령을 거부 했습니다" -#: src/sudo.c:1178 src/sudo.c:1231 src/sudo.c:1275 +#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283 msgid "policy plugin error" msgstr "정책 플러그인 오류" -#: src/sudo.c:1212 +#: src/sudo.c:1220 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "%s 정책 플러그인에서 권한 조회를 지원하지 않습니다" -#: src/sudo.c:1256 +#: src/sudo.c:1264 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "%s 정책 플러그인에서 -v 옵션을 지원하지 않습니다" -#: src/sudo.c:1294 +#: src/sudo.c:1302 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "%s 정책 플러그인에서 -k/-K 옵션을 지원하지 않습니다" -#: src/sudo.c:1423 +#: src/sudo.c:1431 #, c-format msgid "error initializing I/O plugin %s" msgstr "%s 입출력 플러그인 초기화 오류" -#: src/sudo.c:1577 +#: src/sudo.c:1585 #, c-format msgid "error initializing audit plugin %s" msgstr "%s 감사 플러그인 초기화 오류" -#: src/sudo.c:1755 +#: src/sudo.c:1763 #, c-format msgid "error initializing approval plugin %s" msgstr "%s 승인 플러그인 초기화 오류" -#: src/sudo.c:1831 +#: src/sudo.c:1839 msgid "command rejected by approver" msgstr "승인자가 명령을 거부했습니다" -#: src/sudo.c:1840 +#: src/sudo.c:1848 msgid "approval plugin error" msgstr "승인 플러그인 오류" @@ -899,7 +916,7 @@ msgid "%s unchanged" msgstr "%s 바꾸지 않음" -#: src/sudo_edit.c:706 src/sudo_edit.c:907 +#: src/sudo_edit.c:706 src/sudo_edit.c:909 #, c-format msgid "contents of edit session left in %s" msgstr "%s에 편집 세션 내용 남음" @@ -912,33 +929,33 @@ msgid "sesh: unable to create temporary files" msgstr "sesh: 임시 파일을 만들 수 없습니다" -#: src/sudo_edit.c:818 src/sudo_edit.c:900 +#: src/sudo_edit.c:818 src/sudo_edit.c:902 msgid "sesh: killed by a signal" msgstr "sesh: 시그널을 받아 죽음" -#: src/sudo_edit.c:820 src/sudo_edit.c:903 +#: src/sudo_edit.c:820 src/sudo_edit.c:905 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: 잘못된 오류 %d" -#: src/sudo_edit.c:894 +#: src/sudo_edit.c:895 msgid "unable to copy temporary files back to their original location" msgstr "원위치에 임시 파일을 복사할 수 없습니다" -#: src/sudo_edit.c:897 +#: src/sudo_edit.c:899 msgid "unable to copy some of the temporary files back to their original location" msgstr "원 위치에 임시 파일 일부를 복사할 수 없습니다" -#: src/sudo_edit.c:941 +#: src/sudo_edit.c:943 #, c-format msgid "unable to change uid to root (%u)" msgstr "uid를 루트로 바꿀 수 없습니다(%u)" -#: src/sudo_edit.c:958 +#: src/sudo_edit.c:960 msgid "plugin error: missing file list for sudoedit" msgstr "플러그인 오류: sudoedit에 파일 목록이 빠짐" -#: src/sudo_edit.c:1009 src/sudo_edit.c:1022 +#: src/sudo_edit.c:1011 src/sudo_edit.c:1024 msgid "unable to read the clock" msgstr "클록을 읽을 수 없습니다" @@ -954,25 +971,25 @@ msgid "unable to read password" msgstr "암호를 읽을 수 없습니다" -#: src/tgetpass.c:140 +#: 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:150 +#: src/tgetpass.c:152 msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "askpass 프로그램을 지정하지 않았습니다. SUDO_ASKPASS를 설정해보십시오" -#: src/tgetpass.c:325 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" msgstr "gid를 %u(으)로 설정할 수 없습니다" -#: src/tgetpass.c:329 +#: src/tgetpass.c:331 #, c-format msgid "unable to set uid to %u" msgstr "uid를 %u(으)로 설정할 수 없습니다" -#: src/tgetpass.c:334 +#: src/tgetpass.c:336 #, c-format msgid "unable to run %s" msgstr "%s을(를) 실행할 수 없습니다" Binary files /tmp/iZuZwXTqez/sudo-1.9.4p2/po/sr.mo and /tmp/cZR8a_TUxF/sudo-1.9.5p2/po/sr.mo differ diff -Nru sudo-1.9.4p2/po/sr.po sudo-1.9.5p2/po/sr.po --- sudo-1.9.4p2/po/sr.po 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/po/sr.po 2021-01-09 14:12:16.000000000 -0600 @@ -3,10 +3,10 @@ # Мирослав Николић , 2011—2020. msgid "" msgstr "" -"Project-Id-Version: sudo-1.9.2rc1\n" +"Project-Id-Version: sudo-1.9.3b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2020-06-24 05:35-0600\n" -"PO-Revision-Date: 2020-08-04 11:50+0200\n" +"POT-Creation-Date: 2020-09-12 08:28-0600\n" +"PO-Revision-Date: 2020-12-11 07:41+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" @@ -14,7 +14,6 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Virtaal 0.7.1\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: lib/util/aix.c:89 lib/util/aix.c:169 @@ -50,17 +49,17 @@ #: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290 #: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52 #: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:462 src/load_plugins.c:468 -#: src/parse_args.c:176 src/parse_args.c:197 src/parse_args.c:270 -#: src/parse_args.c:593 src/parse_args.c:615 src/parse_args.c:640 +#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469 +#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 +#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 #: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:485 src/selinux.c:494 src/sesh.c:116 -#: src/sudo.c:624 src/sudo.c:693 src/sudo.c:703 src/sudo.c:724 src/sudo.c:743 -#: src/sudo.c:752 src/sudo.c:761 src/sudo.c:778 src/sudo.c:820 src/sudo.c:830 -#: src/sudo.c:859 src/sudo.c:1045 src/sudo.c:1067 src/sudo.c:1365 -#: src/sudo.c:1538 src/sudo.c:1732 src/sudo.c:2076 src/sudo_edit.c:263 -#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:974 -#: src/sudo_edit.c:994 +#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115 +#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751 +#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838 +#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373 +#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263 +#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976 +#: src/sudo_edit.c:996 #, c-format msgid "%s: %s" msgstr "%s: %s" @@ -83,20 +82,20 @@ #: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 #: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298 #: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:462 src/load_plugins.c:468 -#: src/parse_args.c:176 src/parse_args.c:198 src/parse_args.c:270 -#: src/parse_args.c:593 src/parse_args.c:615 src/parse_args.c:640 +#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469 +#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 +#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 #: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:485 src/selinux.c:494 src/sesh.c:116 -#: src/sudo.c:234 src/sudo.c:624 src/sudo.c:859 src/sudo.c:1045 -#: src/sudo.c:1067 src/sudo.c:1365 src/sudo.c:1538 src/sudo.c:1732 -#: src/sudo.c:2076 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854 -#: src/sudo_edit.c:974 src/sudo_edit.c:994 +#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115 +#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053 +#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740 +#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854 +#: src/sudo_edit.c:976 src/sudo_edit.c:996 msgid "unable to allocate memory" msgstr "не могу да доделим меморију" #: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 +#: src/selinux.c:264 src/sudo.c:369 #, c-format msgid "unable to open %s" msgstr "не могу да отворим %s" @@ -173,12 +172,22 @@ msgid "%s is group writable" msgstr "%s је групно уписив" -#: src/copy_file.c:118 +#: src/copy_file.c:91 +#, c-format +msgid "%s: truncate %s to zero bytes? (y/n) [n] " +msgstr "%s: да скратим „%s“ на нула бајта? (y/n) [n] " + +#: src/copy_file.c:95 +#, c-format +msgid "not overwriting %s" +msgstr "не преписујем „%s“" + +#: src/copy_file.c:117 #, c-format msgid "unable to read from %s" msgstr "не могу да читам из „%s“" -#: src/copy_file.c:122 src/sudo_edit.c:695 +#: src/copy_file.c:134 src/sudo_edit.c:695 #, c-format msgid "unable to write to %s" msgstr "не могу да упишем у %s" @@ -259,7 +268,7 @@ msgstr "не могу да подесим контролисање tty" #: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465 -#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:304 +#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306 msgid "unable to create pipe" msgstr "не могу да направим спојку" @@ -268,7 +277,7 @@ msgstr "не могу да примим поруку од родитеља" #: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544 -#: src/sudo_edit.c:735 src/tgetpass.c:308 +#: src/sudo_edit.c:735 src/tgetpass.c:310 msgid "unable to fork" msgstr "не могу да поделим" @@ -276,7 +285,7 @@ msgid "unable to restore tty label" msgstr "не могу да повратим tty натпис" -#: src/exec_monitor.c:632 src/sesh.c:126 src/sudo.c:1123 +#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131 #, c-format msgid "unable to execute %s" msgstr "не могу да извршим %s" @@ -327,7 +336,7 @@ #: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 #: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 #: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307 -#: src/load_plugins.c:353 +#: src/load_plugins.c:354 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "грешка у „%s“, %d. ред приликом учитавања прикључка „%s“" @@ -372,67 +381,67 @@ msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "занемарујем прикључак сигурности „%s“ у %s, %d. ред" -#: src/load_plugins.c:329 +#: src/load_plugins.c:330 msgid "only a single policy plugin may be specified" msgstr "може бити наведен само један прикључак сигурности" -#: src/load_plugins.c:355 +#: src/load_plugins.c:356 #, c-format msgid "unknown plugin type %d found in %s" msgstr "нађох непознату врсту прикључка %d у „%s“" -#: src/load_plugins.c:541 +#: src/load_plugins.c:552 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "прикључак сигурности %s не садржи метод провере_сигурности" -#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:477 +#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479 #, c-format msgid "internal error, %s overflow" msgstr "унутрашња грешка, прекорачење функције „%s“" -#: src/parse_args.c:218 +#: src/parse_args.c:223 #, c-format msgid "invalid environment variable name: %s" msgstr "неисправан назив променљиве окружења: %s" -#: src/parse_args.c:319 +#: src/parse_args.c:325 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "аргумент уз -C мора бити број већи или једнак 3" -#: src/parse_args.c:532 +#: src/parse_args.c:552 msgid "you may not specify both the -i and -s options" msgstr "не можете да наведете обе опције „-i“ и „-s“" -#: src/parse_args.c:536 +#: src/parse_args.c:557 msgid "you may not specify both the -i and -E options" msgstr "не можете да наведете обе опције „-i“ и „-E“" -#: src/parse_args.c:546 +#: src/parse_args.c:567 msgid "the -E option is not valid in edit mode" msgstr "опција „-E“ није исправна у режиму уређивања" -#: src/parse_args.c:548 +#: src/parse_args.c:570 msgid "you may not specify environment variables in edit mode" msgstr "не можете да одредите променљиве окружења у режиму уређивања" -#: src/parse_args.c:557 +#: src/parse_args.c:580 msgid "the -U option may only be used with the -l option" msgstr "опција „-U“ може бити коришћена само са опцијом „-l“" -#: src/parse_args.c:561 +#: src/parse_args.c:584 msgid "the -A and -S options may not be used together" msgstr "опције „-A“ и „-S“ не могу бити коришћене заједно" -#: src/parse_args.c:654 +#: src/parse_args.c:677 msgid "sudoedit is not supported on this platform" msgstr "„sudoedit“ није подржано на овој платформи" -#: src/parse_args.c:735 +#: src/parse_args.c:759 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:749 +#: src/parse_args.c:773 #, c-format msgid "" "%s - edit files as another user\n" @@ -441,7 +450,7 @@ "%s — уредите датотеке као други корисник\n" "\n" -#: src/parse_args.c:751 +#: src/parse_args.c:775 #, c-format msgid "" "%s - execute a command as another user\n" @@ -450,8 +459,7 @@ "%s — извршите наредбу као други корисник\n" "\n" -#: src/parse_args.c:756 -#, c-format +#: src/parse_args.c:780 msgid "" "\n" "Options:\n" @@ -459,123 +467,131 @@ "\n" "Опције:\n" -#: src/parse_args.c:758 +#: src/parse_args.c:782 msgid "use a helper program for password prompting" msgstr "користи програм испомоћи за упит лозинке" -#: src/parse_args.c:761 +#: src/parse_args.c:785 msgid "use specified BSD authentication type" msgstr "користи наведену врсту БСД потврде идентитета" -#: src/parse_args.c:764 +#: src/parse_args.c:788 msgid "run command in the background" msgstr "покреће наредбу у позадини" -#: src/parse_args.c:766 +#: src/parse_args.c:790 msgid "ring bell when prompting" msgstr "звони приликом постављања упита" -#: src/parse_args.c:768 +#: src/parse_args.c:792 msgid "close all file descriptors >= num" msgstr "затвара све описнике датотеке >= fd" -#: src/parse_args.c:771 +#: src/parse_args.c:795 msgid "run command with the specified BSD login class" msgstr "покреће наредбу са наведеним разредом БСД пријаве" -#: src/parse_args.c:774 +#: src/parse_args.c:798 +msgid "change the working directory before running command" +msgstr "мења радни директоријум пре покретања наредбе" + +#: src/parse_args.c:800 msgid "preserve user environment when running command" msgstr "чува корисничко окружење приликом покретања наредбе" -#: src/parse_args.c:776 +#: src/parse_args.c:802 msgid "preserve specific environment variables" msgstr "чува нарочите променљиве окружења" -#: src/parse_args.c:778 +#: src/parse_args.c:804 msgid "edit files instead of running a command" msgstr "уређује датотеке уместо да изврши наредбу" -#: src/parse_args.c:780 +#: src/parse_args.c:806 msgid "run command as the specified group name or ID" msgstr "извршава наредбу као наведени назив групе или ИБ" -#: src/parse_args.c:782 +#: src/parse_args.c:808 msgid "set HOME variable to target user's home dir" msgstr "подешава променљиву ЛИЧНО у циљну корисничку личну фасциклу" -#: src/parse_args.c:784 +#: src/parse_args.c:810 msgid "display help message and exit" msgstr "приказује поруку помоћи и излази" -#: src/parse_args.c:786 +#: src/parse_args.c:812 msgid "run command on host (if supported by plugin)" msgstr "покреће наредбу на домаћину (ако је подржано прикључком)" -#: src/parse_args.c:788 +#: src/parse_args.c:814 msgid "run login shell as the target user; a command may also be specified" msgstr "покреће љуску пријаве као крајњи корисник; наредба може такође бити наведена" -#: src/parse_args.c:790 +#: src/parse_args.c:816 msgid "remove timestamp file completely" msgstr "потпуно уклања датотеку записа датума и времена" -#: src/parse_args.c:792 +#: src/parse_args.c:818 msgid "invalidate timestamp file" msgstr "чини неисправном датотеку датума и времена" -#: src/parse_args.c:794 +#: src/parse_args.c:820 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "исписује привилегије корисника или проверава посебну наредбу; користи се двапута за дуже записе" -#: src/parse_args.c:796 +#: src/parse_args.c:822 msgid "non-interactive mode, no prompts are used" msgstr "немеђудејствени режим, не користи упите" -#: src/parse_args.c:798 +#: src/parse_args.c:824 msgid "preserve group vector instead of setting to target's" msgstr "чува вектор групе уместо да подеси на циљеве" -#: src/parse_args.c:800 +#: src/parse_args.c:826 msgid "use the specified password prompt" msgstr "користи упит наведене лозинке" -#: src/parse_args.c:803 +#: src/parse_args.c:828 +msgid "change the root directory before running command" +msgstr "мења корени директоријум пре покретања наредбе" + +#: src/parse_args.c:831 msgid "create SELinux security context with specified role" msgstr "ствара СЕЛинукс сигурносни контекст са наведеном улогом" -#: src/parse_args.c:806 +#: src/parse_args.c:834 msgid "read password from standard input" msgstr "чита лозинку са стандардног улаза" -#: src/parse_args.c:808 +#: src/parse_args.c:836 msgid "run shell as the target user; a command may also be specified" msgstr "покреће љуску као крајњи корисник; наредба такође може бити наведена" -#: src/parse_args.c:811 +#: src/parse_args.c:839 msgid "create SELinux security context with specified type" msgstr "ствара СЕЛинукс сигурносни контекст са наведеном улогом" -#: src/parse_args.c:814 +#: src/parse_args.c:842 msgid "terminate command after the specified time limit" msgstr "окончава наредбу након наведеног временског ограничења" -#: src/parse_args.c:816 +#: src/parse_args.c:844 msgid "in list mode, display privileges for user" msgstr "у режиму списка, приказује привилегије за корисника" -#: src/parse_args.c:818 +#: src/parse_args.c:846 msgid "run command (or edit file) as specified user name or ID" msgstr "покреће наредбу (или уређује датотеку) као наведени корисник" -#: src/parse_args.c:820 +#: src/parse_args.c:848 msgid "display version information and exit" msgstr "приказује податке о издању и излази" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "update user's timestamp without running a command" msgstr "освежава кориснички запис датума и времена без покретања наредбе" -#: src/parse_args.c:824 +#: src/parse_args.c:852 msgid "stop processing command line arguments" msgstr "зауставља обрађивање аргумената линије наредби" @@ -680,16 +696,16 @@ msgid "unable to set key creation context to %s" msgstr "не могу да подесим контекст стварања кључа за %s" -#: src/sesh.c:78 +#: src/sesh.c:77 msgid "requires at least one argument" msgstr "захтева барем један аргумент" -#: src/sesh.c:107 +#: src/sesh.c:106 #, c-format msgid "invalid file descriptor number: %s" msgstr "неисправан број описника датотеке: %s" -#: src/sesh.c:121 +#: src/sesh.c:120 #, c-format msgid "unable to run %s as a login shell" msgstr "не могу да покренем „%s“ као шкољку пријављивања" @@ -742,124 +758,124 @@ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "упозорење, није успело додељивање контроле ресурса за пројекат „%s“" -#: src/sudo.c:219 +#: src/sudo.c:220 #, c-format msgid "Sudo version %s\n" msgstr "Судо издање %s\n" -#: src/sudo.c:221 +#: src/sudo.c:222 #, c-format msgid "Configure options: %s\n" msgstr "Опције подешавања: %s\n" -#: src/sudo.c:230 +#: src/sudo.c:231 msgid "fatal error, unable to load plugins" msgstr "кобна грешка, не могу да учитам прикључке" -#: src/sudo.c:275 +#: src/sudo.c:277 msgid "plugin did not return a command to execute" msgstr "прикључак није вратио наредбу за извршавање" -#: src/sudo.c:310 +#: src/sudo.c:312 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "неочекивани судо режим 0x%x" -#: src/sudo.c:543 +#: src/sudo.c:546 #, c-format msgid "you do not exist in the %s database" msgstr "не постојите у „%s“ бази података" -#: src/sudo.c:600 +#: src/sudo.c:603 msgid "unable to determine tty" msgstr "не могу да одредим конзолу" -#: src/sudo.c:905 +#: src/sudo.c:913 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s мора бити власништвo уида %d и треба да има подешен бит „setuid“" -#: src/sudo.c:908 +#: src/sudo.c:916 #, 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:914 +#: src/sudo.c:922 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "стварни уид није %d, већ сетуид администратор инсталиран судоом?" -#: src/sudo.c:930 +#: src/sudo.c:938 msgid "unable to set supplementary group IDs" msgstr "не могу да подесим додатне ИБ-ове групе" -#: src/sudo.c:937 +#: src/sudo.c:945 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "не могу да подесим ефективан гид да се покрене_као гид %u" -#: src/sudo.c:943 +#: src/sudo.c:951 #, c-format msgid "unable to set gid to runas gid %u" msgstr "не могу да подесим гид да се покрене као гид %u" -#: src/sudo.c:986 +#: src/sudo.c:994 #, c-format msgid "unexpected child termination condition: %d" msgstr "неочекивани услов завршетка потпроцеса: %d" -#: src/sudo.c:1095 +#: src/sudo.c:1103 msgid "unable to initialize policy plugin" msgstr "не могу да започнем прикључак сигурности" -#: src/sudo.c:1158 +#: src/sudo.c:1166 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "прикључак сигурности %s не садржи метод „check_policy“" -#: src/sudo.c:1173 src/sudo.c:1226 src/sudo.c:1270 +#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278 msgid "command rejected by policy" msgstr "наредба је одбачена политиком" -#: src/sudo.c:1178 src/sudo.c:1231 src/sudo.c:1275 +#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283 msgid "policy plugin error" msgstr "грешка прикључка политике" -#: src/sudo.c:1212 +#: src/sudo.c:1220 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "прикључак сигурности %s не подржава привилегије исписивања" -#: src/sudo.c:1256 +#: src/sudo.c:1264 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "прикључак сигурности %s не подржава опцију -v" -#: src/sudo.c:1294 +#: src/sudo.c:1302 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "прикључак сигурности %s не подржава опције -k/-K" -#: src/sudo.c:1423 +#: src/sudo.c:1431 #, c-format msgid "error initializing I/O plugin %s" msgstr "грешка приликом покретања У/И прикључка %s" -#: src/sudo.c:1577 +#: src/sudo.c:1585 #, c-format msgid "error initializing audit plugin %s" msgstr "грешка покретања аудит прикључка „%s“" -#: src/sudo.c:1755 +#: src/sudo.c:1763 #, c-format msgid "error initializing approval plugin %s" msgstr "грешка покретања прикључка одобравања „%s“" -#: src/sudo.c:1831 +#: src/sudo.c:1839 msgid "command rejected by approver" msgstr "наредбу је одбацио одобравач" -#: src/sudo.c:1840 +#: src/sudo.c:1848 msgid "approval plugin error" msgstr "грешка прикључка одобравања" @@ -896,7 +912,7 @@ msgid "%s unchanged" msgstr "%s је непромењен" -#: src/sudo_edit.c:706 src/sudo_edit.c:907 +#: src/sudo_edit.c:706 src/sudo_edit.c:909 #, c-format msgid "contents of edit session left in %s" msgstr "садржај сесије уређивања је остао у %s" @@ -909,33 +925,33 @@ msgid "sesh: unable to create temporary files" msgstr "sesh: не могу да направим привремене датотеке" -#: src/sudo_edit.c:818 src/sudo_edit.c:900 +#: src/sudo_edit.c:818 src/sudo_edit.c:902 msgid "sesh: killed by a signal" msgstr "sesh: убијено сигналом" -#: src/sudo_edit.c:820 src/sudo_edit.c:903 +#: src/sudo_edit.c:820 src/sudo_edit.c:905 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: непозната грешка „%d“" -#: src/sudo_edit.c:894 +#: src/sudo_edit.c:895 msgid "unable to copy temporary files back to their original location" msgstr "не могу да умножим привремене датотеке назад на њихова првобитна места" -#: src/sudo_edit.c:897 +#: src/sudo_edit.c:899 msgid "unable to copy some of the temporary files back to their original location" msgstr "не могу да умножим неке од привремених датотека назад на њихова првобитна места" -#: src/sudo_edit.c:941 +#: src/sudo_edit.c:943 #, c-format msgid "unable to change uid to root (%u)" msgstr "не могу да променим уид у администратора (%u)" -#: src/sudo_edit.c:958 +#: src/sudo_edit.c:960 msgid "plugin error: missing file list for sudoedit" msgstr "грешка прикључка: недостаје датотеа списка за уређивање судоа" -#: src/sudo_edit.c:1009 src/sudo_edit.c:1022 +#: src/sudo_edit.c:1011 src/sudo_edit.c:1024 msgid "unable to read the clock" msgstr "не могу да прочитам сат" @@ -951,25 +967,25 @@ msgid "unable to read password" msgstr "не могу да прочитам лозинку" -#: src/tgetpass.c:140 +#: 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“ да читате из стандардног улаза или подесите помоћника тражиоца пролаза" -#: src/tgetpass.c:150 +#: src/tgetpass.c:152 msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "није наведен програм за пропуштање, покушајте да подесите SUDO_ASKPASS" -#: src/tgetpass.c:325 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" msgstr "не могу да подесим гид у %u" -#: src/tgetpass.c:329 +#: src/tgetpass.c:331 #, c-format msgid "unable to set uid to %u" msgstr "не могу да подесим уид у %u" -#: src/tgetpass.c:334 +#: src/tgetpass.c:336 #, c-format msgid "unable to run %s" msgstr "не могу да покренем %s" diff -Nru sudo-1.9.4p2/po/sudo.pot sudo-1.9.5p2/po/sudo.pot --- sudo-1.9.4p2/po/sudo.pot 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/po/sudo.pot 2021-01-09 14:12:16.000000000 -0600 @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.3\n" +"Project-Id-Version: sudo 1.9.5\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2020-09-12 08:28-0600\n" +"POT-Creation-Date: 2021-01-09 12:59-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -30,8 +30,8 @@ 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:180 lib/util/sudo_conf.c:186 -#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 +#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198 +#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 #: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122 #: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455 #: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477 @@ -42,30 +42,32 @@ #: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263 #: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284 #: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473 -#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893 src/exec_pty.c:1046 -#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234 -#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255 -#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 -#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298 -#: src/exec_pty.c:1740 src/load_plugins.c:52 src/load_plugins.c:65 +#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 src/exec_pty.c:1053 +#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241 +#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 +#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 +#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305 +#: src/exec_pty.c:1747 src/load_plugins.c:52 src/load_plugins.c:65 #: src/load_plugins.c:163 src/load_plugins.c:188 src/load_plugins.c:223 -#: src/load_plugins.c:463 src/load_plugins.c:469 src/parse_args.c:181 +#: src/load_plugins.c:455 src/load_plugins.c:461 src/parse_args.c:181 #: src/parse_args.c:202 src/parse_args.c:275 src/parse_args.c:616 #: src/parse_args.c:638 src/parse_args.c:663 src/preserve_fds.c:46 #: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 -#: src/selinux.c:498 src/sesh.c:115 src/sudo.c:632 src/sudo.c:701 -#: src/sudo.c:711 src/sudo.c:732 src/sudo.c:751 src/sudo.c:760 src/sudo.c:769 -#: src/sudo.c:786 src/sudo.c:828 src/sudo.c:838 src/sudo.c:867 src/sudo.c:1053 -#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740 -#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854 -#: src/sudo_edit.c:976 src/sudo_edit.c:996 +#: src/selinux.c:498 src/sesh.c:110 src/sesh.c:143 src/sesh.c:149 +#: src/sesh.c:156 src/sesh.c:162 src/sesh.c:407 src/sudo.c:632 src/sudo.c:702 +#: src/sudo.c:712 src/sudo.c:733 src/sudo.c:752 src/sudo.c:761 src/sudo.c:770 +#: src/sudo.c:787 src/sudo.c:829 src/sudo.c:839 src/sudo.c:868 src/sudo.c:1054 +#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 +#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 +#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:682 src/sudo_edit.c:702 #, c-format msgid "%s: %s" msgstr "" #: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55 -#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272 -#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81 +#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284 +#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81 #: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132 #: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469 #: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491 @@ -75,26 +77,27 @@ #: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256 #: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277 #: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299 -#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893 src/exec_pty.c:1218 -#: src/exec_pty.c:1227 src/exec_pty.c:1234 src/exec_pty.c:1241 -#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262 -#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283 -#: src/exec_pty.c:1290 src/exec_pty.c:1298 src/exec_pty.c:1740 +#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900 src/exec_pty.c:1225 +#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248 +#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269 +#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290 +#: src/exec_pty.c:1297 src/exec_pty.c:1305 src/exec_pty.c:1747 #: src/load_plugins.c:163 src/load_plugins.c:188 src/load_plugins.c:223 -#: src/load_plugins.c:463 src/load_plugins.c:469 src/parse_args.c:181 +#: src/load_plugins.c:455 src/load_plugins.c:461 src/parse_args.c:181 #: src/parse_args.c:203 src/parse_args.c:275 src/parse_args.c:616 #: src/parse_args.c:638 src/parse_args.c:663 src/preserve_fds.c:46 #: src/preserve_fds.c:131 src/selinux.c:90 src/selinux.c:360 src/selinux.c:489 -#: src/selinux.c:498 src/sesh.c:115 src/sudo.c:235 src/sudo.c:632 -#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373 -#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263 -#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976 -#: src/sudo_edit.c:996 +#: src/selinux.c:498 src/sesh.c:110 src/sesh.c:408 src/sudo.c:236 +#: src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 +#: src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 +#: src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431 +#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546 +#: src/sudo_edit.c:682 src/sudo_edit.c:702 msgid "unable to allocate memory" msgstr "" -#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:369 +#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234 +#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559 #, c-format msgid "unable to open %s" msgstr "" @@ -104,7 +107,7 @@ msgid "unable to mkdir %s" msgstr "" -#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591 +#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150 #, c-format msgid "unable to stat %s" msgstr "" @@ -119,7 +122,7 @@ msgstr "" #: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148 -#: lib/util/strtonum.c:187 +#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156 msgid "invalid value" msgstr "" @@ -131,66 +134,80 @@ msgid "value too small" msgstr "" -#: lib/util/sudo_conf.c:205 +#: lib/util/sudo_conf.c:217 #, c-format msgid "invalid Path value \"%s\" in %s, line %u" msgstr "" -#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440 +#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452 #, c-format msgid "invalid value for %s \"%s\" in %s, line %u" msgstr "" -#: lib/util/sudo_conf.c:408 +#: lib/util/sudo_conf.c:420 #, c-format msgid "unsupported group source \"%s\" in %s, line %u" msgstr "" -#: lib/util/sudo_conf.c:424 +#: lib/util/sudo_conf.c:436 #, c-format msgid "invalid max groups \"%s\" in %s, line %u" msgstr "" -#: lib/util/sudo_conf.c:594 +#: lib/util/sudo_conf.c:666 #, c-format msgid "%s is not a regular file" msgstr "" -#: lib/util/sudo_conf.c:597 +#: lib/util/sudo_conf.c:669 src/copy_file.c:162 #, c-format msgid "%s is owned by uid %u, should be %u" msgstr "" -#: lib/util/sudo_conf.c:601 +#: lib/util/sudo_conf.c:673 #, c-format msgid "%s is world writable" msgstr "" -#: lib/util/sudo_conf.c:604 +#: lib/util/sudo_conf.c:676 #, c-format msgid "%s is group writable" msgstr "" -#: src/copy_file.c:91 +#: src/copy_file.c:93 #, c-format msgid "%s: truncate %s to zero bytes? (y/n) [n] " msgstr "" -#: src/copy_file.c:95 +#: src/copy_file.c:97 #, c-format msgid "not overwriting %s" msgstr "" -#: src/copy_file.c:117 +#: src/copy_file.c:119 #, c-format msgid "unable to read from %s" msgstr "" -#: src/copy_file.c:134 src/sudo_edit.c:695 +#: src/copy_file.c:136 src/sudo_edit.c:322 #, c-format msgid "unable to write to %s" msgstr "" +#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199 +#, c-format +msgid "%s: not a regular file" +msgstr "" + +#: src/copy_file.c:158 +#, c-format +msgid "%s: bad file mode: 0%o" +msgstr "" + +#: src/edit_open.c:265 +msgid "unable to restore current working directory" +msgstr "" + #: src/exec.c:128 #, c-format msgid "unknown login class %s" @@ -225,8 +242,8 @@ msgstr "" #: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566 -#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386 -#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153 +#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393 +#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153 #, c-format msgid "unable to set handler for signal %d" msgstr "" @@ -251,14 +268,14 @@ #: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244 #: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265 #: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286 -#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693 -#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899 -#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236 -#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257 -#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278 -#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693 -#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755 -#: src/exec_pty.c:1782 +#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700 +#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906 +#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243 +#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264 +#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285 +#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700 +#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762 +#: src/exec_pty.c:1789 msgid "unable to add event to queue" msgstr "" @@ -266,8 +283,8 @@ msgid "unable to set controlling tty" msgstr "" -#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465 -#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306 +#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472 +#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306 msgid "unable to create pipe" msgstr "" @@ -275,8 +292,8 @@ msgid "unable to receive message from parent" msgstr "" -#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544 -#: src/sudo_edit.c:735 src/tgetpass.c:310 +#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551 +#: src/sudo_edit.c:363 src/tgetpass.c:310 msgid "unable to fork" msgstr "" @@ -284,20 +301,20 @@ msgid "unable to restore tty label" msgstr "" -#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131 +#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132 #, c-format msgid "unable to execute %s" msgstr "" -#: src/exec_nopty.c:352 src/exec_pty.c:1395 +#: src/exec_nopty.c:352 src/exec_pty.c:1402 msgid "policy plugin failed session initialization" msgstr "" -#: src/exec_nopty.c:429 src/exec_pty.c:1632 +#: src/exec_nopty.c:429 src/exec_pty.c:1639 msgid "error in event loop" msgstr "" -#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101 +#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101 #, c-format msgid "unable to restore handler for signal %d" msgstr "" @@ -306,36 +323,36 @@ msgid "unable to allocate pty" msgstr "" -#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344 -#: src/exec_pty.c:394 +#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347 +#: src/exec_pty.c:398 msgid "I/O plugin error" msgstr "" -#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347 -#: src/exec_pty.c:397 +#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351 +#: src/exec_pty.c:402 msgid "command rejected by I/O plugin" msgstr "" -#: src/exec_pty.c:444 +#: src/exec_pty.c:449 msgid "error logging suspend" msgstr "" -#: src/exec_pty.c:477 +#: src/exec_pty.c:483 msgid "error changing window size" msgstr "" -#: src/exec_pty.c:1375 +#: src/exec_pty.c:1382 msgid "unable to create sockets" msgstr "" -#: src/exec_pty.c:1587 +#: src/exec_pty.c:1594 msgid "unable to send message to monitor process" msgstr "" #: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 #: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 -#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307 -#: src/load_plugins.c:354 +#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303 +#: src/load_plugins.c:350 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "" @@ -355,46 +372,47 @@ msgid "%s must be only be writable by owner" msgstr "" -#: src/load_plugins.c:247 src/load_plugins.c:322 +#: src/load_plugins.c:247 src/load_plugins.c:318 #, c-format msgid "ignoring duplicate plugin \"%s\" in %s, line %d" msgstr "" -#: src/load_plugins.c:289 +#: src/load_plugins.c:285 #, c-format msgid "unable to load %s: %s" msgstr "" -#: src/load_plugins.c:299 +#: src/load_plugins.c:295 #, c-format msgid "unable to find symbol \"%s\" in %s" msgstr "" -#: src/load_plugins.c:309 +#: src/load_plugins.c:305 #, c-format msgid "incompatible plugin major version %d (expected %d) found in %s" msgstr "" -#: src/load_plugins.c:327 +#: src/load_plugins.c:323 #, c-format msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "" -#: src/load_plugins.c:330 +#: src/load_plugins.c:326 msgid "only a single policy plugin may be specified" msgstr "" -#: src/load_plugins.c:356 +#: src/load_plugins.c:352 #, c-format msgid "unknown plugin type %d found in %s" msgstr "" -#: src/load_plugins.c:552 +#: src/load_plugins.c:535 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "" -#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479 +#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479 +#: src/sudo_edit.c:400 src/sudo_edit.c:408 #, c-format msgid "internal error, %s overflow" msgstr "" @@ -692,20 +710,40 @@ msgid "unable to set key creation context to %s" msgstr "" -#: src/sesh.c:77 +#: src/sesh.c:72 msgid "requires at least one argument" msgstr "" -#: src/sesh.c:106 +#: src/sesh.c:101 #, c-format msgid "invalid file descriptor number: %s" msgstr "" -#: src/sesh.c:120 +#: src/sesh.c:115 #, c-format msgid "unable to run %s as a login shell" msgstr "" +#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206 +#, c-format +msgid "%s: editing symbolic links is not permitted" +msgstr "" + +#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209 +#, c-format +msgid "%s: editing files in a writable directory is not permitted" +msgstr "" + +#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322 +#: src/sudo_edit.c:333 +#, c-format +msgid "contents of edit session left in %s" +msgstr "" + +#: src/sesh.c:412 src/sudo_edit.c:93 +msgid "unable to get group list" +msgstr "" + #: src/signal.c:79 #, c-format msgid "unable to save handler for signal %d" @@ -754,25 +792,25 @@ msgid "warning, resource control assignment failed for project \"%s\"" msgstr "" -#: src/sudo.c:220 +#: src/sudo.c:222 #, c-format msgid "Sudo version %s\n" msgstr "" -#: src/sudo.c:222 +#: src/sudo.c:224 #, c-format msgid "Configure options: %s\n" msgstr "" -#: src/sudo.c:231 +#: src/sudo.c:232 msgid "fatal error, unable to load plugins" msgstr "" -#: src/sudo.c:277 +#: src/sudo.c:278 msgid "plugin did not return a command to execute" msgstr "" -#: src/sudo.c:312 +#: src/sudo.c:310 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "" @@ -786,171 +824,166 @@ msgid "unable to determine tty" msgstr "" -#: src/sudo.c:913 +#: src/sudo.c:914 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "" -#: src/sudo.c:916 +#: src/sudo.c:917 #, 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:922 +#: src/sudo.c:923 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "" -#: src/sudo.c:938 +#: src/sudo.c:939 msgid "unable to set supplementary group IDs" msgstr "" -#: src/sudo.c:945 +#: src/sudo.c:946 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "" -#: src/sudo.c:951 +#: src/sudo.c:952 #, c-format msgid "unable to set gid to runas gid %u" msgstr "" -#: src/sudo.c:994 +#: src/sudo.c:995 #, c-format msgid "unexpected child termination condition: %d" msgstr "" -#: src/sudo.c:1103 +#: src/sudo.c:1104 msgid "unable to initialize policy plugin" msgstr "" -#: src/sudo.c:1166 +#: src/sudo.c:1167 #, c-format msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "" -#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278 +#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279 msgid "command rejected by policy" msgstr "" -#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283 +#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358 msgid "policy plugin error" msgstr "" -#: src/sudo.c:1220 +#: src/sudo.c:1221 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "" -#: src/sudo.c:1264 +#: src/sudo.c:1265 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "" -#: src/sudo.c:1302 +#: src/sudo.c:1303 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "" -#: src/sudo.c:1431 +#: src/sudo.c:1436 #, c-format msgid "error initializing I/O plugin %s" msgstr "" -#: src/sudo.c:1585 +#: src/sudo.c:1590 #, c-format msgid "error initializing audit plugin %s" msgstr "" -#: src/sudo.c:1763 +#: src/sudo.c:1668 #, c-format -msgid "error initializing approval plugin %s" +msgid "%s: unable to log error event%s%s" msgstr "" -#: src/sudo.c:1839 -msgid "command rejected by approver" +#: src/sudo.c:1703 +#, c-format +msgid "%s: unable to log accept event%s%s" msgstr "" -#: src/sudo.c:1848 -msgid "approval plugin error" +#: src/sudo.c:1708 src/sudo.c:1746 +msgid "audit plugin error" msgstr "" -#: src/sudo_edit.c:226 -msgid "no writable temporary directory found" +#: src/sudo.c:1741 +#, c-format +msgid "%s: unable to log reject event%s%s" msgstr "" -#: src/sudo_edit.c:351 -msgid "unable to restore current working directory" +#: src/sudo.c:1799 +#, c-format +msgid "error initializing approval plugin %s" msgstr "" -#: src/sudo_edit.c:566 src/sudo_edit.c:666 -#, c-format -msgid "%s: not a regular file" +#: src/sudo.c:1875 +msgid "command rejected by approver" msgstr "" -#: src/sudo_edit.c:573 -#, c-format -msgid "%s: editing symbolic links is not permitted" +#: src/sudo.c:1884 +msgid "approval plugin error" msgstr "" -#: src/sudo_edit.c:576 -#, c-format -msgid "%s: editing files in a writable directory is not permitted" +#: src/sudo_edit.c:112 +msgid "no writable temporary directory found" msgstr "" -#: src/sudo_edit.c:667 +#: src/sudo_edit.c:293 #, c-format msgid "%s left unmodified" msgstr "" -#: src/sudo_edit.c:680 src/sudo_edit.c:871 +#: src/sudo_edit.c:306 src/sudo_edit.c:571 #, c-format msgid "%s unchanged" msgstr "" -#: src/sudo_edit.c:706 src/sudo_edit.c:909 -#, c-format -msgid "contents of edit session left in %s" -msgstr "" - -#: src/sudo_edit.c:814 +#: src/sudo_edit.c:483 msgid "sesh: internal error: odd number of paths" msgstr "" -#: src/sudo_edit.c:816 +#: src/sudo_edit.c:485 msgid "sesh: unable to create temporary files" msgstr "" -#: src/sudo_edit.c:818 src/sudo_edit.c:902 +#: src/sudo_edit.c:487 src/sudo_edit.c:605 msgid "sesh: killed by a signal" msgstr "" -#: src/sudo_edit.c:820 src/sudo_edit.c:905 +#: src/sudo_edit.c:489 src/sudo_edit.c:608 #, c-format msgid "sesh: unknown error %d" msgstr "" -#: src/sudo_edit.c:895 +#: src/sudo_edit.c:598 msgid "unable to copy temporary files back to their original location" msgstr "" -#: src/sudo_edit.c:899 +#: src/sudo_edit.c:602 msgid "" "unable to copy some of the temporary files back to their original location" msgstr "" -#: src/sudo_edit.c:943 +#: src/sudo_edit.c:645 #, c-format msgid "unable to change uid to root (%u)" msgstr "" -#: src/sudo_edit.c:960 +#: src/sudo_edit.c:666 msgid "plugin error: missing file list for sudoedit" msgstr "" -#: src/sudo_edit.c:1011 src/sudo_edit.c:1024 +#: src/sudo_edit.c:717 src/sudo_edit.c:725 msgid "unable to read the clock" msgstr "" Binary files /tmp/iZuZwXTqez/sudo-1.9.4p2/po/sv.mo and /tmp/cZR8a_TUxF/sudo-1.9.5p2/po/sv.mo differ diff -Nru sudo-1.9.4p2/po/sv.po sudo-1.9.5p2/po/sv.po --- sudo-1.9.4p2/po/sv.po 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/po/sv.po 2021-01-09 14:12:16.000000000 -0600 @@ -6,19 +6,19 @@ # msgid "" msgstr "" -"Project-Id-Version: sudo 1.9.1b1\n" +"Project-Id-Version: sudo 1.9.3b1\n" "Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n" -"POT-Creation-Date: 2020-06-05 10:24-0600\n" -"PO-Revision-Date: 2020-06-07 19:16+0800\n" +"POT-Creation-Date: 2020-09-12 08:28-0600\n" +"PO-Revision-Date: 2020-12-26 03:44+0100\n" "Last-Translator: Sebastian Rasmussen \n" -"Language-Team: Swedish \n" +"Language-Team: Swedish \n" "Language: sv\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=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.3.1\n" +"X-Generator: Poedit 2.4.2\n" "X-Poedit-Bookmarks: -1,0,-1,-1,-1,-1,-1,-1,-1,-1\n" #: lib/util/aix.c:89 lib/util/aix.c:169 @@ -54,17 +54,17 @@ #: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290 #: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52 #: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:462 src/load_plugins.c:468 -#: src/parse_args.c:176 src/parse_args.c:197 src/parse_args.c:270 -#: src/parse_args.c:593 src/parse_args.c:615 src/parse_args.c:640 +#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469 +#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275 +#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 #: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:485 src/selinux.c:494 src/sesh.c:116 -#: src/sudo.c:624 src/sudo.c:693 src/sudo.c:703 src/sudo.c:724 src/sudo.c:743 -#: src/sudo.c:752 src/sudo.c:761 src/sudo.c:778 src/sudo.c:820 src/sudo.c:830 -#: src/sudo.c:859 src/sudo.c:1045 src/sudo.c:1067 src/sudo.c:1365 -#: src/sudo.c:1538 src/sudo.c:1732 src/sudo.c:2076 src/sudo_edit.c:263 -#: src/sudo_edit.c:767 src/sudo_edit.c:851 src/sudo_edit.c:971 -#: src/sudo_edit.c:991 +#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115 +#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751 +#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838 +#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373 +#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263 +#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976 +#: src/sudo_edit.c:996 #, c-format msgid "%s: %s" msgstr "%s: %s" @@ -87,20 +87,20 @@ #: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276 #: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298 #: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188 -#: src/load_plugins.c:223 src/load_plugins.c:462 src/load_plugins.c:468 -#: src/parse_args.c:176 src/parse_args.c:198 src/parse_args.c:270 -#: src/parse_args.c:593 src/parse_args.c:615 src/parse_args.c:640 +#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469 +#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275 +#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663 #: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90 -#: src/selinux.c:360 src/selinux.c:485 src/selinux.c:494 src/sesh.c:116 -#: src/sudo.c:234 src/sudo.c:624 src/sudo.c:859 src/sudo.c:1045 -#: src/sudo.c:1067 src/sudo.c:1365 src/sudo.c:1538 src/sudo.c:1732 -#: src/sudo.c:2076 src/sudo_edit.c:263 src/sudo_edit.c:767 src/sudo_edit.c:851 -#: src/sudo_edit.c:971 src/sudo_edit.c:991 +#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115 +#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053 +#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740 +#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854 +#: src/sudo_edit.c:976 src/sudo_edit.c:996 msgid "unable to allocate memory" msgstr "kunde inte allokera minne" #: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234 -#: src/selinux.c:264 src/sudo.c:367 +#: src/selinux.c:264 src/sudo.c:369 #, c-format msgid "unable to open %s" msgstr "kunde inte öppna %s" @@ -177,12 +177,22 @@ msgid "%s is group writable" msgstr "%s är skrivbar för gruppen" -#: src/copy_file.c:118 +#: src/copy_file.c:91 +#, c-format +msgid "%s: truncate %s to zero bytes? (y/n) [n] " +msgstr "%s: trunkera %s till noll byte? (y för ja/n för nej) [n] " + +#: src/copy_file.c:95 +#, c-format +msgid "not overwriting %s" +msgstr "skriver inte över %s" + +#: src/copy_file.c:117 #, c-format msgid "unable to read from %s" msgstr "kunde inte läsa från %s" -#: src/copy_file.c:122 src/sudo_edit.c:695 +#: src/copy_file.c:134 src/sudo_edit.c:695 #, c-format msgid "unable to write to %s" msgstr "kunde inte skriva till %s" @@ -263,7 +273,7 @@ msgstr "kan inte ställa in kontrollerande tty" #: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465 -#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:304 +#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306 msgid "unable to create pipe" msgstr "kunde inte skapa rör" @@ -272,7 +282,7 @@ msgstr "kan inte ta emot meddelande från förälder" #: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544 -#: src/sudo_edit.c:732 src/tgetpass.c:308 +#: src/sudo_edit.c:735 src/tgetpass.c:310 msgid "unable to fork" msgstr "kunde inte grena process" @@ -280,7 +290,7 @@ msgid "unable to restore tty label" msgstr "kan inte återställa tty-etikett" -#: src/exec_monitor.c:632 src/sesh.c:126 src/sudo.c:1123 +#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131 #, c-format msgid "unable to execute %s" msgstr "kunde inte köra %s" @@ -331,7 +341,7 @@ #: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85 #: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135 #: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307 -#: src/load_plugins.c:353 +#: src/load_plugins.c:354 #, c-format msgid "error in %s, line %d while loading plugin \"%s\"" msgstr "fel i %s, rad %d under inläsning av insticksmodul ”%s”" @@ -376,67 +386,67 @@ msgid "ignoring policy plugin \"%s\" in %s, line %d" msgstr "ignorerar policyinsticksmodul ”%s” i %s, rad %d" -#: src/load_plugins.c:329 +#: src/load_plugins.c:330 msgid "only a single policy plugin may be specified" msgstr "bara en policyinsticksmodul kan anges" -#: src/load_plugins.c:355 +#: src/load_plugins.c:356 #, c-format msgid "unknown plugin type %d found in %s" msgstr "okänd insticksmodulstyp %d hittad i %s" -#: src/load_plugins.c:541 +#: src/load_plugins.c:552 #, c-format msgid "policy plugin %s does not include a check_policy method" msgstr "policyinsticksmodul %s inkluderar inte en check_policy-metod" -#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:477 +#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479 #, c-format msgid "internal error, %s overflow" msgstr "internt fel, %s spill" -#: src/parse_args.c:218 +#: src/parse_args.c:223 #, c-format msgid "invalid environment variable name: %s" msgstr "ogiltigt namn på miljövariabel: %s" -#: src/parse_args.c:319 +#: src/parse_args.c:325 msgid "the argument to -C must be a number greater than or equal to 3" msgstr "argumentet till -C måste vara ett tal större än eller lika med 3" -#: src/parse_args.c:532 -msgid "you may not specify both the `-i' and `-s' options" -msgstr "du får inte ange flaggorna ”-i” och ”-s” samtidigt" - -#: src/parse_args.c:536 -msgid "you may not specify both the `-i' and `-E' options" -msgstr "du får inte ange flaggorna ”-i” och ”-E” samtidigt" - -#: src/parse_args.c:546 -msgid "the `-E' option is not valid in edit mode" -msgstr "flaggan ”-E” är inte giltig i redigeringsläget" +#: src/parse_args.c:552 +msgid "you may not specify both the -i and -s options" +msgstr "du får inte ange flaggorna -i och -s samtidigt" + +#: src/parse_args.c:557 +msgid "you may not specify both the -i and -E options" +msgstr "du får inte ange flaggorna -i och -E samtidigt" -#: src/parse_args.c:548 +#: src/parse_args.c:567 +msgid "the -E option is not valid in edit mode" +msgstr "flaggan -E är inte giltig i redigeringsläget" + +#: src/parse_args.c:570 msgid "you may not specify environment variables in edit mode" msgstr "du får inte ange miljövariabler i redigeringsläget" -#: src/parse_args.c:557 -msgid "the `-U' option may only be used with the `-l' option" -msgstr "flaggan ”-U” får bara användas med flaggan ”-l”" - -#: src/parse_args.c:561 -msgid "the `-A' and `-S' options may not be used together" -msgstr "flaggorna ”-A” och ”-S” får inte användas tillsammans" +#: src/parse_args.c:580 +msgid "the -U option may only be used with the -l option" +msgstr "flaggan -U får bara användas med flaggan -l" + +#: src/parse_args.c:584 +msgid "the -A and -S options may not be used together" +msgstr "flaggorna -A och -S får inte användas tillsammans" -#: src/parse_args.c:654 +#: src/parse_args.c:677 msgid "sudoedit is not supported on this platform" msgstr "sudoedit stöds inte på denna plattform" -#: src/parse_args.c:735 +#: src/parse_args.c:759 msgid "Only one of the -e, -h, -i, -K, -l, -s, -v or -V options may be specified" msgstr "Endast en av flaggorna -e, -h, -i, -K, -l, -s, -v eller -V får anges" -#: src/parse_args.c:749 +#: src/parse_args.c:773 #, c-format msgid "" "%s - edit files as another user\n" @@ -445,7 +455,7 @@ "%s - redigera filer som en annan användare\n" "\n" -#: src/parse_args.c:751 +#: src/parse_args.c:775 #, c-format msgid "" "%s - execute a command as another user\n" @@ -454,8 +464,7 @@ "%s - kör ett kommando som en annan användare\n" "\n" -#: src/parse_args.c:756 -#, c-format +#: src/parse_args.c:780 msgid "" "\n" "Options:\n" @@ -463,123 +472,131 @@ "\n" "Flaggor:\n" -#: src/parse_args.c:758 +#: src/parse_args.c:782 msgid "use a helper program for password prompting" msgstr "använd hjälpprogram för att fråga efter lösenord" -#: src/parse_args.c:761 +#: src/parse_args.c:785 msgid "use specified BSD authentication type" msgstr "använd angiven BSD-autentiseringstyp" -#: src/parse_args.c:764 +#: src/parse_args.c:788 msgid "run command in the background" msgstr "kör kommando i bakgrunden" -#: src/parse_args.c:766 +#: src/parse_args.c:790 msgid "ring bell when prompting" msgstr "ring i klockan vid fråga" -#: src/parse_args.c:768 +#: src/parse_args.c:792 msgid "close all file descriptors >= num" msgstr "stäng alla fildeskriptorer >= num" -#: src/parse_args.c:771 +#: src/parse_args.c:795 msgid "run command with the specified BSD login class" msgstr "kör kommando med den angivna BSD-inloggningsklassen" -#: src/parse_args.c:774 +#: src/parse_args.c:798 +msgid "change the working directory before running command" +msgstr "ändra arbetskatalog innan kommando körs" + +#: src/parse_args.c:800 msgid "preserve user environment when running command" msgstr "bevara användarens miljö när kommandot körs" -#: src/parse_args.c:776 +#: src/parse_args.c:802 msgid "preserve specific environment variables" msgstr "bevara specifika miljövariabler" -#: src/parse_args.c:778 +#: src/parse_args.c:804 msgid "edit files instead of running a command" msgstr "redigera filer istället för att köra ett kommando" -#: src/parse_args.c:780 +#: src/parse_args.c:806 msgid "run command as the specified group name or ID" msgstr "kör kommando som angivet gruppnamn eller ID" -#: src/parse_args.c:782 +#: src/parse_args.c:808 msgid "set HOME variable to target user's home dir" msgstr "ställ in HOME-variabeln till målanvändarens hemkatalog" -#: src/parse_args.c:784 +#: src/parse_args.c:810 msgid "display help message and exit" msgstr "visa hjälpmeddelande och avsluta" -#: src/parse_args.c:786 +#: src/parse_args.c:812 msgid "run command on host (if supported by plugin)" msgstr "kör kommando på värd (om det stöds av instick)" -#: src/parse_args.c:788 +#: src/parse_args.c:814 msgid "run login shell as the target user; a command may also be specified" msgstr "kör ett inloggningsskal som målanvändaren; ett kommando kan också anges" -#: src/parse_args.c:790 +#: src/parse_args.c:816 msgid "remove timestamp file completely" msgstr "ta bort tidsstämpelfil helt" -#: src/parse_args.c:792 +#: src/parse_args.c:818 msgid "invalidate timestamp file" msgstr "ogiltigförklara tidsstämpelfil" -#: src/parse_args.c:794 +#: src/parse_args.c:820 msgid "list user's privileges or check a specific command; use twice for longer format" msgstr "lista användarens rättigheter eller kontrollera ett specifikt kommando; använd två gånger för längre format" -#: src/parse_args.c:796 +#: src/parse_args.c:822 msgid "non-interactive mode, no prompts are used" msgstr "icke-interaktivt läge, inga frågor ställs" -#: src/parse_args.c:798 +#: src/parse_args.c:824 msgid "preserve group vector instead of setting to target's" msgstr "behåll gruppvektor istället för att ställa in den till målets" -#: src/parse_args.c:800 +#: src/parse_args.c:826 msgid "use the specified password prompt" msgstr "använd angiven lösenordsprompt" -#: src/parse_args.c:803 +#: src/parse_args.c:828 +msgid "change the root directory before running command" +msgstr "ändra rotkatalog innan kommando körs" + +#: src/parse_args.c:831 msgid "create SELinux security context with specified role" msgstr "skapa SELinux-säkerhetskontext med angiven roll" -#: src/parse_args.c:806 +#: src/parse_args.c:834 msgid "read password from standard input" msgstr "läs lösenord från standard in" -#: src/parse_args.c:808 +#: src/parse_args.c:836 msgid "run shell as the target user; a command may also be specified" msgstr "kör skal som målanvändaren; ett kommando kan också anges" -#: src/parse_args.c:811 +#: src/parse_args.c:839 msgid "create SELinux security context with specified type" msgstr "skapa SELinux-säkerhetskontext med angiven typ" -#: src/parse_args.c:814 +#: src/parse_args.c:842 msgid "terminate command after the specified time limit" msgstr "avsluta kommando efter den angivna tidsgränsen" -#: src/parse_args.c:816 +#: src/parse_args.c:844 msgid "in list mode, display privileges for user" msgstr "i listläge, visa rättigheter för användaren" -#: src/parse_args.c:818 +#: src/parse_args.c:846 msgid "run command (or edit file) as specified user name or ID" msgstr "kör kommando (eller redigera fil) som angivet användarnamn eller ID" -#: src/parse_args.c:820 +#: src/parse_args.c:848 msgid "display version information and exit" msgstr "visa versionsinformation och avsluta" -#: src/parse_args.c:822 +#: src/parse_args.c:850 msgid "update user's timestamp without running a command" msgstr "uppdatera användarens tidsstämpel utan att köra ett kommando" -#: src/parse_args.c:824 +#: src/parse_args.c:852 msgid "stop processing command line arguments" msgstr "sluta behandla kommandoradsargument" @@ -684,16 +701,16 @@ msgid "unable to set key creation context to %s" msgstr "kan inte ställa in kontext för nyckelskapande till %s" -#: src/sesh.c:78 +#: src/sesh.c:77 msgid "requires at least one argument" msgstr "kräver minst ett argument" -#: src/sesh.c:107 +#: src/sesh.c:106 #, c-format msgid "invalid file descriptor number: %s" msgstr "ogiltigt fildeskriptornummer: %s" -#: src/sesh.c:121 +#: src/sesh.c:120 #, c-format msgid "unable to run %s as a login shell" msgstr "kunde inte köra %s som ett inloggningsskal" @@ -721,149 +738,149 @@ msgid "could not join project \"%s\"" msgstr "kunde inte gå med i projekt ”%s”" -#: src/solaris.c:87 +#: src/solaris.c:89 #, c-format msgid "no resource pool accepting default bindings exists for project \"%s\"" msgstr "ingen resurspool som accepterar standardbindningar existerar för projekt ”%s”" -#: src/solaris.c:91 +#: src/solaris.c:93 #, c-format msgid "specified resource pool does not exist for project \"%s\"" msgstr "angiven resurspool finns inte för projekt ”%s”" -#: src/solaris.c:95 +#: src/solaris.c:97 #, c-format msgid "could not bind to default resource pool for project \"%s\"" msgstr "kunde inte binda till standardresurspool för projekt ”%s”" -#: src/solaris.c:101 +#: src/solaris.c:104 #, c-format msgid "setproject failed for project \"%s\"" msgstr "setproject misslyckades för projekt ”%s”" -#: src/solaris.c:103 +#: src/solaris.c:106 #, c-format msgid "warning, resource control assignment failed for project \"%s\"" msgstr "varning, tilldelning av resurskontroll misslyckades för projekt ”%s”" -#: src/sudo.c:219 +#: src/sudo.c:220 #, c-format msgid "Sudo version %s\n" msgstr "Sudo version %s\n" -#: src/sudo.c:221 +#: src/sudo.c:222 #, c-format msgid "Configure options: %s\n" msgstr "Konfigurationsflaggor: %s\n" -#: src/sudo.c:230 +#: src/sudo.c:231 msgid "fatal error, unable to load plugins" msgstr "ödesdigert fel, kunde inte läsa in insticksmoduler" -#: src/sudo.c:275 +#: src/sudo.c:277 msgid "plugin did not return a command to execute" msgstr "insticksmodul returnerade ett kommando att exekvera" -#: src/sudo.c:310 +#: src/sudo.c:312 #, c-format msgid "unexpected sudo mode 0x%x" msgstr "oväntat sudo-läge 0x%x" -#: src/sudo.c:543 +#: src/sudo.c:546 #, c-format msgid "you do not exist in the %s database" msgstr "du existerar inte i %s-databasen" -#: src/sudo.c:600 +#: src/sudo.c:603 msgid "unable to determine tty" msgstr "kan inte detektera tty" -#: src/sudo.c:905 +#: src/sudo.c:913 #, c-format msgid "%s must be owned by uid %d and have the setuid bit set" msgstr "%s måste ägas av uid %d och ha setuid-biten inställd" -#: src/sudo.c:908 +#: src/sudo.c:916 #, 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 "effektivt uid är inte %d, är %s på ett filsystem med flaggan ”nosuid” inställd eller ett NFS-filsystem utan root-rättigheter?" -#: src/sudo.c:914 +#: src/sudo.c:922 #, c-format msgid "effective uid is not %d, is sudo installed setuid root?" msgstr "effektivt uid är inte %d, har sudo installerats som setuid root?" -#: src/sudo.c:930 +#: src/sudo.c:938 msgid "unable to set supplementary group IDs" msgstr "kan inte ställa in kompletterande grupp-ID:n" -#: src/sudo.c:937 +#: src/sudo.c:945 #, c-format msgid "unable to set effective gid to runas gid %u" msgstr "kunde inte ställa in effektiv gid till runas gid %u" -#: src/sudo.c:943 +#: src/sudo.c:951 #, c-format msgid "unable to set gid to runas gid %u" msgstr "kunde inte ställa in gid för runas gid %u" -#: src/sudo.c:986 +#: src/sudo.c:994 #, c-format msgid "unexpected child termination condition: %d" msgstr "oväntat barnavslutsvillkor: %d" -#: src/sudo.c:1095 +#: src/sudo.c:1103 msgid "unable to initialize policy plugin" msgstr "kan inte initiera policy-instick" -#: src/sudo.c:1158 +#: src/sudo.c:1166 #, c-format -msgid "policy plugin %s is missing the `check_policy' method" +msgid "policy plugin %s is missing the \"check_policy\" method" msgstr "policyinsticksmodul %s saknar metoden ”check_policy”" -#: src/sudo.c:1173 src/sudo.c:1226 src/sudo.c:1270 +#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278 msgid "command rejected by policy" msgstr "kommando avböjt enligt policy" -#: src/sudo.c:1178 src/sudo.c:1231 src/sudo.c:1275 +#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283 msgid "policy plugin error" msgstr "fel i policyinsticksmodul" -#: src/sudo.c:1212 +#: src/sudo.c:1220 #, c-format msgid "policy plugin %s does not support listing privileges" msgstr "policyinsticksmodul %s har inte stöd för att lista rättigheter" -#: src/sudo.c:1256 +#: src/sudo.c:1264 #, c-format msgid "policy plugin %s does not support the -v option" msgstr "policyinsticksmodul %s har inte stöd för flaggan -v" -#: src/sudo.c:1294 +#: src/sudo.c:1302 #, c-format msgid "policy plugin %s does not support the -k/-K options" msgstr "policyinsticksmodul %s har inte stöd för flaggorna -k/-K" -#: src/sudo.c:1423 +#: src/sudo.c:1431 #, c-format msgid "error initializing I/O plugin %s" msgstr "fel vid initiering av I/O-insticksmodul %s" -#: src/sudo.c:1577 +#: src/sudo.c:1585 #, c-format msgid "error initializing audit plugin %s" msgstr "fel vid initiering av granskningsinsticksmodul %s" -#: src/sudo.c:1755 +#: src/sudo.c:1763 #, c-format msgid "error initializing approval plugin %s" msgstr "fel vid initiering av godkänningsinsticksmodul %s" -#: src/sudo.c:1831 +#: src/sudo.c:1839 msgid "command rejected by approver" msgstr "kommando avböjt av godkännare" -#: src/sudo.c:1840 +#: src/sudo.c:1848 msgid "approval plugin error" msgstr "fel i godkänningsinsticksmodul" @@ -895,51 +912,51 @@ msgid "%s left unmodified" msgstr "%s lämnad oförändrad" -#: src/sudo_edit.c:680 src/sudo_edit.c:868 +#: src/sudo_edit.c:680 src/sudo_edit.c:871 #, c-format msgid "%s unchanged" msgstr "%s oförändrad" -#: src/sudo_edit.c:703 src/sudo_edit.c:904 +#: src/sudo_edit.c:706 src/sudo_edit.c:909 #, c-format msgid "contents of edit session left in %s" msgstr "innehåll av redigeringssession finns kvar i %s" -#: src/sudo_edit.c:811 +#: src/sudo_edit.c:814 msgid "sesh: internal error: odd number of paths" msgstr "sesh: internt fel: udda antal sökvägar" -#: src/sudo_edit.c:813 +#: src/sudo_edit.c:816 msgid "sesh: unable to create temporary files" msgstr "sesh: kunde inte skapa temporärfiler" -#: src/sudo_edit.c:815 src/sudo_edit.c:897 +#: src/sudo_edit.c:818 src/sudo_edit.c:902 msgid "sesh: killed by a signal" -msgstr "sesh: dödad en signal" +msgstr "sesh: dödad av en signal" -#: src/sudo_edit.c:817 src/sudo_edit.c:900 +#: src/sudo_edit.c:820 src/sudo_edit.c:905 #, c-format msgid "sesh: unknown error %d" msgstr "sesh: okänt fel %d" -#: src/sudo_edit.c:891 +#: src/sudo_edit.c:895 msgid "unable to copy temporary files back to their original location" msgstr "kan inte kopiera temporära filer tillbaka till deras originalplats" -#: src/sudo_edit.c:894 +#: src/sudo_edit.c:899 msgid "unable to copy some of the temporary files back to their original location" msgstr "kan inte kopiera vissa av de temporära filerna tillbaka till deras originalplats" -#: src/sudo_edit.c:938 +#: src/sudo_edit.c:943 #, c-format msgid "unable to change uid to root (%u)" msgstr "kunde inte ändra uid till root (%u)" -#: src/sudo_edit.c:955 +#: src/sudo_edit.c:960 msgid "plugin error: missing file list for sudoedit" msgstr "insticksfel: fillista för sudoedit saknas" -#: src/sudo_edit.c:1006 src/sudo_edit.c:1019 +#: src/sudo_edit.c:1011 src/sudo_edit.c:1024 msgid "unable to read the clock" msgstr "kunde inte läsa klockan" @@ -955,25 +972,25 @@ msgid "unable to read password" msgstr "kan inte läsa lösenord" -#: src/tgetpass.c:140 +#: 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 "en terminal krävs för att läsa lösenordet; använd antingen flaggan -S för att läsa från standard in, eller konfigurera en askpass-hjälpare" -#: src/tgetpass.c:150 +#: src/tgetpass.c:152 msgid "no askpass program specified, try setting SUDO_ASKPASS" msgstr "inget askpass-program angivet, prova att ställ in SUDO_ASKPASS" -#: src/tgetpass.c:325 +#: src/tgetpass.c:327 #, c-format msgid "unable to set gid to %u" msgstr "kunde inte ställa in gid till %u" -#: src/tgetpass.c:329 +#: src/tgetpass.c:331 #, c-format msgid "unable to set uid to %u" msgstr "kunde inte ställa in uid till %u" -#: src/tgetpass.c:334 +#: src/tgetpass.c:336 #, c-format msgid "unable to run %s" msgstr "kunde inte köra %s" diff -Nru sudo-1.9.4p2/scripts/mkdep.pl sudo-1.9.5p2/scripts/mkdep.pl --- sudo-1.9.4p2/scripts/mkdep.pl 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/scripts/mkdep.pl 2021-01-09 14:12:16.000000000 -0600 @@ -116,7 +116,7 @@ # XXX - fill in AUTH_OBJS from contents of the auth dir instead $makefile =~ s:\@AUTH_OBJS\@:afs.lo aix_auth.lo bsdauth.lo dce.lo fwtk.lo getspwuid.lo kerb5.lo pam.lo passwd.lo rfc1938.lo secureware.lo securid5.lo sia.lo:; $makefile =~ s:\@DIGEST\@:digest.lo digest_openssl.lo digest_gcrypt.lo:; - $makefile =~ s:\@LTLIBOBJS\@:arc4random.lo arc4random_uniform.lo cfmakeraw.lo closefrom.lo dup3.lo explicit_bzero.lo fchmodat.lo freezero.lo fstatat.lo fnmatch.lo getaddrinfo.lo getcwd.lo getentropy.lo getgrouplist.lo getdelim.lo getopt_long.lo getusershell.lo glob.lo inet_ntop_lo inet_pton.lo isblank.lo memrchr.lo mksiglist.lo mksigname.lo mktemp.lo nanosleep.lo openat.lo pipe2.lo pw_dup.lo reallocarray.lo sha2.lo sig2str.lo siglist.lo signame.lo snprintf.lo str2sig.lo strlcat.lo strlcpy.lo strndup.lo strnlen.lo strsignal.lo unlinkat.lo utimens.lo vsyslog.lo:; + $makefile =~ s:\@LTLIBOBJS\@:arc4random.lo arc4random_uniform.lo cfmakeraw.lo closefrom.lo dup3.lo explicit_bzero.lo fchmodat.lo freezero.lo fstatat.lo fnmatch.lo getaddrinfo.lo getcwd.lo getentropy.lo getgrouplist.lo getdelim.lo getopt_long.lo getusershell.lo glob.lo inet_ntop_lo inet_pton.lo isblank.lo memrchr.lo mksiglist.lo mksigname.lo mktemp.lo nanosleep.lo openat.lo pipe2.lo pread.lo pwrite.lo pw_dup.lo reallocarray.lo sha2.lo sig2str.lo siglist.lo signame.lo snprintf.lo str2sig.lo strlcat.lo strlcpy.lo strndup.lo strnlen.lo strsignal.lo unlinkat.lo utimens.lo vsyslog.lo:; # Parse OBJS lines my %objs; diff -Nru sudo-1.9.4p2/src/copy_file.c sudo-1.9.5p2/src/copy_file.c --- sudo-1.9.4p2/src/copy_file.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/src/copy_file.c 2021-01-11 19:48:04.000000000 -0600 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2020 Todd C. Miller + * Copyright (c) 2020-2021 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 @@ -23,6 +23,8 @@ #include +#include + #include #include #include @@ -134,3 +136,33 @@ sudo_warn(U_("unable to write to %s"), dst); debug_return_int(-1); } + +bool +sudo_check_temp_file(int tfd, const char *tfile, uid_t uid, struct stat *sb) +{ + struct stat sbuf; + debug_decl(sudo_check_temp_file, SUDO_DEBUG_UTIL); + + if (sb == NULL) + sb = &sbuf; + + if (fstat(tfd, sb) == -1) { + sudo_warn(U_("unable to stat %s"), tfile); + debug_return_bool(false); + } + if (!S_ISREG(sb->st_mode)) { + sudo_warnx(U_("%s: not a regular file"), tfile); + debug_return_bool(false); + } + if ((sb->st_mode & ALLPERMS) != (S_IRUSR|S_IWUSR)) { + sudo_warnx(U_("%s: bad file mode: 0%o"), tfile, + (unsigned int)(sb->st_mode & ALLPERMS)); + debug_return_bool(false); + } + if (sb->st_uid != uid) { + sudo_warnx(U_("%s is owned by uid %u, should be %u"), + tfile, (unsigned int)sb->st_uid, (unsigned int)uid); + debug_return_bool(false); + } + debug_return_bool(true); +} diff -Nru sudo-1.9.4p2/src/edit_open.c sudo-1.9.5p2/src/edit_open.c --- sudo-1.9.4p2/src/edit_open.c 1969-12-31 18:00:00.000000000 -0600 +++ sudo-1.9.5p2/src/edit_open.c 2021-01-11 19:48:04.000000000 -0600 @@ -0,0 +1,456 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2015-2021 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 +#include +#include + +#include "sudo.h" +#include "sudo_edit.h" + +#if defined(HAVE_SETRESUID) || defined(HAVE_SETREUID) || defined(HAVE_SETEUID) + +void +switch_user(uid_t euid, gid_t egid, int ngroups, GETGROUPS_T *groups) +{ + int serrno = errno; + debug_decl(switch_user, SUDO_DEBUG_EDIT); + + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "set uid:gid to %u:%u(%u)", (unsigned int)euid, (unsigned int)egid, + ngroups > 0 ? (unsigned int)groups[0] : (unsigned int)egid); + + /* When restoring root, change euid first; otherwise change it last. */ + if (euid == ROOT_UID) { + if (seteuid(ROOT_UID) != 0) + sudo_fatal("seteuid(ROOT_UID)"); + } + if (setegid(egid) != 0) + sudo_fatal("setegid(%d)", (int)egid); + if (ngroups != -1) { + if (sudo_setgroups(ngroups, groups) != 0) + sudo_fatal("setgroups"); + } + if (euid != ROOT_UID) { + if (seteuid(euid) != 0) + sudo_fatal("seteuid(%u)", (unsigned int)euid); + } + errno = serrno; + + debug_return; +} + +#if defined(HAVE_FACCESSAT) && defined(AT_EACCESS) +/* + * Returns true if the open directory fd is owned or writable by the user. + */ +int +dir_is_writable(int dfd, struct sudo_cred *user_cred, struct sudo_cred *cur_cred) +{ + struct stat sb; + int rc; + debug_decl(dir_is_writable, SUDO_DEBUG_EDIT); + + if (fstat(dfd, &sb) == -1) + debug_return_int(-1); + + /* If the user owns the dir we always consider it writable. */ + if (sb.st_uid == user_cred->uid) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "user uid %u matches directory uid %u", + (unsigned int)user_cred->uid, (unsigned int)sb.st_uid); + debug_return_int(true); + } + + /* Change uid/gid/groups to invoking user, usually needs root perms. */ + if (cur_cred->euid != ROOT_UID) { + if (seteuid(ROOT_UID) != 0) + sudo_fatal("seteuid(ROOT_UID)"); + } + switch_user(user_cred->uid, user_cred->gid, user_cred->ngroups, + user_cred->groups); + + /* Access checks are done using the euid/egid and group vector. */ + rc = faccessat(dfd, ".", W_OK, AT_EACCESS); + + /* Restore uid/gid/groups, may need root perms. */ + if (user_cred->uid != ROOT_UID) { + if (seteuid(ROOT_UID) != 0) + sudo_fatal("seteuid(ROOT_UID)"); + } + switch_user(cur_cred->euid, cur_cred->egid, cur_cred->ngroups, + cur_cred->groups); + + if (rc == 0) + debug_return_int(true); + if (errno == EACCES || errno == EROFS) + debug_return_int(false); + debug_return_int(-1); +} +#else +static bool +group_matches(gid_t target, struct sudo_cred *cred) +{ + int i; + debug_decl(group_matches, SUDO_DEBUG_EDIT); + + if (target == cred->gid) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "user gid %u matches directory gid %u", (unsigned int)cred->gid, + (unsigned int)target); + debug_return_bool(true); + } + for (i = 0; i < cred->ngroups; i++) { + if (target == cred->groups[i]) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "user gid %u matches directory gid %u", + (unsigned int)cred->groups[i], (unsigned int)target); + debug_return_bool(true); + } + } + debug_return_bool(false); +} + +/* + * Returns true if the open directory fd is owned or writable by the user. + */ +int +dir_is_writable(int dfd, struct sudo_cred *user_cred, struct sudo_cred *cur_cred) +{ + struct stat sb; + debug_decl(dir_is_writable, SUDO_DEBUG_EDIT); + + if (fstat(dfd, &sb) == -1) + debug_return_int(-1); + + /* If the user owns the dir we always consider it writable. */ + if (sb.st_uid == user_cred->uid) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "user uid %u matches directory uid %u", + (unsigned int)user_cred->uid, (unsigned int)sb.st_uid); + debug_return_int(true); + } + + /* Other writable? */ + if (ISSET(sb.st_mode, S_IWOTH)) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "directory is writable by other"); + debug_return_int(true); + } + + /* Group writable? */ + if (ISSET(sb.st_mode, S_IWGRP)) { + if (group_matches(sb.st_gid, user_cred)) { + sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, + "directory is writable by one of the user's groups"); + debug_return_int(true); + } + } + + errno = EACCES; + debug_return_int(false); +} +#endif /* HAVE_FACCESSAT && AT_EACCESS */ + +#ifdef O_NOFOLLOW +static int +sudo_edit_openat_nofollow(int dfd, char *path, int oflags, mode_t mode) +{ + debug_decl(sudo_edit_openat_nofollow, SUDO_DEBUG_EDIT); + + debug_return_int(openat(dfd, path, oflags|O_NOFOLLOW, mode)); +} +#else +/* + * Returns true if fd and path don't match or path is a symlink. + * Used on older systems without O_NOFOLLOW. + */ +static bool +sudo_edit_is_symlink(int fd, char *path) +{ + struct stat sb1, sb2; + debug_decl(sudo_edit_is_symlink, SUDO_DEBUG_EDIT); + + /* + * Treat [fl]stat() failure like there was a symlink. + */ + if (fstat(fd, &sb1) == -1 || lstat(path, &sb2) == -1) + debug_return_bool(true); + + /* + * Make sure we did not open a link and that what we opened + * matches what is currently on the file system. + */ + if (S_ISLNK(sb2.st_mode) || + sb1.st_dev != sb2.st_dev || sb1.st_ino != sb2.st_ino) { + debug_return_bool(true); + } + + debug_return_bool(false); +} + +static int +sudo_edit_openat_nofollow(int dfd, char *path, int oflags, mode_t mode) +{ + int fd = -1, odfd = -1; + struct stat sb; + debug_decl(sudo_edit_openat_nofollow, SUDO_DEBUG_EDIT); + + /* Save cwd and chdir to dfd */ + if ((odfd = open(".", O_RDONLY)) == -1) + debug_return_int(-1); + if (fchdir(dfd) == -1) { + close(odfd); + debug_return_int(-1); + } + + /* + * Check if path is a symlink. This is racey but we detect whether + * we lost the race in sudo_edit_is_symlink() after the open. + */ + if (lstat(path, &sb) == -1 && errno != ENOENT) + goto done; + if (S_ISLNK(sb.st_mode)) { + errno = ELOOP; + goto done; + } + + fd = open(path, oflags, mode); + if (fd == -1) + goto done; + + /* + * Post-open symlink check. This will leave a zero-length file if + * O_CREAT was specified but it is too dangerous to try and remove it. + */ + if (sudo_edit_is_symlink(fd, path)) { + close(fd); + fd = -1; + errno = ELOOP; + } + +done: + /* Restore cwd */ + if (odfd != -1) { + if (fchdir(odfd) == -1) + sudo_fatal("%s", U_("unable to restore current working directory")); + close(odfd); + } + + debug_return_int(fd); +} +#endif /* O_NOFOLLOW */ + +static int +sudo_edit_open_nonwritable(char *path, int oflags, mode_t mode, + struct sudo_cred *user_cred, struct sudo_cred *cur_cred) +{ + const int dflags = DIR_OPEN_FLAGS; + int dfd, fd, is_writable; + debug_decl(sudo_edit_open_nonwritable, SUDO_DEBUG_EDIT); + + if (path[0] == '/') { + dfd = open("/", dflags); + path++; + } else { + dfd = open(".", dflags); + if (path[0] == '.' && path[1] == '/') + path += 2; + } + if (dfd == -1) + debug_return_int(-1); + + for (;;) { + char *slash; + int subdfd; + + /* + * Look up one component at a time, avoiding symbolic links in + * writable directories. + */ + is_writable = dir_is_writable(dfd, user_cred, cur_cred); + if (is_writable == -1) { + close(dfd); + debug_return_int(-1); + } + + path += strspn(path, "/"); + slash = strchr(path, '/'); + if (slash == NULL) + break; + *slash = '\0'; + if (is_writable) + subdfd = sudo_edit_openat_nofollow(dfd, path, dflags, 0); + else + subdfd = openat(dfd, path, dflags, 0); + *slash = '/'; /* restore path */ + close(dfd); + if (subdfd == -1) + debug_return_int(-1); + path = slash + 1; + dfd = subdfd; + } + + if (is_writable) { + close(dfd); + errno = EISDIR; + debug_return_int(-1); + } + + /* + * For "sudoedit /" we will receive ENOENT from openat() and sudoedit + * will try to create a file with an empty name. We treat an empty + * path as the cwd so sudoedit can give a sensible error message. + */ + fd = openat(dfd, *path ? path : ".", oflags, mode); + close(dfd); + debug_return_int(fd); +} + +#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) +{ + int fd; + debug_decl(sudo_edit_open, SUDO_DEBUG_EDIT); + + if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW)) + oflags |= O_NOFOLLOW; + if (ISSET(sflags, CD_SUDOEDIT_CHECKDIR) && user_cred->uid != ROOT_UID) { + fd = sudo_edit_open_nonwritable(path, oflags|O_NONBLOCK, mode, + user_cred, cur_cred); + } else { + fd = open(path, oflags|O_NONBLOCK, mode); + } + if (fd != -1 && !ISSET(oflags, O_NONBLOCK)) + (void) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK); + debug_return_int(fd); +} +#else +int +sudo_edit_open(char *path, int oflags, mode_t mode, int sflags, + struct sudo_cred *user_cred, struct sudo_cred *cur_cred) +{ + struct stat sb; + int fd; + debug_decl(sudo_edit_open, SUDO_DEBUG_EDIT); + + /* + * Check if path is a symlink. This is racey but we detect whether + * we lost the race in sudo_edit_is_symlink() after the file is opened. + */ + if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW)) { + if (lstat(path, &sb) == -1 && errno != ENOENT) + debug_return_int(-1); + if (S_ISLNK(sb.st_mode)) { + errno = ELOOP; + debug_return_int(-1); + } + } + + if (ISSET(sflags, CD_SUDOEDIT_CHECKDIR) && user_cred->uid != ROOT_UID) { + fd = sudo_edit_open_nonwritable(path, oflags|O_NONBLOCK, mode, + user_cred, cur_cred); + } else { + fd = open(path, oflags|O_NONBLOCK, mode); + } + if (fd == -1) + debug_return_int(-1); + if (!ISSET(oflags, O_NONBLOCK)) + (void) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK); + + /* + * Post-open symlink check. This will leave a zero-length file if + * O_CREAT was specified but it is too dangerous to try and remove it. + */ + if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW) && sudo_edit_is_symlink(fd, path)) { + close(fd); + fd = -1; + errno = ELOOP; + } + + debug_return_int(fd); +} +#endif /* O_NOFOLLOW */ + +/* + * Verify that the parent dir of a new file exists and is not writable + * by the user. This fails early so the user knows ahead of time if the + * edit won't succeed. Additional checks are performed when copying the + * temporary file back to the origin so there are no TOCTOU issues. + * 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) +{ + const int serrno = errno; + struct stat sb; + bool ret = false; + char *slash; + int dfd; + debug_decl(sudo_edit_parent_valid, SUDO_DEBUG_EDIT); + + /* Get dirname of path (the slash is restored later). */ + slash = strrchr(path, '/'); + if (slash == NULL) { + /* cwd */ + path = "."; + } else if (slash == path) { + path = "/"; + slash = NULL; + } else { + *slash = '\0'; + } + + /* + * The parent directory is allowed to be a symbolic link unless + * *its* parent is writable and CD_SUDOEDIT_CHECK is set. + */ + dfd = sudo_edit_open(path, DIR_OPEN_FLAGS, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, + sflags|CD_SUDOEDIT_FOLLOW, user_cred, cur_cred); + if (dfd != -1) { + if (fstat(dfd, &sb) == 0 && S_ISDIR(sb.st_mode)) + ret = true; + close(dfd); + } + if (slash != NULL) + *slash = '/'; + + /* Restore errno. */ + errno = serrno; + + debug_return_bool(ret); +} + +#endif /* HAVE_SETRESUID || HAVE_SETREUID || HAVE_SETEUID */ diff -Nru sudo-1.9.4p2/src/exec.c sudo-1.9.5p2/src/exec.c --- sudo-1.9.4p2/src/exec.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/src/exec.c 2021-01-09 14:12:16.000000000 -0600 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2009-2020 Todd C. Miller + * Copyright (c) 2009-2021 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 @@ -179,22 +179,22 @@ unlimit_nproc(); #if defined(HAVE_SETRESUID) - if (setresuid(details->uid, details->euid, details->euid) != 0) { + if (setresuid(details->cred.uid, details->cred.euid, details->cred.euid) != 0) { sudo_warn(U_("unable to change to runas uid (%u, %u)"), - (unsigned int)details->uid, (unsigned int)details->euid); + (unsigned int)details->cred.uid, (unsigned int)details->cred.euid); goto done; } #elif defined(HAVE_SETREUID) - if (setreuid(details->uid, details->euid) != 0) { + if (setreuid(details->cred.uid, details->cred.euid) != 0) { sudo_warn(U_("unable to change to runas uid (%u, %u)"), - (unsigned int)details->uid, (unsigned int)details->euid); + (unsigned int)details->cred.uid, (unsigned int)details->cred.euid); goto done; } #else /* Cannot support real user-ID that is different from effective user-ID. */ - if (setuid(details->euid) != 0) { + if (setuid(details->cred.euid) != 0) { sudo_warn(U_("unable to change to runas uid (%u, %u)"), - (unsigned int)details->euid, (unsigned int)details->euid); + (unsigned int)details->cred.euid, (unsigned int)details->cred.euid); goto done; } #endif /* !HAVE_SETRESUID && !HAVE_SETREUID */ @@ -345,7 +345,7 @@ debug_decl(direct_exec_allowed, SUDO_DEBUG_EXEC); /* Assumes sudo_needs_pty() was already checked. */ - if (ISSET(details->flags, CD_SET_TIMEOUT|CD_SUDOEDIT) || + if (ISSET(details->flags, CD_RBAC_ENABLED|CD_SET_TIMEOUT|CD_SUDOEDIT) || policy_plugin.u.policy->close != NULL) debug_return_bool(false); diff -Nru sudo-1.9.4p2/src/exec_common.c sudo-1.9.5p2/src/exec_common.c --- sudo-1.9.4p2/src/exec_common.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/src/exec_common.c 2021-01-09 14:12:16.000000000 -0600 @@ -99,7 +99,7 @@ * whether it was dynamically allocated. [TODO: plugin API] */ if (preload_idx == -1 || !enabled) { - const int env_size = env_len + 1 + (preload_idx == -1) + enabled; + const int env_size = env_len + 1 + (preload_idx == -1) + enabled; // -V547 char **nenvp = reallocarray(NULL, env_size, sizeof(*envp)); if (nenvp == NULL) diff -Nru sudo-1.9.4p2/src/exec_pty.c sudo-1.9.5p2/src/exec_pty.c --- sudo-1.9.4p2/src/exec_pty.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/src/exec_pty.c 2021-01-09 14:12:16.000000000 -0600 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2009-2020 Todd C. Miller + * Copyright (c) 2009-2021 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 @@ -148,7 +148,7 @@ } if (!get_pty(&io_fds[SFD_LEADER], &io_fds[SFD_FOLLOWER], - ptyname, sizeof(ptyname), details->euid)) + ptyname, sizeof(ptyname), details->cred.euid)) sudo_fatal("%s", U_("unable to allocate pty")); /* Update tty name in command details (used by SELinux and AIX). */ diff -Nru sudo-1.9.4p2/src/Makefile.in sudo-1.9.5p2/src/Makefile.in --- sudo-1.9.4p2/src/Makefile.in 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/src/Makefile.in 2021-01-09 14:12:16.000000000 -0600 @@ -1,7 +1,7 @@ # # SPDX-License-Identifier: ISC # -# Copyright (c) 2010-2018 Todd C. Miller +# Copyright (c) 2010-2021 # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -77,7 +77,7 @@ SSP_LDFLAGS = @SSP_LDFLAGS@ # cppcheck options, usually set in the top-level Makefile -CPPCHECK_OPTS = -q --force --enable=warning,performance,portability --suppress=constStatement --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 +CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64 # splint options, usually set in the top-level Makefile SPLINT_OPTS = -D__restrict= -checks @@ -123,8 +123,8 @@ PROGS = @PROGS@ -OBJS = conversation.o copy_file.o env_hooks.o exec.o exec_common.o \ - exec_monitor.o exec_nopty.o exec_pty.o get_pty.o hooks.o \ +OBJS = conversation.o copy_file.o edit_open.o env_hooks.o exec.o \ + exec_common.o exec_monitor.o exec_nopty.o exec_pty.o get_pty.o hooks.o \ limits.o load_plugins.o net_ifs.o parse_args.o preserve_fds.o \ signal.o sudo.o sudo_edit.o tcsetpgrp_nobg.o tgetpass.o \ ttyname.o utmp.o @SUDO_OBJS@ @@ -133,7 +133,7 @@ POBJS = $(IOBJS:.i=.plog) -SESH_OBJS = copy_file.o exec_common.o sesh.o +SESH_OBJS = copy_file.o edit_open.o exec_common.o sesh.o CHECK_NOEXEC_OBJS = check_noexec.o exec_common.o @@ -362,6 +362,24 @@ $(CC) -E -o $@ $(CPPFLAGS) $< copy_file.plog: copy_file.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/copy_file.c --i-file $< --output-file $@ +edit_open.o: $(srcdir)/edit_open.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_edit.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h + $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/edit_open.c +edit_open.i: $(srcdir)/edit_open.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_edit.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h + $(CC) -E -o $@ $(CPPFLAGS) $< +edit_open.plog: edit_open.i + rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/edit_open.c --i-file $< --output-file $@ env_hooks.o: $(srcdir)/env_hooks.c $(incdir)/compat/stdbool.h \ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \ $(incdir)/sudo_debug.h $(incdir)/sudo_dso.h \ @@ -641,16 +659,18 @@ selinux.plog: selinux.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/selinux.c --i-file $< --output-file $@ sesh.o: $(srcdir)/sesh.c $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ - $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h $(incdir)/sudo_fatal.h \ - $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_queue.h $(incdir)/sudo_util.h $(srcdir)/sudo_exec.h \ - $(top_builddir)/config.h + $(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_edit.h $(srcdir)/sudo_exec.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/sesh.c sesh.i: $(srcdir)/sesh.c $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \ - $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h $(incdir)/sudo_fatal.h \ - $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \ - $(incdir)/sudo_queue.h $(incdir)/sudo_util.h $(srcdir)/sudo_exec.h \ - $(top_builddir)/config.h + $(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_edit.h $(srcdir)/sudo_exec.h \ + $(top_builddir)/config.h $(top_builddir)/pathnames.h $(CC) -E -o $@ $(CPPFLAGS) $< sesh.plog: sesh.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/sesh.c --i-file $< --output-file $@ @@ -711,16 +731,18 @@ $(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 + $(incdir)/sudo_util.h $(srcdir)/sudo.h $(srcdir)/sudo_edit.h \ + $(srcdir)/sudo_exec.h $(top_builddir)/config.h \ + $(top_builddir)/pathnames.h $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/sudo_edit.c sudo_edit.i: $(srcdir)/sudo_edit.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 + $(incdir)/sudo_util.h $(srcdir)/sudo.h $(srcdir)/sudo_edit.h \ + $(srcdir)/sudo_exec.h $(top_builddir)/config.h \ + $(top_builddir)/pathnames.h $(CC) -E -o $@ $(CPPFLAGS) $< sudo_edit.plog: sudo_edit.i rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/sudo_edit.c --i-file $< --output-file $@ diff -Nru sudo-1.9.4p2/src/net_ifs.c sudo-1.9.5p2/src/net_ifs.c --- sudo-1.9.4p2/src/net_ifs.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/src/net_ifs.c 2021-01-09 14:12:16.000000000 -0600 @@ -119,7 +119,8 @@ #else char addrstr[INET_ADDRSTRLEN], maskstr[INET_ADDRSTRLEN]; #endif - int ailen, len, num_interfaces = 0; + int len, num_interfaces = 0; + size_t ailen; char *cp; debug_decl(get_net_ifs, SUDO_DEBUG_NETIF); @@ -172,13 +173,14 @@ if (inet_ntop(AF_INET, &sin->sin_addr, maskstr, sizeof(maskstr)) == NULL) continue; - len = snprintf(cp, ailen - (*addrinfo - cp), - "%s%s/%s", cp == *addrinfo ? "" : " ", addrstr, maskstr); - if (len < 0 || len >= ailen - (*addrinfo - cp)) { + len = snprintf(cp, ailen, "%s%s/%s", + cp == *addrinfo ? "" : " ", addrstr, maskstr); + if (len < 0 || (size_t)len >= ailen) { sudo_warnx(U_("internal error, %s overflow"), __func__); goto done; } cp += len; + ailen -= len; break; #ifdef HAVE_STRUCT_IN6_ADDR case AF_INET6: @@ -189,13 +191,14 @@ if (inet_ntop(AF_INET6, &sin6->sin6_addr, maskstr, sizeof(maskstr)) == NULL) continue; - len = snprintf(cp, ailen - (*addrinfo - cp), - "%s%s/%s", cp == *addrinfo ? "" : " ", addrstr, maskstr); - if (len < 0 || len >= ailen - (*addrinfo - cp)) { + len = snprintf(cp, ailen, "%s%s/%s", + cp == *addrinfo ? "" : " ", addrstr, maskstr); + if (len < 0 || (size_t)len >= ailen) { sudo_warnx(U_("internal error, %s overflow"), __func__); goto done; } cp += len; + ailen -= len; break; #endif /* HAVE_STRUCT_IN6_ADDR */ } @@ -223,8 +226,8 @@ struct ifreq *ifr, *ifr_tmp = (struct ifreq *)ifr_tmpbuf; struct ifconf *ifconf; struct sockaddr_in *sin; - int ailen, i, len, n, sock, num_interfaces = 0; - size_t buflen = sizeof(struct ifconf) + BUFSIZ; + int i, len, n, sock, num_interfaces = 0; + size_t ailen, buflen = sizeof(struct ifconf) + BUFSIZ; char *cp, *previfname = "", *ifconf_buf = NULL; char addrstr[INET_ADDRSTRLEN], maskstr[INET_ADDRSTRLEN]; #ifdef _ISC @@ -334,13 +337,14 @@ if (inet_ntop(AF_INET, &sin->sin_addr, maskstr, sizeof(maskstr)) == NULL) continue; - len = snprintf(cp, ailen - (*addrinfo - cp), - "%s%s/%s", cp == *addrinfo ? "" : " ", addrstr, maskstr); - if (len < 0 || len >= ailen - (*addrinfo - cp)) { + len = snprintf(cp, ailen, "%s%s/%s", + cp == *addrinfo ? "" : " ", addrstr, maskstr); + if (len < 0 || (size_t)len >= ailen) { sudo_warnx(U_("internal error, %s overflow"), __func__); goto done; } cp += len; + ailen -= len; /* Stash the name of the interface we saved. */ previfname = ifr->ifr_name; diff -Nru sudo-1.9.4p2/src/parse_args.c sudo-1.9.5p2/src/parse_args.c --- sudo-1.9.4p2/src/parse_args.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/src/parse_args.c 2021-01-23 09:45:11.000000000 -0600 @@ -117,7 +117,10 @@ /* * Default flags allowed when running a command. */ -#define DEFAULT_VALID_FLAGS (MODE_BACKGROUND|MODE_PRESERVE_ENV|MODE_RESET_HOME|MODE_LOGIN_SHELL|MODE_NONINTERACTIVE|MODE_SHELL) +#define DEFAULT_VALID_FLAGS (MODE_BACKGROUND|MODE_PRESERVE_ENV|MODE_RESET_HOME|MODE_LOGIN_SHELL|MODE_NONINTERACTIVE|MODE_PRESERVE_GROUPS|MODE_SHELL) +#define EDIT_VALID_FLAGS MODE_NONINTERACTIVE +#define LIST_VALID_FLAGS (MODE_NONINTERACTIVE|MODE_LONG_LIST) +#define VALIDATE_VALID_FLAGS MODE_NONINTERACTIVE /* Option number for the --host long option due to ambiguity of the -h flag. */ #define OPT_HOSTNAME 256 @@ -262,6 +265,7 @@ progname = "sudoedit"; mode = MODE_EDIT; sudo_settings[ARG_SUDOEDIT].value = "true"; + valid_flags = EDIT_VALID_FLAGS; } /* Load local IP addresses and masks. */ @@ -365,7 +369,7 @@ usage_excl(); mode = MODE_EDIT; sudo_settings[ARG_SUDOEDIT].value = "true"; - valid_flags = MODE_NONINTERACTIVE; + valid_flags = EDIT_VALID_FLAGS; break; case 'g': assert(optarg != NULL); @@ -377,6 +381,7 @@ break; case 'H': sudo_settings[ARG_SET_HOME].value = "true"; + SET(flags, MODE_RESET_HOME); break; case 'h': if (optarg == NULL) { @@ -431,7 +436,7 @@ usage_excl(); } mode = MODE_LIST; - valid_flags = MODE_NONINTERACTIVE|MODE_LONG_LIST; + valid_flags = LIST_VALID_FLAGS; break; case 'n': SET(flags, MODE_NONINTERACTIVE); @@ -439,6 +444,7 @@ break; case 'P': sudo_settings[ARG_PRESERVE_GROUPS].value = "true"; + SET(flags, MODE_PRESERVE_GROUPS); break; case 'p': /* An empty prompt is allowed. */ @@ -505,7 +511,7 @@ if (mode && mode != MODE_VALIDATE) usage_excl(); mode = MODE_VALIDATE; - valid_flags = MODE_NONINTERACTIVE; + valid_flags = VALIDATE_VALID_FLAGS; break; case 'V': if (mode && mode != MODE_VERSION) @@ -533,7 +539,7 @@ if (!mode) { /* Defer -k mode setting until we know whether it is a flag or not */ if (sudo_settings[ARG_IGNORE_TICKET].value != NULL) { - if (argc == 0 && !(flags & (MODE_SHELL|MODE_LOGIN_SHELL))) { + if (argc == 0 && !ISSET(flags, MODE_SHELL|MODE_LOGIN_SHELL)) { mode = MODE_INVALIDATE; /* -k by itself */ sudo_settings[ARG_IGNORE_TICKET].value = NULL; valid_flags = 0; @@ -601,23 +607,23 @@ /* * For shell mode we need to rewrite argv */ - if (ISSET(mode, MODE_RUN) && ISSET(flags, MODE_SHELL)) { + if (ISSET(flags, MODE_SHELL|MODE_LOGIN_SHELL) && ISSET(mode, MODE_RUN)) { char **av, *cmnd = NULL; int ac = 1; if (argc != 0) { /* shell -c "command" */ char *src, *dst; - size_t cmnd_size = (size_t) (argv[argc - 1] - argv[0]) + - strlen(argv[argc - 1]) + 1; + size_t size = 0; - cmnd = dst = reallocarray(NULL, cmnd_size, 2); - if (cmnd == NULL) + for (av = argv; *av != NULL; av++) + size += strlen(*av) + 1; + if (size == 0 || (cmnd = reallocarray(NULL, size, 2)) == NULL) sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); if (!gc_add(GC_PTR, cmnd)) exit(EXIT_FAILURE); - for (av = argv; *av != NULL; av++) { + for (dst = cmnd, av = argv; *av != NULL; av++) { for (src = *av; *src != '\0'; src++) { /* quote potential meta characters */ if (!isalnum((unsigned char)*src) && *src != '_' && *src != '-' && *src != '$') diff -Nru sudo-1.9.4p2/src/sesh.c sudo-1.9.5p2/src/sesh.c --- sudo-1.9.4p2/src/sesh.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/src/sesh.c 2021-01-09 14:12:16.000000000 -0600 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2008, 2010-2018, 2020 Todd C. Miller + * Copyright (c) 2008, 2010-2018, 2020-2021 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,14 +39,9 @@ # include "compat/stdbool.h" #endif /* HAVE_STDBOOL_H */ -#include "sudo_compat.h" -#include "sudo_conf.h" -#include "sudo_debug.h" +#include "sudo.h" #include "sudo_exec.h" -#include "sudo_fatal.h" -#include "sudo_gettext.h" -#include "sudo_plugin.h" -#include "sudo_util.h" +#include "sudo_edit.h" sudo_dso_public int main(int argc, char *argv[], char *envp[]); @@ -129,20 +124,242 @@ _exit(ret); } +/* + * Destructively parse a string in the format: + * uid:gid:groups,... + * + * On success, fills in ud and returns true, else false. + */ +static bool +parse_user(char *userstr, struct sudo_cred *cred) +{ + char *cp, *ep; + const char *errstr; + debug_decl(parse_user, SUDO_DEBUG_EDIT); + + /* UID */ + cp = userstr; + if ((ep = strchr(cp, ':')) == NULL) { + sudo_warnx(U_("%s: %s"), cp, U_("invalid value")); + debug_return_bool(false); + } + *ep++ = '\0'; + cred->uid = cred->euid = sudo_strtoid(cp, &errstr); + if (errstr != NULL) { + sudo_warnx(U_("%s: %s"), cp, errstr); + debug_return_bool(false); + } + + /* GID */ + cp = ep; + if ((ep = strchr(cp, ':')) == NULL) { + sudo_warnx(U_("%s: %s"), cp, U_("invalid value")); + debug_return_bool(false); + } + *ep++ = '\0'; + cred->gid = cred->egid = sudo_strtoid(cp, &errstr); + if (errstr != NULL) { + sudo_warnx(U_("%s: %s"), cp, errstr); + debug_return_bool(false); + } + + /* group vector */ + cp = ep; + cred->ngroups = sudo_parse_gids(cp, NULL, &cred->groups); + if (cred->ngroups == -1) + debug_return_bool(false); + + debug_return_bool(true); +} + static int -sesh_sudoedit(int argc, char *argv[]) +sesh_edit_create_tfiles(int edit_flags, struct sudo_cred *user_cred, + struct sudo_cred *run_cred, int argc, char *argv[]) { - int i, oflags_dst, post, ret = SESH_ERR_FAILURE; - int fd_src = -1, fd_dst = -1, follow = 0; - struct stat sb; + int i, fd_src = -1, fd_dst = -1; struct timespec times[2]; + struct stat sb; + debug_decl(sesh_edit_create_tfiles, SUDO_DEBUG_EDIT); + + for (i = 0; i < argc - 1; i += 2) { + char *path_src = argv[i]; + const char *path_dst = argv[i + 1]; + + /* + * Try to open the source file for reading. + * If it doesn't exist, we'll create an empty destination file. + */ + fd_src = sudo_edit_open(path_src, O_RDONLY, + S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, edit_flags, user_cred, run_cred); + if (fd_src == -1) { + if (errno != ENOENT) { + if (errno == ELOOP) { + sudo_warnx(U_("%s: editing symbolic links is not " + "permitted"), path_src); + } else if (errno == EISDIR) { + sudo_warnx(U_("%s: editing files in a writable directory " + "is not permitted"), path_src); + } else { + sudo_warn("%s", path_src); + } + goto cleanup; + } + /* New file, verify parent dir exists and is not writable. */ + if (!sudo_edit_parent_valid(path_src, edit_flags, user_cred, run_cred)) + goto cleanup; + } + if (fd_src == -1) { + /* New file. */ + memset(&sb, 0, sizeof(sb)); + } else if (fstat(fd_src, &sb) == -1 || !S_ISREG(sb.st_mode)) { + sudo_warnx(U_("%s: not a regular file"), path_src); + goto cleanup; + } + + /* + * Create temporary file using O_EXCL to ensure that temporary + * files are created by us and that we do not open any symlinks. + */ + fd_dst = open(path_dst, O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR); + if (fd_dst == -1) { + sudo_warn("%s", path_dst); + goto cleanup; + } + + if (fd_src != -1) { + if (sudo_copy_file(path_src, fd_src, -1, path_dst, fd_dst, -1) == -1) + goto cleanup; + close(fd_src); + } + + /* Make mtime on temp file match src (sb filled in above). */ + mtim_get(&sb, times[0]); + times[1].tv_sec = times[0].tv_sec; + times[1].tv_nsec = times[0].tv_nsec; + if (futimens(fd_dst, times) == -1) { + if (utimensat(AT_FDCWD, path_dst, times, 0) == -1) + sudo_warn("%s", path_dst); + } + close(fd_dst); + fd_dst = -1; + } + debug_return_int(SESH_SUCCESS); + +cleanup: + /* Remove temporary files. */ + for (i = 0; i < argc - 1; i += 2) + unlink(argv[i + 1]); + if (fd_src != -1) + close(fd_src); + if (fd_dst != -1) + close(fd_dst); + debug_return_int(SESH_ERR_NO_FILES); +} + +static int +sesh_edit_copy_tfiles(int edit_flags, struct sudo_cred *user_cred, + struct sudo_cred *run_cred, int argc, char *argv[]) +{ + int i, ret = SESH_SUCCESS; + int fd_src = -1, fd_dst = -1; + debug_decl(sesh_edit_copy_tfiles, SUDO_DEBUG_EDIT); + + for (i = 0; i < argc - 1; i += 2) { + const char *path_src = argv[i]; + char *path_dst = argv[i + 1]; + off_t len_src, len_dst; + struct stat sb; + + /* Open temporary file for reading. */ + if (fd_src != -1) + close(fd_src); + fd_src = open(path_src, O_RDONLY|O_NONBLOCK|O_NOFOLLOW); + if (fd_src == -1) { + sudo_warn("%s", path_src); + ret = SESH_ERR_SOME_FILES; + continue; + } + /* Make sure the temporary file is safe and has the proper owner. */ + if (!sudo_check_temp_file(fd_src, path_src, run_cred->uid, &sb)) { + sudo_warnx(U_("contents of edit session left in %s"), path_src); + ret = SESH_ERR_SOME_FILES; + continue; + } + (void) fcntl(fd_src, F_SETFL, fcntl(fd_src, F_GETFL, 0) & ~O_NONBLOCK); + + /* Create destination file. */ + if (fd_dst != -1) + close(fd_dst); + fd_dst = sudo_edit_open(path_dst, O_WRONLY|O_CREAT, + S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, edit_flags, user_cred, run_cred); + if (fd_dst == -1) { + if (errno == ELOOP) { + sudo_warnx(U_("%s: editing symbolic links is not " + "permitted"), path_dst); + } else if (errno == EISDIR) { + sudo_warnx(U_("%s: editing files in a writable directory " + "is not permitted"), path_dst); + } else { + sudo_warn("%s", path_dst); + } + sudo_warnx(U_("contents of edit session left in %s"), path_src); + ret = SESH_ERR_SOME_FILES; + continue; + } + + /* sudo_check_temp_file() filled in sb for us. */ + len_src = sb.st_size; + if (fstat(fd_dst, &sb) != 0) { + sudo_warn("%s", path_dst); + sudo_warnx(U_("contents of edit session left in %s"), path_src); + ret = SESH_ERR_SOME_FILES; + continue; + } + len_dst = sb.st_size; + + if (sudo_copy_file(path_src, fd_src, len_src, path_dst, fd_dst, + len_dst) == -1) { + sudo_warnx(U_("contents of edit session left in %s"), path_src); + ret = SESH_ERR_SOME_FILES; + continue; + } + unlink(path_src); + } + if (fd_src != -1) + close(fd_src); + if (fd_dst != -1) + close(fd_dst); + + debug_return_int(ret); +} + +static int +sesh_sudoedit(int argc, char *argv[]) +{ + int edit_flags, post, ret; + struct sudo_cred user_cred, run_cred; debug_decl(sesh_sudoedit, SUDO_DEBUG_EDIT); + memset(&user_cred, 0, sizeof(user_cred)); + memset(&run_cred, 0, sizeof(run_cred)); + edit_flags = CD_SUDOEDIT_FOLLOW; + /* Check for -h flag (don't follow links). */ - if (strcmp(argv[2], "-h") == 0) { + if (argv[2] != NULL && strcmp(argv[2], "-h") == 0) { argv++; argc--; - follow = O_NOFOLLOW; + CLR(edit_flags, CD_SUDOEDIT_FOLLOW); // -V753 + } + + /* Check for -w flag (disallow directories writable by the user). */ + if (argv[2] != NULL && strcmp(argv[2], "-w") == 0) { + SET(edit_flags, CD_SUDOEDIT_CHECKDIR); + + /* Parse uid:gid:gid1,gid2,... */ + if (argv[3] == NULL || !parse_user(argv[3], &user_cred)) + debug_return_int(SESH_ERR_FAILURE); + argv += 2; + argc -= 2; } if (argc < 3) @@ -173,109 +390,35 @@ if (argc & 1) debug_return_int(SESH_ERR_BAD_PATHS); + /* Masquerade as sudoedit so the user gets consistent error messages. */ + setprogname("sudoedit"); + /* - * Use O_EXCL if we are not in the post editing stage - * so that it's ensured that the temporary files are - * created by us and that we are not opening any symlinks. + * sudoedit runs us with the effective user-ID and group-ID of + * the target user as well as with the target user's group list. */ - oflags_dst = O_WRONLY|O_CREAT|(post ? follow : O_EXCL); - for (i = 0; i < argc - 1; i += 2) { - const char *path_src = argv[i]; - const char *path_dst = argv[i + 1]; - /* - * Try to open the source file for reading. If it - * doesn't exist, that's OK, we'll create an empty - * destination file. - */ - if ((fd_src = open(path_src, O_RDONLY|follow, S_IRUSR|S_IWUSR)) < 0) { - if (errno != ENOENT) { - sudo_warn("%s", path_src); - if (post) { - ret = SESH_ERR_SOME_FILES; - goto nocleanup; - } else - goto cleanup_0; - } + run_cred.uid = run_cred.euid = geteuid(); + run_cred.gid = run_cred.egid = getegid(); + run_cred.ngroups = getgroups(0, NULL); // -V575 + if (run_cred.ngroups > 0) { + run_cred.groups = reallocarray(NULL, run_cred.ngroups, + sizeof(GETGROUPS_T)); + if (run_cred.groups == NULL) { + sudo_warnx(U_("%s: %s"), __func__, + U_("unable to allocate memory")); + debug_return_int(SESH_ERR_FAILURE); } - - if ((fd_dst = open(path_dst, oflags_dst, post ? - (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH) : (S_IRUSR|S_IWUSR))) < 0) { - /* error - cleanup */ - sudo_warn("%s", path_dst); - if (post) { - ret = SESH_ERR_SOME_FILES; - goto nocleanup; - } else - goto cleanup_0; - } - - if (fd_src != -1) { - off_t len_src = -1; - off_t len_dst = -1; - - if (post) { - if (fstat(fd_src, &sb) != 0) { - ret = SESH_ERR_SOME_FILES; - goto nocleanup; - } - len_src = sb.st_size; - if (fstat(fd_dst, &sb) != 0) { - ret = SESH_ERR_SOME_FILES; - goto nocleanup; - } - len_dst = sb.st_size; - } - - if (sudo_copy_file(path_src, fd_src, len_src, path_dst, fd_dst, - len_dst) == -1) { - if (post) { - ret = SESH_ERR_SOME_FILES; - goto nocleanup; - } else { - goto cleanup_0; - } - } - } - - if (!post) { - if (fd_src == -1 || fstat(fd_src, &sb) != 0) - memset(&sb, 0, sizeof(sb)); - /* Make mtime on temp file match src. */ - mtim_get(&sb, times[0]); - times[1].tv_sec = times[0].tv_sec; - times[1].tv_nsec = times[0].tv_nsec; - if (futimens(fd_dst, times) == -1) { - if (utimensat(AT_FDCWD, path_dst, times, 0) == -1) - sudo_warn("%s", path_dst); - } - } - close(fd_dst); - fd_dst = -1; - if (fd_src != -1) { - close(fd_src); - fd_src = -1; + if (getgroups(run_cred.ngroups, run_cred.groups) < 0) { + sudo_warn("%s", U_("unable to get group list")); + debug_return_int(SESH_ERR_FAILURE); } + } else { + run_cred.ngroups = 0; + run_cred.groups = NULL; } - ret = SESH_SUCCESS; - if (post) { - /* Remove temporary files (post=1) */ - for (i = 0; i < argc - 1; i += 2) - unlink(argv[i]); - } -nocleanup: - if (fd_dst != -1) - close(fd_dst); - if (fd_src != -1) - close(fd_src); - return(ret); -cleanup_0: - /* Remove temporary files (post=0) */ - for (i = 0; i < argc - 1; i += 2) - unlink(argv[i + 1]); - if (fd_dst != -1) - close(fd_dst); - if (fd_src != -1) - close(fd_src); - return(SESH_ERR_NO_FILES); + ret = post ? + sesh_edit_copy_tfiles(edit_flags, &user_cred, &run_cred, argc, argv) : + sesh_edit_create_tfiles(edit_flags, &user_cred, &run_cred, argc, argv); + debug_return_int(ret); } diff -Nru sudo-1.9.4p2/src/sudo.c sudo-1.9.5p2/src/sudo.c --- sudo-1.9.4p2/src/sudo.c 2020-12-16 19:34:30.000000000 -0600 +++ sudo-1.9.5p2/src/sudo.c 2021-01-09 14:12:16.000000000 -0600 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2009-2020 Todd C. Miller + * Copyright (c) 2009-2021 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 @@ -152,12 +152,14 @@ int nargc, status = 0; char **nargv, **env_add, **user_info; char **command_info = NULL, **argv_out = NULL, **user_env_out = NULL; + const char * const allowed_prognames[] = { "sudo", "sudoedit", NULL }; struct sudo_settings *settings; int submit_optind; sigset_t mask; debug_decl_vars(main, SUDO_DEBUG_MAIN); - initprogname(argc > 0 ? argv[0] : "sudo"); + /* Only allow "sudo" or "sudoedit" as the program name. */ + initprogname2(argc > 0 ? argv[0] : "sudo", allowed_prognames); /* Crank resource limits to unlimited. */ unlimit_sudo(); @@ -218,7 +220,7 @@ /* Print sudo version early, in case of plugin init failure. */ if (ISSET(sudo_mode, MODE_VERSION)) { printf(_("Sudo version %s\n"), PACKAGE_VERSION); - if (user_details.uid == ROOT_UID) + if (user_details.cred.uid == ROOT_UID) (void) printf(_("Configure options: %s\n"), CONFIGURE_ARGS); } @@ -240,12 +242,12 @@ switch (sudo_mode & MODE_MASK) { case MODE_VERSION: - policy_show_version(!user_details.uid); - iolog_show_version(!user_details.uid, settings, user_info, + policy_show_version(!user_details.cred.uid); + iolog_show_version(!user_details.cred.uid, settings, user_info, nargc, nargv, envp); - approval_show_version(!user_details.uid, settings, user_info, + approval_show_version(!user_details.cred.uid, settings, user_info, submit_optind, argv, envp); - audit_show_version(!user_details.uid); + audit_show_version(!user_details.cred.uid); break; case MODE_VALIDATE: case MODE_VALIDATE|MODE_INVALIDATE: @@ -381,7 +383,7 @@ * Returns 0 on success and -1 on failure. */ static int -fill_group_list(struct user_details *ud) +fill_group_list(const char *user, struct sudo_cred *cred) { int ret = -1; debug_decl(fill_group_list, SUDO_DEBUG_UTIL); @@ -390,41 +392,41 @@ * If user specified a max number of groups, use it, otherwise let * sudo_getgrouplist2() allocate the group vector. */ - ud->ngroups = sudo_conf_max_groups(); - if (ud->ngroups > 0) { - ud->groups = reallocarray(NULL, ud->ngroups, sizeof(GETGROUPS_T)); - if (ud->groups != NULL) { + cred->ngroups = sudo_conf_max_groups(); + if (cred->ngroups > 0) { + cred->groups = reallocarray(NULL, cred->ngroups, sizeof(GETGROUPS_T)); + if (cred->groups != NULL) { /* No error on insufficient space if user specified max_groups. */ - (void)sudo_getgrouplist2(ud->username, ud->gid, &ud->groups, - &ud->ngroups); + (void)sudo_getgrouplist2(user, cred->gid, + &cred->groups, &cred->ngroups); ret = 0; } } else { - ud->groups = NULL; - ret = sudo_getgrouplist2(ud->username, ud->gid, &ud->groups, - &ud->ngroups); + cred->groups = NULL; + ret = sudo_getgrouplist2(user, cred->gid, &cred->groups, + &cred->ngroups); } if (ret == -1) { sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO, "%s: %s: unable to get groups via sudo_getgrouplist2()", - __func__, ud->username); + __func__, user); } else { sudo_debug_printf(SUDO_DEBUG_INFO, "%s: %s: got %d groups via sudo_getgrouplist2()", - __func__, ud->username, ud->ngroups); + __func__, user, cred->ngroups); } debug_return_int(ret); } static char * -get_user_groups(struct user_details *ud) +get_user_groups(const char *user, struct sudo_cred *cred) { char *cp, *gid_list = NULL; size_t glsize; int i, len, group_source; debug_decl(get_user_groups, SUDO_DEBUG_UTIL); - ud->groups = NULL; + cred->groups = NULL; group_source = sudo_conf_group_source(); if (group_source != GROUP_SOURCE_DYNAMIC) { int maxgroups = (int)sysconf(_SC_NGROUPS_MAX); @@ -432,46 +434,47 @@ maxgroups = NGROUPS_MAX; /* Note that macOS may return ngroups > NGROUPS_MAX. */ - if ((ud->ngroups = getgroups(0, NULL)) > 0) { + cred->ngroups = getgroups(0, NULL); // -V575 + if (cred->ngroups > 0) { /* Use groups from kernel if not at limit or source is static. */ - if (ud->ngroups != maxgroups || group_source == GROUP_SOURCE_STATIC) { - ud->groups = reallocarray(NULL, ud->ngroups, sizeof(GETGROUPS_T)); - if (ud->groups == NULL) + if (cred->ngroups != maxgroups || group_source == GROUP_SOURCE_STATIC) { + cred->groups = reallocarray(NULL, cred->ngroups, sizeof(GETGROUPS_T)); + if (cred->groups == NULL) goto done; - if (getgroups(ud->ngroups, ud->groups) < 0) { + if (getgroups(cred->ngroups, cred->groups) < 0) { sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO, - "%s: %s: unable to get %d groups via getgroups()", - __func__, ud->username, ud->ngroups); - free(ud->groups); - ud->groups = NULL; + "%s: unable to get %d groups via getgroups()", + __func__, cred->ngroups); + free(cred->groups); + cred->groups = NULL; } else { sudo_debug_printf(SUDO_DEBUG_INFO, - "%s: %s: got %d groups via getgroups()", - __func__, ud->username, ud->ngroups); + "%s: got %d groups via getgroups()", + __func__, cred->ngroups); } } } } - if (ud->groups == NULL) { + if (cred->groups == NULL) { /* * Query group database if kernel list is too small or disabled. * Typically, this is because NFS can only support up to 16 groups. */ - if (fill_group_list(ud) == -1) + if (fill_group_list(user, cred) == -1) goto done; } /* * Format group list as a comma-separated string of gids. */ - glsize = sizeof("groups=") - 1 + (ud->ngroups * (MAX_UID_T_LEN + 1)); + glsize = sizeof("groups=") - 1 + (cred->ngroups * (MAX_UID_T_LEN + 1)); if ((gid_list = malloc(glsize)) == NULL) goto done; memcpy(gid_list, "groups=", sizeof("groups=") - 1); cp = gid_list + sizeof("groups=") - 1; - for (i = 0; i < ud->ngroups; i++) { + for (i = 0; i < cred->ngroups; i++) { len = snprintf(cp, glsize - (cp - gid_list), "%s%u", - i ? "," : "", (unsigned int)ud->groups[i]); + i ? "," : "", (unsigned int)cred->groups[i]); if (len < 0 || (size_t)len >= glsize - (cp - gid_list)) sudo_fatalx(U_("internal error, %s overflow"), __func__); cp += len; @@ -527,15 +530,15 @@ if ((ud->sid = getsid(0)) == -1) ud->sid = 0; - ud->uid = getuid(); - ud->euid = geteuid(); - ud->gid = getgid(); - ud->egid = getegid(); + ud->cred.uid = getuid(); + ud->cred.euid = geteuid(); + ud->cred.gid = getgid(); + ud->cred.egid = getegid(); #ifdef HAVE_SETAUTHDB - aix_setauthdb(IDtouser(ud->uid), NULL); + aix_setauthdb(IDtouser(ud->cred.uid), NULL); #endif - pw = getpwuid(ud->uid); + pw = getpwuid(ud->cred.uid); #ifdef HAVE_SETAUTHDB aix_restoreauthdb(); #endif @@ -564,16 +567,16 @@ goto oom; if (asprintf(&user_info[++i], "sid=%d", (int)ud->sid) == -1) goto oom; - if (asprintf(&user_info[++i], "uid=%u", (unsigned int)ud->uid) == -1) + if (asprintf(&user_info[++i], "uid=%u", (unsigned int)ud->cred.uid) == -1) goto oom; - if (asprintf(&user_info[++i], "euid=%u", (unsigned int)ud->euid) == -1) + if (asprintf(&user_info[++i], "euid=%u", (unsigned int)ud->cred.euid) == -1) goto oom; - if (asprintf(&user_info[++i], "gid=%u", (unsigned int)ud->gid) == -1) + if (asprintf(&user_info[++i], "gid=%u", (unsigned int)ud->cred.gid) == -1) goto oom; - if (asprintf(&user_info[++i], "egid=%u", (unsigned int)ud->egid) == -1) + if (asprintf(&user_info[++i], "egid=%u", (unsigned int)ud->cred.egid) == -1) goto oom; - if ((cp = get_user_groups(ud)) == NULL) + if ((cp = get_user_groups(ud->username, &ud->cred)) == NULL) goto oom; user_info[++i] = cp; @@ -747,7 +750,7 @@ id = sudo_strtoid(cp, &errstr); if (errstr != NULL) sudo_fatalx(U_("%s: %s"), info[i], U_(errstr)); - details->egid = (gid_t)id; + details->cred.egid = (gid_t)id; SET(details->flags, CD_SET_EGID); break; } @@ -756,7 +759,7 @@ id = sudo_strtoid(cp, &errstr); if (errstr != NULL) sudo_fatalx(U_("%s: %s"), info[i], U_(errstr)); - details->euid = (uid_t)id; + details->cred.euid = (uid_t)id; SET(details->flags, CD_SET_EUID); break; } @@ -765,15 +768,15 @@ id = sudo_strtoid(cp, &errstr); if (errstr != NULL) sudo_fatalx(U_("%s: %s"), info[i], U_(errstr)); - details->gid = (gid_t)id; + details->cred.gid = (gid_t)id; SET(details->flags, CD_SET_GID); break; } if (strncmp("runas_groups=", info[i], sizeof("runas_groups=") - 1) == 0) { cp = info[i] + sizeof("runas_groups=") - 1; - details->ngroups = sudo_parse_gids(cp, NULL, &details->groups); + details->cred.ngroups = sudo_parse_gids(cp, NULL, &details->cred.groups); /* sudo_parse_gids() will print a warning on error. */ - if (details->ngroups == -1) + if (details->cred.ngroups == -1) exit(EXIT_FAILURE); /* XXX */ break; } @@ -782,7 +785,7 @@ id = sudo_strtoid(cp, &errstr); if (errstr != NULL) sudo_fatalx(U_("%s: %s"), info[i], U_(errstr)); - details->uid = (uid_t)id; + details->cred.uid = (uid_t)id; SET(details->flags, CD_SET_UID); break; } @@ -845,19 +848,19 @@ } if (!ISSET(details->flags, CD_SET_EUID)) - details->euid = details->uid; + details->cred.euid = details->cred.uid; if (!ISSET(details->flags, CD_SET_EGID)) - details->egid = details->gid; + details->cred.egid = details->cred.gid; if (!ISSET(details->flags, CD_SET_UMASK)) CLR(details->flags, CD_OVERRIDE_UMASK); #ifdef HAVE_SETAUTHDB - aix_setauthdb(IDtouser(details->euid), NULL); + aix_setauthdb(IDtouser(details->cred.euid), NULL); #endif if (details->runas_user != NULL) details->pw = getpwnam(details->runas_user); if (details->pw == NULL) - details->pw = getpwuid(details->euid); + details->pw = getpwuid(details->cred.euid); #ifdef HAVE_SETAUTHDB aix_restoreauthdb(); #endif @@ -931,23 +934,23 @@ debug_decl(set_user_groups, SUDO_DEBUG_EXEC); if (!ISSET(details->flags, CD_PRESERVE_GROUPS)) { - if (details->ngroups >= 0) { - if (sudo_setgroups(details->ngroups, details->groups) < 0) { + if (details->cred.ngroups >= 0) { + if (sudo_setgroups(details->cred.ngroups, details->cred.groups) < 0) { sudo_warn("%s", U_("unable to set supplementary group IDs")); goto done; } } } #ifdef HAVE_SETEUID - if (ISSET(details->flags, CD_SET_EGID) && setegid(details->egid)) { + if (ISSET(details->flags, CD_SET_EGID) && setegid(details->cred.egid)) { sudo_warn(U_("unable to set effective gid to runas gid %u"), - (unsigned int)details->egid); + (unsigned int)details->cred.egid); goto done; } #endif - if (ISSET(details->flags, CD_SET_GID) && setgid(details->gid)) { + if (ISSET(details->flags, CD_SET_GID) && setgid(details->cred.gid)) { sudo_warn(U_("unable to set gid to runas gid %u"), - (unsigned int)details->gid); + (unsigned int)details->cred.gid); goto done; } ret = true; diff -Nru sudo-1.9.4p2/src/sudo_edit.c sudo-1.9.5p2/src/sudo_edit.c --- sudo-1.9.4p2/src/sudo_edit.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/src/sudo_edit.c 2021-01-11 19:48:04.000000000 -0600 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2004-2008, 2010-2020 Todd C. Miller + * Copyright (c) 2004-2008, 2010-2021 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,7 +31,6 @@ #include #include #include -#include #include #include #include @@ -39,6 +38,7 @@ #include #include "sudo.h" +#include "sudo_edit.h" #include "sudo_exec.h" #if defined(HAVE_SETRESUID) || defined(HAVE_SETREUID) || defined(HAVE_SETEUID) @@ -55,152 +55,12 @@ static char edit_tmpdir[MAX(sizeof(_PATH_VARTMP), sizeof(_PATH_TMP))]; -static void -switch_user(uid_t euid, gid_t egid, int ngroups, GETGROUPS_T *groups) -{ - int serrno = errno; - debug_decl(switch_user, SUDO_DEBUG_EDIT); - - sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, - "set uid:gid to %u:%u(%u)", (unsigned int)euid, (unsigned int)egid, - ngroups ? (unsigned int)groups[0] : (unsigned int)egid); - - /* When restoring root, change euid first; otherwise change it last. */ - if (euid == ROOT_UID) { - if (seteuid(ROOT_UID) != 0) - sudo_fatal("seteuid(ROOT_UID)"); - } - if (setegid(egid) != 0) - sudo_fatal("setegid(%d)", (int)egid); - if (ngroups != -1) { - if (sudo_setgroups(ngroups, groups) != 0) - sudo_fatal("setgroups"); - } - if (euid != ROOT_UID) { - if (seteuid(euid) != 0) - sudo_fatal("seteuid(%u)", (unsigned int)euid); - } - errno = serrno; - - debug_return; -} - -#if defined(HAVE_FACCESSAT) && defined(AT_EACCESS) -/* - * Returns true if the open directory fd is owned or writable by the user. - */ -static int -dir_is_writable(int dfd, struct user_details *ud, struct command_details *cd) -{ - struct stat sb; - int rc; - debug_decl(dir_is_writable, SUDO_DEBUG_EDIT); - - if (fstat(dfd, &sb) == -1) - debug_return_int(-1); - - /* If the user owns the dir we always consider it writable. */ - if (sb.st_uid == ud->uid) { - sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, - "user uid %u matches directory uid %u", (unsigned int)ud->uid, - (unsigned int)sb.st_uid); - debug_return_int(true); - } - - /* Change uid/gid/groups to invoking user, usually needs root perms. */ - if (cd->euid != ROOT_UID) { - if (seteuid(ROOT_UID) != 0) - sudo_fatal("seteuid(ROOT_UID)"); - } - switch_user(ud->uid, ud->gid, ud->ngroups, ud->groups); - - /* Access checks are done using the euid/egid and group vector. */ - rc = faccessat(dfd, ".", W_OK, AT_EACCESS); - - /* Change uid/gid/groups back to target user, may need root perms. */ - if (ud->uid != ROOT_UID) { - if (seteuid(ROOT_UID) != 0) - sudo_fatal("seteuid(ROOT_UID)"); - } - switch_user(cd->euid, cd->egid, cd->ngroups, cd->groups); - - if (rc == 0) - debug_return_int(true); - if (errno == EACCES || errno == EROFS) - debug_return_int(false); - debug_return_int(-1); -} -#else -static bool -group_matches(gid_t target, gid_t gid, int ngroups, GETGROUPS_T *groups) -{ - int i; - debug_decl(group_matches, SUDO_DEBUG_EDIT); - - if (target == gid) { - sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, - "user gid %u matches directory gid %u", (unsigned int)gid, - (unsigned int)target); - debug_return_bool(true); - } - for (i = 0; i < ngroups; i++) { - if (target == groups[i]) { - sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, - "user gid %u matches directory gid %u", (unsigned int)gid, - (unsigned int)target); - debug_return_bool(true); - } - } - debug_return_bool(false); -} - -/* - * Returns true if the open directory fd is owned or writable by the user. - */ -static int -dir_is_writable(int dfd, struct user_details *ud, struct command_details *cd) -{ - struct stat sb; - debug_decl(dir_is_writable, SUDO_DEBUG_EDIT); - - if (fstat(dfd, &sb) == -1) - debug_return_int(-1); - - /* If the user owns the dir we always consider it writable. */ - if (sb.st_uid == ud->uid) { - sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, - "user uid %u matches directory uid %u", (unsigned int)ud->uid, - (unsigned int)sb.st_uid); - debug_return_int(true); - } - - /* Other writable? */ - if (ISSET(sb.st_mode, S_IWOTH)) { - sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, - "directory is writable by other"); - debug_return_int(true); - } - - /* Group writable? */ - if (ISSET(sb.st_mode, S_IWGRP)) { - if (group_matches(sb.st_gid, ud->gid, ud->ngroups, ud->groups)) { - sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, - "directory is writable by one of the user's groups"); - debug_return_int(true); - } - } - - errno = EACCES; - debug_return_int(false); -} -#endif /* HAVE_FACCESSAT && AT_EACCESS */ - /* * Find our temporary directory, one of /var/tmp, /usr/tmp, or /tmp * Returns true on success, else false; */ static bool -set_tmpdir(struct command_details *command_details) +set_tmpdir(struct sudo_cred *user_cred) { const char *tdir = NULL; const char *tmpdirs[] = { @@ -210,21 +70,49 @@ #endif _PATH_TMP }; + struct sudo_cred saved_cred; unsigned int i; size_t len; int dfd; debug_decl(set_tmpdir, SUDO_DEBUG_EDIT); + /* Stash old credentials. */ + saved_cred.uid = getuid(); + saved_cred.euid = geteuid(); + saved_cred.gid = getgid(); + saved_cred.egid = getegid(); + saved_cred.ngroups = getgroups(0, NULL); // -V575 + if (saved_cred.ngroups > 0) { + saved_cred.groups = + reallocarray(NULL, saved_cred.ngroups, sizeof(GETGROUPS_T)); + if (saved_cred.groups == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + debug_return_bool(false); + } + if (getgroups(saved_cred.ngroups, saved_cred.groups) < 0) { + sudo_warn("%s", U_("unable to get group list")); + free(saved_cred.groups); + debug_return_bool(false); + } + } else { + saved_cred.ngroups = 0; + saved_cred.groups = NULL; + } + for (i = 0; tdir == NULL && i < nitems(tmpdirs); i++) { if ((dfd = open(tmpdirs[i], O_RDONLY)) != -1) { - if (dir_is_writable(dfd, &user_details, command_details) == true) + if (dir_is_writable(dfd, user_cred, &saved_cred) == true) tdir = tmpdirs[i]; close(dfd); } } - if (tdir == NULL) - sudo_fatalx("%s", U_("no writable temporary directory found")); - + free(saved_cred.groups); + + if (tdir == NULL) { + sudo_warnx("%s", U_("no writable temporary directory found")); + debug_return_bool(false); + } + len = strlcpy(edit_tmpdir, tdir, sizeof(edit_tmpdir)); if (len >= sizeof(edit_tmpdir)) { errno = ENAMETOOLONG; @@ -259,261 +147,16 @@ } else { len = asprintf(tfile, "%s/%s.XXXXXXXX", edit_tmpdir, cp); } - if (len == -1) - sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + if (len == -1) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + debug_return_int(-1); + } tfd = mkstemps(*tfile, suff ? strlen(suff) : 0); sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, "%s -> %s, fd %d", ofile, *tfile, tfd); debug_return_int(tfd); } -#ifdef O_NOFOLLOW -static int -sudo_edit_openat_nofollow(int dfd, char *path, int oflags, mode_t mode) -{ - debug_decl(sudo_edit_openat_nofollow, SUDO_DEBUG_EDIT); - - debug_return_int(openat(dfd, path, oflags|O_NOFOLLOW, mode)); -} -#else -/* - * Returns true if fd and path don't match or path is a symlink. - * Used on older systems without O_NOFOLLOW. - */ -static bool -sudo_edit_is_symlink(int fd, char *path) -{ - struct stat sb1, sb2; - debug_decl(sudo_edit_is_symlink, SUDO_DEBUG_EDIT); - - /* - * Treat [fl]stat() failure like there was a symlink. - */ - if (fstat(fd, &sb1) == -1 || lstat(path, &sb2) == -1) - debug_return_bool(true); - - /* - * Make sure we did not open a link and that what we opened - * matches what is currently on the file system. - */ - if (S_ISLNK(sb2.st_mode) || - sb1.st_dev != sb2.st_dev || sb1.st_ino != sb2.st_ino) { - debug_return_bool(true); - } - - debug_return_bool(false); -} - -static int -sudo_edit_openat_nofollow(int dfd, char *path, int oflags, mode_t mode) -{ - int fd = -1, odfd = -1; - struct stat sb; - debug_decl(sudo_edit_openat_nofollow, SUDO_DEBUG_EDIT); - - /* Save cwd and chdir to dfd */ - if ((odfd = open(".", O_RDONLY)) == -1) - debug_return_int(-1); - if (fchdir(dfd) == -1) { - close(odfd); - debug_return_int(-1); - } - - /* - * Check if path is a symlink. This is racey but we detect whether - * we lost the race in sudo_edit_is_symlink() after the open. - */ - if (lstat(path, &sb) == -1 && errno != ENOENT) - goto done; - if (S_ISLNK(sb.st_mode)) { - errno = ELOOP; - goto done; - } - - fd = open(path, oflags, mode); - if (fd == -1) - goto done; - - /* - * Post-open symlink check. This will leave a zero-length file if - * O_CREAT was specified but it is too dangerous to try and remove it. - */ - if (sudo_edit_is_symlink(fd, path)) { - close(fd); - fd = -1; - errno = ELOOP; - } - -done: - /* Restore cwd */ - if (odfd != -1) { - if (fchdir(odfd) == -1) - sudo_fatal("%s", U_("unable to restore current working directory")); - close(odfd); - } - - debug_return_int(fd); -} -#endif /* O_NOFOLLOW */ - -/* - * Directory open flags for use with openat(2). - * Use O_SEARCH/O_PATH and/or O_DIRECTORY where possible. - */ -#if defined(O_SEARCH) -# if defined(O_DIRECTORY) -# define DIR_OPEN_FLAGS (O_SEARCH|O_DIRECTORY) -# else -# define DIR_OPEN_FLAGS (O_SEARCH) -# endif -#elif defined(O_PATH) -# if defined(O_DIRECTORY) -# define DIR_OPEN_FLAGS (O_PATH|O_DIRECTORY) -# else -# define DIR_OPEN_FLAGS (O_PATH) -# endif -#elif defined(O_DIRECTORY) -# define DIR_OPEN_FLAGS (O_RDONLY|O_DIRECTORY) -#else -# define DIR_OPEN_FLAGS (O_RDONLY|O_NONBLOCK) -#endif - -static int -sudo_edit_open_nonwritable(char *path, int oflags, mode_t mode, - struct command_details *command_details) -{ - const int dflags = DIR_OPEN_FLAGS; - int dfd, fd, is_writable; - debug_decl(sudo_edit_open_nonwritable, SUDO_DEBUG_EDIT); - - if (path[0] == '/') { - dfd = open("/", dflags); - path++; - } else { - dfd = open(".", dflags); - if (path[0] == '.' && path[1] == '/') - path += 2; - } - if (dfd == -1) - debug_return_int(-1); - - for (;;) { - char *slash; - int subdfd; - - /* - * Look up one component at a time, avoiding symbolic links in - * writable directories. - */ - is_writable = dir_is_writable(dfd, &user_details, command_details); - if (is_writable == -1) { - close(dfd); - debug_return_int(-1); - } - - while (path[0] == '/') - path++; - slash = strchr(path, '/'); - if (slash == NULL) - break; - *slash = '\0'; - if (is_writable) - subdfd = sudo_edit_openat_nofollow(dfd, path, dflags, 0); - else - subdfd = openat(dfd, path, dflags, 0); - *slash = '/'; /* restore path */ - close(dfd); - if (subdfd == -1) - debug_return_int(-1); - path = slash + 1; - dfd = subdfd; - } - - if (is_writable) { - close(dfd); - errno = EISDIR; - debug_return_int(-1); - } - - /* - * For "sudoedit /" we will receive ENOENT from openat() and sudoedit - * will try to create a file with an empty name. We treat an empty - * path as the cwd so sudoedit can give a sensible error message. - */ - fd = openat(dfd, *path ? path : ".", oflags, mode); - close(dfd); - debug_return_int(fd); -} - -#ifdef O_NOFOLLOW -static int -sudo_edit_open(char *path, int oflags, mode_t mode, - struct command_details *command_details) -{ - const int sflags = command_details ? command_details->flags : 0; - int fd; - debug_decl(sudo_edit_open, SUDO_DEBUG_EDIT); - - if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW)) - oflags |= O_NOFOLLOW; - if (ISSET(sflags, CD_SUDOEDIT_CHECKDIR) && user_details.uid != ROOT_UID) { - fd = sudo_edit_open_nonwritable(path, oflags|O_NONBLOCK, mode, - command_details); - } else { - fd = open(path, oflags|O_NONBLOCK, mode); - } - if (fd != -1 && !ISSET(oflags, O_NONBLOCK)) - (void) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK); - debug_return_int(fd); -} -#else -static int -sudo_edit_open(char *path, int oflags, mode_t mode, - struct command_details *command_details) -{ - const int sflags = command_details ? command_details->flags : 0; - struct stat sb; - int fd; - debug_decl(sudo_edit_open, SUDO_DEBUG_EDIT); - - /* - * Check if path is a symlink. This is racey but we detect whether - * we lost the race in sudo_edit_is_symlink() after the file is opened. - */ - if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW)) { - if (lstat(path, &sb) == -1 && errno != ENOENT) - debug_return_int(-1); - if (S_ISLNK(sb.st_mode)) { - errno = ELOOP; - debug_return_int(-1); - } - } - - if (ISSET(sflags, CD_SUDOEDIT_CHECKDIR) && user_details.uid != ROOT_UID) { - fd = sudo_edit_open_nonwritable(path, oflags|O_NONBLOCK, mode, - command_details); - } else { - fd = open(path, oflags|O_NONBLOCK, mode); - } - if (fd == -1) - debug_return_int(-1); - if (!ISSET(oflags, O_NONBLOCK)) - (void) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK); - - /* - * Post-open symlink check. This will leave a zero-length file if - * O_CREAT was specified but it is too dangerous to try and remove it. - */ - if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW) && sudo_edit_is_symlink(fd, path)) { - close(fd); - fd = -1; - errno = ELOOP; - } - - debug_return_int(fd); -} -#endif /* O_NOFOLLOW */ - /* * Create temporary copies of files[] and store the temporary path name * along with the original name, size and mtime in tf. @@ -535,33 +178,23 @@ */ for (i = 0, j = 0; i < nfiles; i++) { rc = -1; - switch_user(command_details->euid, command_details->egid, - command_details->ngroups, command_details->groups); + switch_user(command_details->cred.euid, command_details->cred.egid, + 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); + S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, command_details->flags, + &user_details.cred, &command_details->cred); if (ofd != -1 || errno == ENOENT) { - if (ofd == -1) { - /* New file, verify parent dir exists unless in cwd. */ - char *slash = strrchr(files[i], '/'); - if (slash != NULL && slash != files[i]) { - int serrno = errno; - *slash = '\0'; - if (stat(files[i], &sb) == 0 && S_ISDIR(sb.st_mode)) { - memset(&sb, 0, sizeof(sb)); - rc = 0; - } - *slash = '/'; - errno = serrno; - } else { - memset(&sb, 0, sizeof(sb)); - rc = 0; - } - } else { + 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)) + rc = 0; } } - switch_user(ROOT_UID, user_details.egid, - user_details.ngroups, user_details.groups); + switch_user(ROOT_UID, user_details.cred.egid, + user_details.cred.ngroups, user_details.cred.groups); if (ofd != -1 && !S_ISREG(sb.st_mode)) { sudo_warnx(U_("%s: not a regular file"), files[i]); close(ofd); @@ -583,12 +216,12 @@ continue; } tf[j].ofile = files[i]; - tf[j].osize = sb.st_size; + 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.uid); - if (seteuid(user_details.uid) != 0) - sudo_fatal("seteuid(%u)", (unsigned int)user_details.uid); + "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); tfd = sudo_edit_mktemp(tf[j].ofile, &tf[j].tfile); sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, "seteuid(%u)", ROOT_UID); @@ -646,24 +279,17 @@ /* Copy contents of temp files to real ones. */ for (i = 0; i < nfiles; i++) { - int rc = -1; sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, - "seteuid(%u)", (unsigned int)user_details.uid); - if (seteuid(user_details.uid) != 0) - sudo_fatal("seteuid(%u)", (unsigned int)user_details.uid); + "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); tfd = sudo_edit_open(tf[i].tfile, O_RDONLY, - S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, NULL); - if (tfd != -1) - rc = fstat(tfd, &sb); - sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, - "seteuid(%u)", ROOT_UID); + S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, 0, &user_details.cred, NULL); if (seteuid(ROOT_UID) != 0) sudo_fatal("seteuid(ROOT_UID)"); - if (rc == -1 || !S_ISREG(sb.st_mode)) { - if (rc == -1) - sudo_warn("%s", tf[i].tfile); - else - sudo_warnx(U_("%s: not a regular file"), tf[i].tfile); + 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)) { sudo_warnx(U_("%s left unmodified"), tf[i].ofile); if (tfd != -1) close(tfd); @@ -683,14 +309,15 @@ continue; } } - switch_user(command_details->euid, command_details->egid, - command_details->ngroups, command_details->groups); + switch_user(command_details->cred.euid, command_details->cred.egid, + command_details->cred.ngroups, command_details->cred.groups); 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); + S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH, command_details->flags, + &user_details.cred, &command_details->cred); umask(oldmask); - switch_user(ROOT_UID, user_details.egid, - user_details.ngroups, user_details.groups); + switch_user(ROOT_UID, user_details.cred.egid, + user_details.cred.ngroups, user_details.cred.groups); if (ofd == -1) { sudo_warn(U_("unable to write to %s"), tf[i].ofile); goto bad; @@ -716,7 +343,8 @@ #ifdef HAVE_SELINUX static int -selinux_run_helper(char *argv[], char *envp[]) +selinux_run_helper(uid_t uid, gid_t gid, int ngroups, GETGROUPS_T *groups, + char *const argv[], char *const envp[]) { int status, ret = SESH_ERR_FAILURE; const char *sesh; @@ -736,8 +364,10 @@ break; case 0: /* child runs sesh in new context */ - if (selinux_setcon() == 0) + if (selinux_setcon() == 0) { + switch_user(uid, gid, ngroups, groups); execve(sesh, argv, envp); + } _exit(SESH_ERR_FAILURE); default: /* parent waits */ @@ -751,12 +381,43 @@ debug_return_int(ret); } +static char * +selinux_fmt_sudo_user(void) +{ + 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); + 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); + 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++) { + len = snprintf(cp, user_size - (cp - user_str), "%s%u", + i ? "," : "", (unsigned int)user_details.cred.groups[i]); + if (len < 0 || (size_t)len >= user_size - (cp - user_str)) + sudo_fatalx(U_("internal error, %s overflow"), __func__); + cp += len; + } + + debug_return_ptr(user_str); +} + static int selinux_edit_create_tfiles(struct command_details *command_details, struct tempfile *tf, char *files[], int nfiles) { - char **sesh_args, **sesh_ap; - int i, rc, sesh_nargs; + char **sesh_args, **sesh_ap, *user_str = NULL; + int i, error, sesh_nargs, ret = -1; struct stat sb; debug_decl(selinux_edit_create_tfiles, SUDO_DEBUG_EDIT); @@ -764,19 +425,26 @@ debug_return_int(0); /* Construct common args for sesh */ - sesh_nargs = 4 + (nfiles * 2) + 1; + sesh_nargs = 6 + (nfiles * 2) + 1; sesh_args = sesh_ap = reallocarray(NULL, sesh_nargs, sizeof(char *)); if (sesh_args == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - debug_return_int(-1); + goto done; } *sesh_ap++ = "sesh"; *sesh_ap++ = "-e"; if (!ISSET(command_details->flags, CD_SUDOEDIT_FOLLOW)) *sesh_ap++ = "-h"; + if (ISSET(command_details->flags, CD_SUDOEDIT_CHECKDIR)) { + if ((user_str = selinux_fmt_sudo_user()) == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + goto done; + } + *sesh_ap++ = "-w"; + *sesh_ap++ = user_str; + } *sesh_ap++ = "0"; - /* XXX - temp files should be created with user's context */ for (i = 0; i < nfiles; i++) { char *tfile, *ofile = files[i]; int tfd; @@ -794,8 +462,7 @@ if (tfd == -1) { sudo_warn("mkstemps"); free(tfile); - free(sesh_args); - debug_return_int(-1); + goto done; } /* Helper will re-create temp file with proper security context. */ close(tfd); @@ -806,8 +473,10 @@ *sesh_ap = NULL; /* Run sesh -e [-h] 0 ... */ - rc = selinux_run_helper(sesh_args, command_details->envp); - switch (rc) { + error = selinux_run_helper(command_details->cred.uid, command_details->cred.gid, + command_details->cred.ngroups, command_details->cred.groups, sesh_args, + command_details->envp); + switch (error) { case SESH_SUCCESS: break; case SESH_ERR_BAD_PATHS: @@ -817,29 +486,45 @@ case SESH_ERR_KILLED: sudo_fatalx("%s", U_("sesh: killed by a signal")); default: - sudo_fatalx(U_("sesh: unknown error %d"), rc); + sudo_warnx(U_("sesh: unknown error %d"), error); + goto done; } - /* Chown to user's UID so they can edit the temporary files. */ for (i = 0; i < nfiles; i++) { - if (chown(tf[i].tfile, user_details.uid, user_details.gid) != 0) { + int tfd = open(tf[i].tfile, O_RDONLY|O_NONBLOCK|O_NOFOLLOW); + if (tfd == -1) { + sudo_warn(U_("unable to open %s"), tf[i].tfile); + goto done; + } + if (!sudo_check_temp_file(tfd, tf[i].tfile, command_details->cred.uid, NULL)) { + close(tfd); + goto done; + } + if (fchown(tfd, user_details.cred.uid, user_details.cred.gid) != 0) { sudo_warn("unable to chown(%s) to %d:%d for editing", - tf[i].tfile, user_details.uid, user_details.gid); + tf[i].tfile, user_details.cred.uid, user_details.cred.gid); + close(tfd); + goto done; } + close(tfd); } + ret = nfiles; +done: /* Contents of tf will be freed by caller. */ free(sesh_args); + free(user_str); - return (nfiles); + debug_return_int(ret); } static int selinux_edit_copy_tfiles(struct command_details *command_details, struct tempfile *tf, int nfiles, struct timespec *times) { - char **sesh_args, **sesh_ap; - int i, rc, sesh_nargs, ret = 1; + char **sesh_args, **sesh_ap, *user_str = NULL; + int i, error, sesh_nargs, ret = 1; + int tfd = -1; struct timespec ts; struct stat sb; debug_decl(selinux_edit_copy_tfiles, SUDO_DEBUG_EDIT); @@ -848,45 +533,63 @@ debug_return_int(0); /* Construct common args for sesh */ - sesh_nargs = 3 + (nfiles * 2) + 1; + sesh_nargs = 5 + (nfiles * 2) + 1; sesh_args = sesh_ap = reallocarray(NULL, sesh_nargs, sizeof(char *)); if (sesh_args == NULL) { sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); - debug_return_int(-1); + goto done; } *sesh_ap++ = "sesh"; *sesh_ap++ = "-e"; + if (ISSET(command_details->flags, CD_SUDOEDIT_CHECKDIR)) { + if ((user_str = selinux_fmt_sudo_user()) == NULL) { + sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); + goto done; + } + *sesh_ap++ = "-w"; + *sesh_ap++ = user_str; + } *sesh_ap++ = "1"; /* Construct args for sesh -e 1 */ for (i = 0; i < nfiles; i++) { - if (stat(tf[i].tfile, &sb) == 0) { - mtim_get(&sb, ts); - if (tf[i].osize == sb.st_size && sudo_timespeccmp(&tf[i].omtim, &ts, ==)) { - /* - * If mtime and size match but the user spent no measurable - * time in the editor we can't tell if the file was changed. - */ - if (sudo_timespeccmp(×[0], ×[1], !=)) { - sudo_warnx(U_("%s unchanged"), tf[i].ofile); - unlink(tf[i].tfile); - continue; - } + if (tfd != -1) + close(tfd); + if ((tfd = open(tf[i].tfile, O_RDONLY|O_NONBLOCK|O_NOFOLLOW)) == -1) { + 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)) + continue; + mtim_get(&sb, ts); + if (tf[i].osize == sb.st_size && sudo_timespeccmp(&tf[i].omtim, &ts, ==)) { + /* + * If mtime and size match but the user spent no measurable + * time in the editor we can't tell if the file was changed. + */ + if (sudo_timespeccmp(×[0], ×[1], !=)) { + sudo_warnx(U_("%s unchanged"), tf[i].ofile); + unlink(tf[i].tfile); + continue; } } *sesh_ap++ = tf[i].tfile; *sesh_ap++ = tf[i].ofile; - if (chown(tf[i].tfile, command_details->uid, command_details->gid) != 0) { + if (fchown(tfd, command_details->cred.uid, command_details->cred.gid) != 0) { sudo_warn("unable to chown(%s) back to %d:%d", tf[i].tfile, - command_details->uid, command_details->gid); + command_details->cred.uid, command_details->cred.gid); } } *sesh_ap = NULL; + if (tfd != -1) + close(tfd); if (sesh_ap - sesh_args > 3) { /* Run sesh -e 1 ... */ - rc = selinux_run_helper(sesh_args, command_details->envp); - switch (rc) { + error = selinux_run_helper(command_details->cred.uid, command_details->cred.gid, + command_details->cred.ngroups, command_details->cred.groups, sesh_args, + command_details->envp); + switch (error) { case SESH_SUCCESS: ret = 0; break; @@ -902,13 +605,15 @@ sudo_warnx("%s", U_("sesh: killed by a signal")); break; default: - sudo_warnx(U_("sesh: unknown error %d"), rc); + sudo_warnx(U_("sesh: unknown error %d"), error); break; } - if (ret != 0) - sudo_warnx(U_("contents of edit session left in %s"), edit_tmpdir); } + +done: + /* Contents of tf will be freed by caller. */ free(sesh_args); + free(user_str); debug_return_int(ret); } @@ -924,15 +629,12 @@ { struct command_details saved_command_details; char **nargv = NULL, **ap, **files = NULL; - int errors, i, ac, nargc, rc; + int errors, i, ac, nargc, ret; int editor_argc = 0, nfiles = 0; struct timespec times[2]; struct tempfile *tf = NULL; debug_decl(sudo_edit, SUDO_DEBUG_EDIT); - if (!set_tmpdir(command_details)) - goto cleanup; - /* * Set real, effective and saved uids to root. * We will change the euid as needed below. @@ -944,6 +646,10 @@ goto cleanup; } + /* Find a temporary directory writable by the user. */ + if (!set_tmpdir(&user_details.cred)) + goto cleanup; + /* * The user's editor must be separated from the files to be * edited by a "--" option. @@ -1003,8 +709,9 @@ nargv[ac] = NULL; /* - * Run the editor with the invoking user's creds, - * keeping track of the time spent in the editor. + * Run the editor with the invoking user's creds and drop setuid. + * Keep track of the time spent in the editor to distinguish between + * a user editing a file and a program doing it. * XXX - should run editor with user's context */ if (sudo_gettime_real(×[0]) == -1) { @@ -1012,26 +719,18 @@ goto cleanup; } memcpy(&saved_command_details, command_details, sizeof(struct command_details)); - command_details->uid = user_details.uid; - command_details->euid = user_details.uid; - command_details->gid = user_details.gid; - command_details->egid = user_details.gid; - command_details->ngroups = user_details.ngroups; - command_details->groups = user_details.groups; + command_details->cred = user_details.cred; + command_details->cred.euid = user_details.cred.uid; + command_details->cred.egid = user_details.cred.gid; command_details->argv = nargv; - rc = run_command(command_details); + ret = run_command(command_details); if (sudo_gettime_real(×[1]) == -1) { sudo_warn("%s", U_("unable to read the clock")); goto cleanup; } /* Restore saved command_details. */ - command_details->uid = saved_command_details.uid; - command_details->euid = saved_command_details.euid; - command_details->gid = saved_command_details.gid; - command_details->egid = saved_command_details.egid; - command_details->ngroups = saved_command_details.ngroups; - command_details->groups = saved_command_details.groups; + command_details->cred = saved_command_details.cred; command_details->argv = saved_command_details.argv; /* Copy contents of temp files to real ones. */ @@ -1043,14 +742,14 @@ errors = sudo_edit_copy_tfiles(command_details, tf, nfiles, times); if (errors) { /* Preserve the edited temporary files. */ - rc = W_EXITCODE(1, 0); + ret = W_EXITCODE(1, 0); } for (i = 0; i < nfiles; i++) free(tf[i].tfile); free(tf); free(nargv); - debug_return_int(rc); + debug_return_int(ret); cleanup: /* Clean up temp files and return. */ diff -Nru sudo-1.9.4p2/src/sudo_edit.h sudo-1.9.5p2/src/sudo_edit.h --- sudo-1.9.4p2/src/sudo_edit.h 1969-12-31 18:00:00.000000000 -0600 +++ sudo-1.9.5p2/src/sudo_edit.h 2021-01-09 14:12:16.000000000 -0600 @@ -0,0 +1,55 @@ +/* + * SPDX-License-Identifier: ISC + * + * Copyright (c) 2021 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 SUDO_EDIT_H +#define SUDO_EDIT_H + +/* + * Directory open flags for use with openat(2). + * Use O_SEARCH/O_PATH and/or O_DIRECTORY where possible. + */ +#if defined(O_SEARCH) +# if defined(O_DIRECTORY) +# define DIR_OPEN_FLAGS (O_SEARCH|O_DIRECTORY) +# else +# define DIR_OPEN_FLAGS (O_SEARCH) +# endif +#elif defined(O_PATH) +# if defined(O_DIRECTORY) +# define DIR_OPEN_FLAGS (O_PATH|O_DIRECTORY) +# else +# define DIR_OPEN_FLAGS (O_PATH) +# endif +#elif defined(O_DIRECTORY) +# define DIR_OPEN_FLAGS (O_RDONLY|O_DIRECTORY) +#else +# define DIR_OPEN_FLAGS (O_RDONLY|O_NONBLOCK) +#endif + +/* copy_file.c */ +int sudo_copy_file(const char *src, int src_fd, off_t src_len, const char *dst, int dst_fd, off_t dst_len); +bool sudo_check_temp_file(int tfd, const char *tname, uid_t uid, struct stat *sb); + +/* 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); + +#endif /* SUDO_EDIT_H */ diff -Nru sudo-1.9.4p2/src/sudo_exec.h sudo-1.9.5p2/src/sudo_exec.h --- sudo-1.9.4p2/src/sudo_exec.h 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/src/sudo_exec.h 2021-01-09 14:12:16.000000000 -0600 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 2010-2016 Todd C. Miller + * Copyright (c) 2010-2017, 2020-2021 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 @@ -84,9 +84,7 @@ */ struct command_details; struct command_status; - -/* copy_file.c */ -int sudo_copy_file(const char *src, int src_fd, off_t src_len, const char *dst, int dst_fd, off_t dst_len); +struct stat; /* exec.c */ void exec_cmnd(struct command_details *details, int errfd); diff -Nru sudo-1.9.4p2/src/sudo.h sudo-1.9.5p2/src/sudo.h --- sudo-1.9.4p2/src/sudo.h 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/src/sudo.h 2021-01-09 14:12:16.000000000 -0600 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1993-1996, 1998-2005, 2007-2016 + * Copyright (c) 1993-1996, 1998-2005, 2007-2021 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -92,23 +92,28 @@ const char *value; }; +/* Sudo user credentials */ +struct sudo_cred { + uid_t uid; + uid_t euid; + uid_t gid; + uid_t egid; + int ngroups; + GETGROUPS_T *groups; +}; + struct user_details { + struct sudo_cred cred; pid_t pid; pid_t ppid; pid_t pgid; pid_t tcpgid; pid_t sid; - uid_t uid; - uid_t euid; - uid_t gid; - uid_t egid; const char *username; const char *cwd; const char *tty; const char *host; const char *shell; - GETGROUPS_T *groups; - int ngroups; int ts_rows; int ts_cols; }; @@ -143,21 +148,16 @@ TAILQ_HEAD(preserved_fd_list, preserved_fd); struct command_details { - uid_t uid; - uid_t euid; - gid_t gid; - gid_t egid; + struct sudo_cred cred; mode_t umask; int priority; int timeout; - int ngroups; int closefrom; int flags; int execfd; int cwd_optional; struct preserved_fd_list preserved_fds; struct passwd *pw; - GETGROUPS_T *groups; const char *command; const char *runas_user; const char *cwd; diff -Nru sudo-1.9.4p2/src/tgetpass.c sudo-1.9.5p2/src/tgetpass.c --- sudo-1.9.4p2/src/tgetpass.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/src/tgetpass.c 2021-01-09 14:12:16.000000000 -0600 @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: ISC * - * Copyright (c) 1996, 1998-2005, 2007-2018 + * Copyright (c) 1996, 1998-2005, 2007-2021 * Todd C. Miller * * Permission to use, copy, modify, and distribute this software for any @@ -323,12 +323,12 @@ restore_limits(); /* But avoid a setuid() failure on Linux due to RLIMIT_NPROC. */ unlimit_nproc(); - if (setgid(user_details.gid)) { - sudo_warn(U_("unable to set gid to %u"), (unsigned int)user_details.gid); + if (setgid(user_details.cred.gid)) { + sudo_warn(U_("unable to set gid to %u"), (unsigned int)user_details.cred.gid); _exit(255); } - if (setuid(user_details.uid)) { - sudo_warn(U_("unable to set uid to %u"), (unsigned int)user_details.uid); + if (setuid(user_details.cred.uid)) { + sudo_warn(U_("unable to set uid to %u"), (unsigned int)user_details.cred.uid); _exit(255); } restore_nproc(); diff -Nru sudo-1.9.4p2/src/ttyname.c sudo-1.9.5p2/src/ttyname.c --- sudo-1.9.4p2/src/ttyname.c 2020-12-16 19:33:44.000000000 -0600 +++ sudo-1.9.5p2/src/ttyname.c 2021-01-09 14:12:16.000000000 -0600 @@ -111,7 +111,7 @@ mib[3] = (int)getpid(); mib[4] = sizeof(*ki_proc); mib[5] = 1; - do { + for (;;) { struct sudo_kinfo_proc *kp; size += size / 10; @@ -121,7 +121,9 @@ } ki_proc = kp; rc = sysctl(mib, sudo_kp_namelen, ki_proc, &size, NULL, 0); - } while (rc == -1 && errno == ENOMEM); + if (rc != -1 || errno != ENOMEM) + break; + } errno = ENOENT; if (rc != -1) { if ((dev_t)ki_proc->sudo_kp_tdev != (dev_t)-1) {