sudo_plugin 1.2.0

Macros to easily write custom sudo plugins
Documentation
Build #233632 2020-03-26 08:22:18

# rustc version rustc 1.44.0-nightly (a5fb9ae5b 2020-03-25)

# docs.rs version docsrs 0.6.0 (794c8db 2020-03-21)

# build log [INFO] running `"docker" "create" "-v" "/home/cratesfyi/workspace/builds/sudo_plugin-1.2.0/target:/opt/rustwide/target:rw,Z" "-v" "/home/cratesfyi/workspace/builds/sudo_plugin-1.2.0/source:/opt/rustwide/workdir:ro,Z" "-v" "/home/cratesfyi/workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/home/cratesfyi/workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "MAP_USER_ID=1001" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=-Z unstable-options --resource-suffix -20200325-1.44.0-nightly-a5fb9ae5b --static-root-path / --extern-html-root-url sudo_plugin_sys=https://docs.rs/sudo_plugin-sys/1.2.0 --extern-html-root-url error_chain=https://docs.rs/error-chain/0.12.2 --extern-html-root-url libc=https://docs.rs/libc/0.2.68" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "3221225472" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "doc" "--lib" "--no-deps"` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] bffe58f88a3cf005d676afc6ef5cac938fbf116ed379de5497d6baecc14367b4 [INFO] running `"docker" "start" "-a" "bffe58f88a3cf005d676afc6ef5cac938fbf116ed379de5497d6baecc14367b4"` [INFO] [stderr] Compiling libc v0.2.68 [INFO] [stderr] Compiling cc v1.0.50 [INFO] [stderr] Compiling version_check v0.9.1 [INFO] [stderr] Checking rustc-demangle v0.1.16 [INFO] [stderr] Checking cfg-if v0.1.10 [INFO] [stderr] Compiling error-chain v0.12.2 [INFO] [stderr] Checking sudo_plugin-sys v1.2.0 [INFO] [stderr] Compiling backtrace-sys v0.1.35 [INFO] [stderr] Checking backtrace v0.3.46 [INFO] [stderr] Documenting sudo_plugin v1.2.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/lib.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / //! description = "Macros to simplify writing sudo plugins" [INFO] [stderr] 16 | | //! [INFO] [stderr] 17 | | //! TODO: explain [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] note: the lint level is defined here [INFO] [stderr] --> src/lib.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | #![warn(rustdoc)] [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] = note: `#[warn(missing_doc_code_examples)]` implied by `#[warn(rustdoc)]` [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/lib.rs:59:1 [INFO] [stderr] | [INFO] [stderr] 59 | pub use sudo_plugin_sys as sys; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/lib.rs:61:1 [INFO] [stderr] | [INFO] [stderr] 61 | pub use self::plugin::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | //! The collection of `Error` types used by this library. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:35:1 [INFO] [stderr] | [INFO] [stderr] 35 | /// The list of supported facilities to communicate with the end-user. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | / /// A printf-style function that can be used for one-way communication [INFO] [stderr] 39 | | /// with the invoking user. [INFO] [stderr] | |_______________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | / /// A more complicated facility that enables two-way communication [INFO] [stderr] 43 | | /// with the invoking user. [INFO] [stderr] | |_______________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:82:1 [INFO] [stderr] | [INFO] [stderr] 82 | / /// A trait that is implemented by all Error types in this library, which [INFO] [stderr] 83 | | /// allows any error to be converted to its corresponding integer error [INFO] [stderr] 84 | | /// code as understood by the sudo plugin API. [INFO] [stderr] 85 | | /// [INFO] [stderr] ... | [INFO] [stderr] 90 | | /// * -1: General error [INFO] [stderr] 91 | | /// * -2: Usage error [INFO] [stderr] | |_____________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | / /// Converts the error to its corresponding integer error code for [INFO] [stderr] 94 | | /// the I/O plugin `open` function. [INFO] [stderr] | |_______________________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:97:5 [INFO] [stderr] | [INFO] [stderr] 97 | / /// Converts the error to its corresponding integer error code for [INFO] [stderr] 98 | | /// the I/O plugin `log_*` suite of functions. [INFO] [stderr] | |__________________________________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/macros.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | //! Macros to simplify the process of correctly wiring up a sudo plugin. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / //! Utilities for wrapping sudo plugins and the values they're [INFO] [stderr] 16 | | //! configured with. [INFO] [stderr] | |____________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/option_map.rs:26:1 [INFO] [stderr] | [INFO] [stderr] 26 | / /// A HashMap-like list of options parsed from the pointers provided by [INFO] [stderr] 27 | | /// the underlying sudo plugin API. [INFO] [stderr] 28 | | /// [INFO] [stderr] 29 | | /// Allows for automatic parsing of values into any type which implements [INFO] [stderr] 30 | | /// the `FromSudoOption` trait as well as values into a `Vec` of any type [INFO] [stderr] 31 | | /// which implements the `FromSudoOptionList` trait. [INFO] [stderr] | |____________________________________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/option_map.rs:33:22 [INFO] [stderr] | [INFO] [stderr] 33 | pub struct OptionMap(HashMap<Vec<u8>, Vec<u8>>); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:44:1 [INFO] [stderr] | [INFO] [stderr] 44 | / /// An implementation of a sudo plugin, initialized and parsed from the [INFO] [stderr] 45 | | /// values passed to the underlying `open` callback. [INFO] [stderr] | |____________________________________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | /// The plugin API version supported by the invoked `sudo` command. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | / /// The command being executed, in the same form as would be passed [INFO] [stderr] 52 | | /// to the `execve(2)` system call. [INFO] [stderr] | |_______________________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | / /// A map of user-supplied sudo settings. These settings correspond [INFO] [stderr] 56 | | /// to flags the user specified when running sudo. As such, they [INFO] [stderr] 57 | | /// will only be present when the corresponding flag has been specified [INFO] [stderr] 58 | | /// on the command line. [INFO] [stderr] | |____________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | /// A map of information about the user running the command. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:64:5 [INFO] [stderr] | [INFO] [stderr] 64 | /// A map of information about the command being run. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:67:5 [INFO] [stderr] | [INFO] [stderr] 67 | /// A map of the user's environment variables. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:70:5 [INFO] [stderr] | [INFO] [stderr] 70 | / /// A map of options provided to the plugin after the its path in [INFO] [stderr] 71 | | /// sudo.conf. [INFO] [stderr] 72 | | /// [INFO] [stderr] 73 | | /// Settings that aren't of the form `key=value` will have a key [INFO] [stderr] 74 | | /// in the map whose value is the same as the key, similar to how [INFO] [stderr] 75 | | /// HTML handles valueless attributes (e.g., `disabled` will become [INFO] [stderr] 76 | | /// `plugin_options["disabled"] => "disabled"`). [INFO] [stderr] | |____________________________________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | printf: Arc<Mutex<sudo_plugin_sys::sudo_printf_non_null_t>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | _conversation: sudo_plugin_sys::sudo_conv_t, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:244:1 [INFO] [stderr] | [INFO] [stderr] 244 | / /// [INFO] [stderr] 245 | | /// A facility implementing `std::io::Write` that allows printing [INFO] [stderr] 246 | | /// output to directly to the terminal of the user invoking `sudo`. [INFO] [stderr] 247 | | /// [INFO] [stderr] | |___^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:249:16 [INFO] [stderr] | [INFO] [stderr] 249 | pub struct Tty(File); [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:267:1 [INFO] [stderr] | [INFO] [stderr] 267 | / /// [INFO] [stderr] 268 | | /// A facility implementing `std::io::Write` that allows printing [INFO] [stderr] 269 | | /// output to the user invoking `sudo`. Technically, the user may [INFO] [stderr] 270 | | /// not be present on a local tty, but this will be wired up to a [INFO] [stderr] 271 | | /// `printf`-like function that outputs to either STDOUT or STDERR. [INFO] [stderr] 272 | | /// [INFO] [stderr] | |___^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:275:5 [INFO] [stderr] | [INFO] [stderr] 275 | / /// A *non-null* function pointer to a `sudo_printf_t` printf [INFO] [stderr] 276 | | /// facility [INFO] [stderr] | |________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:281:5 [INFO] [stderr] | [INFO] [stderr] 281 | / /// A `sudo_conv_message` bitflag to indicate how and where the [INFO] [stderr] 282 | | /// message should be printed. [INFO] [stderr] | |__________________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/option_map.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / use crate::errors::*; [INFO] [stderr] 16 | | use super::traits::*; [INFO] [stderr] 17 | | [INFO] [stderr] 18 | | use std::collections::HashMap; [INFO] [stderr] ... | [INFO] [stderr] 274 | | } [INFO] [stderr] 275 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/option_map.rs:41:1 [INFO] [stderr] | [INFO] [stderr] 41 | / impl OptionMap { [INFO] [stderr] 42 | | /// Initializes the `OptionMap` from a pointer to the options [INFO] [stderr] 43 | | /// provided when `sudo` invokes the plugin's entry function. The [INFO] [stderr] 44 | | /// format of these is a NUL-terminated array of NUL-terminated [INFO] [stderr] ... | [INFO] [stderr] 125 | | } [INFO] [stderr] 126 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/option_map.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | / /// Initializes the `OptionMap` from a pointer to the options [INFO] [stderr] 43 | | /// provided when `sudo` invokes the plugin's entry function. The [INFO] [stderr] 44 | | /// format of these is a NUL-terminated array of NUL-terminated [INFO] [stderr] 45 | | /// strings in "key=value" format with the array terminated by a [INFO] [stderr] ... | [INFO] [stderr] 52 | | /// such a NULL byte, there is no other way to detect the end of [INFO] [stderr] 53 | | /// the options list. [INFO] [stderr] | |_________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/option_map.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | / /// Gets the value of a key as any arbitrary type that implements the [INFO] [stderr] 99 | | /// `FromSudoOption` trait. Returns `Err(_)` if no such key/value-pair [INFO] [stderr] 100 | | /// was provided during initialization. Also returns `Err(_)` if the [INFO] [stderr] 101 | | /// value was not interpretable as a UTF-8 string or if there was an [INFO] [stderr] 102 | | /// error parsing the value to the requested type. [INFO] [stderr] | |______________________________________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/option_map.rs:113:5 [INFO] [stderr] | [INFO] [stderr] 113 | / /// Gets the value of a key as a string. Returns `None` if no such [INFO] [stderr] 114 | | /// key/value-pair was provided during initialization. Also returns [INFO] [stderr] 115 | | /// `None` if the value was not interpretable as a UTF-8 string. [INFO] [stderr] | |____________________________________________________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/option_map.rs:120:5 [INFO] [stderr] | [INFO] [stderr] 120 | / /// Fetches a raw byte value using a bytes as the key. This is [INFO] [stderr] 121 | | /// provided to allow plugins to retrieve values for keys when the [INFO] [stderr] 122 | | /// value and/or key are not guaranteed to be UTF-8 strings. [INFO] [stderr] | |________________________________________________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/command_info.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / use crate::errors::*; [INFO] [stderr] 16 | | use super::option_map::*; [INFO] [stderr] 17 | | [INFO] [stderr] 18 | | use std::os::unix::io::RawFd; [INFO] [stderr] ... | [INFO] [stderr] 116 | | } [INFO] [stderr] 117 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/settings.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / use crate::errors::*; [INFO] [stderr] 16 | | use super::option_map::*; [INFO] [stderr] 17 | | use super::traits::*; [INFO] [stderr] 18 | | [INFO] [stderr] ... | [INFO] [stderr] 224 | | const SEPARATOR: char = ' '; [INFO] [stderr] 225 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/user_info.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / use crate::errors::*; [INFO] [stderr] 16 | | use super::option_map::*; [INFO] [stderr] 17 | | [INFO] [stderr] 18 | | use std::path::PathBuf; [INFO] [stderr] ... | [INFO] [stderr] 69 | | } [INFO] [stderr] 70 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/traits.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / use std::collections::HashSet; [INFO] [stderr] 16 | | use std::hash::Hash; [INFO] [stderr] 17 | | use std::path::PathBuf; [INFO] [stderr] 18 | | use std::str::FromStr; [INFO] [stderr] ... | [INFO] [stderr] 165 | | impl FromSudoOptionList for u64 {} [INFO] [stderr] 166 | | impl FromSudoOptionList for PathBuf {} [INFO] [stderr] | |______________________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:83:1 [INFO] [stderr] | [INFO] [stderr] 83 | / impl Plugin { [INFO] [stderr] 84 | | /// Initializes a `Plugin` from the arguments provided to the [INFO] [stderr] 85 | | /// underlying C `open` callback function. Verifies the API version [INFO] [stderr] 86 | | /// advertised by the underlying `sudo` is supported by this library, [INFO] [stderr] ... | [INFO] [stderr] 241 | | } [INFO] [stderr] 242 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:84:5 [INFO] [stderr] | [INFO] [stderr] 84 | / /// Initializes a `Plugin` from the arguments provided to the [INFO] [stderr] 85 | | /// underlying C `open` callback function. Verifies the API version [INFO] [stderr] 86 | | /// advertised by the underlying `sudo` is supported by this library, [INFO] [stderr] 87 | | /// parses all provided options, and wires up communication [INFO] [stderr] 88 | | /// facilities. [INFO] [stderr] 89 | | /// [INFO] [stderr] 90 | | /// Returns an error if there was a problem initializing the plugin. [INFO] [stderr] | |________________________________________________________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:141:5 [INFO] [stderr] | [INFO] [stderr] 141 | / /// [INFO] [stderr] 142 | | /// Returns a facility implementing `std::io::Write` that emits to [INFO] [stderr] 143 | | /// the invoking user's STDOUT. [INFO] [stderr] 144 | | /// [INFO] [stderr] | |_______^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:152:5 [INFO] [stderr] | [INFO] [stderr] 152 | / /// [INFO] [stderr] 153 | | /// Returns a facility implementing `std::io::Write` that emits to [INFO] [stderr] 154 | | /// the invoking user's STDERR. [INFO] [stderr] 155 | | /// [INFO] [stderr] | |_______^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:163:5 [INFO] [stderr] | [INFO] [stderr] 163 | / /// [INFO] [stderr] 164 | | /// Returns a facility implementing `std::io::Write` that emits to [INFO] [stderr] 165 | | /// the user's TTY, if sudo detected one. [INFO] [stderr] 166 | | /// [INFO] [stderr] | |_______^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:173:5 [INFO] [stderr] | [INFO] [stderr] 173 | / /// [INFO] [stderr] 174 | | /// As best as can be reconstructed, what was actually typed at the [INFO] [stderr] 175 | | /// shell in order to launch this invocation of sudo. [INFO] [stderr] 176 | | /// [INFO] [stderr] | |_______^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:195:5 [INFO] [stderr] | [INFO] [stderr] 195 | / /// [INFO] [stderr] 196 | | /// The `cwd` to be used for the command being run. This is [INFO] [stderr] 197 | | /// typically set on the `user_info` component, but may be [INFO] [stderr] 198 | | /// overridden by the policy plugin setting its value on [INFO] [stderr] 199 | | /// `command_info`. [INFO] [stderr] 200 | | /// [INFO] [stderr] | |_______^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:207:5 [INFO] [stderr] | [INFO] [stderr] 207 | / /// [INFO] [stderr] 208 | | /// The complete set of groups the invoked command will have [INFO] [stderr] 209 | | /// privileges for. If the `-P` (`--preserve-groups`) flag was [INFO] [stderr] 210 | | /// passed to `sudo`, the underlying `command_info` will not have [INFO] [stderr] ... | [INFO] [stderr] 214 | | /// This set will always contain `runas_egid`. [INFO] [stderr] 215 | | /// [INFO] [stderr] | |_______^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:288:1 [INFO] [stderr] | [INFO] [stderr] 288 | / impl Printf { [INFO] [stderr] 289 | | /// [INFO] [stderr] 290 | | /// Writes a formatted error to the user via the configured [INFO] [stderr] 291 | | /// facility. [INFO] [stderr] ... | [INFO] [stderr] 313 | | } [INFO] [stderr] 314 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:289:5 [INFO] [stderr] | [INFO] [stderr] 289 | / /// [INFO] [stderr] 290 | | /// Writes a formatted error to the user via the configured [INFO] [stderr] 291 | | /// facility. [INFO] [stderr] 292 | | /// [INFO] [stderr] | |_______^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/version.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / use crate::errors::*; [INFO] [stderr] 16 | | [INFO] [stderr] 17 | | use std::fmt; [INFO] [stderr] 18 | | [INFO] [stderr] ... | [INFO] [stderr] 66 | | } [INFO] [stderr] 67 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/macros.rs:194:1 [INFO] [stderr] | [INFO] [stderr] 194 | / /// Internal macro used by `sudo_io_plugin` that generates the actual [INFO] [stderr] 195 | | /// callback implementations for I/O plugins. [INFO] [stderr] | |_____________________________________________^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:102:1 [INFO] [stderr] | [INFO] [stderr] 102 | / impl<T, E: AsSudoPluginRetval> AsSudoPluginRetval for ::std::result::Result<T, E> { [INFO] [stderr] 103 | | fn as_sudo_io_plugin_open_retval(&self) -> c_int { [INFO] [stderr] 104 | | match *self { [INFO] [stderr] 105 | | Ok(_) => sys::SUDO_PLUGIN_OPEN_SUCCESS, [INFO] [stderr] ... | [INFO] [stderr] 115 | | } [INFO] [stderr] 116 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:103:5 [INFO] [stderr] | [INFO] [stderr] 103 | / fn as_sudo_io_plugin_open_retval(&self) -> c_int { [INFO] [stderr] 104 | | match *self { [INFO] [stderr] 105 | | Ok(_) => sys::SUDO_PLUGIN_OPEN_SUCCESS, [INFO] [stderr] 106 | | Err(ref e) => e.as_sudo_io_plugin_open_retval(), [INFO] [stderr] 107 | | } [INFO] [stderr] 108 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | / fn as_sudo_io_plugin_log_retval(&self) -> c_int { [INFO] [stderr] 111 | | match *self { [INFO] [stderr] 112 | | Ok(_) => sys::SUDO_PLUGIN_OPEN_SUCCESS, [INFO] [stderr] 113 | | Err(ref e) => e.as_sudo_io_plugin_log_retval(), [INFO] [stderr] 114 | | } [INFO] [stderr] 115 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:118:1 [INFO] [stderr] | [INFO] [stderr] 118 | / impl AsSudoPluginRetval for Error { [INFO] [stderr] 119 | | fn as_sudo_io_plugin_open_retval(&self) -> c_int { [INFO] [stderr] 120 | | match *self { [INFO] [stderr] 121 | | Error(ErrorKind::Unauthorized, _) => sys::SUDO_PLUGIN_OPEN_GENERAL_ERROR, [INFO] [stderr] ... | [INFO] [stderr] 131 | | } [INFO] [stderr] 132 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:119:5 [INFO] [stderr] | [INFO] [stderr] 119 | / fn as_sudo_io_plugin_open_retval(&self) -> c_int { [INFO] [stderr] 120 | | match *self { [INFO] [stderr] 121 | | Error(ErrorKind::Unauthorized, _) => sys::SUDO_PLUGIN_OPEN_GENERAL_ERROR, [INFO] [stderr] 122 | | Error(_, _) => sys::SUDO_PLUGIN_OPEN_FAILURE, [INFO] [stderr] 123 | | } [INFO] [stderr] 124 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:126:5 [INFO] [stderr] | [INFO] [stderr] 126 | / fn as_sudo_io_plugin_log_retval(&self) -> c_int { [INFO] [stderr] 127 | | match *self { [INFO] [stderr] 128 | | Error(ErrorKind::Unauthorized, _) => sys::SUDO_PLUGIN_OPEN_FAILURE, [INFO] [stderr] 129 | | Error(_, _) => sys::SUDO_PLUGIN_OPEN_GENERAL_ERROR, [INFO] [stderr] 130 | | } [INFO] [stderr] 131 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:47:1 [INFO] [stderr] | [INFO] [stderr] 47 | / impl fmt::Display for IoFacility { [INFO] [stderr] 48 | | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { [INFO] [stderr] 49 | | match *self { [INFO] [stderr] 50 | | IoFacility::PluginPrintf => write!(f, "plugin_printf"), [INFO] [stderr] ... | [INFO] [stderr] 53 | | } [INFO] [stderr] 54 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/errors.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | / fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { [INFO] [stderr] 49 | | match *self { [INFO] [stderr] 50 | | IoFacility::PluginPrintf => write!(f, "plugin_printf"), [INFO] [stderr] 51 | | IoFacility::Conversation => write!(f, "conversation"), [INFO] [stderr] 52 | | } [INFO] [stderr] 53 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:257:1 [INFO] [stderr] | [INFO] [stderr] 257 | / impl Write for Tty { [INFO] [stderr] 258 | | fn write(&mut self, buf: &[u8]) -> io::Result<usize> { [INFO] [stderr] 259 | | self.0.write(buf) [INFO] [stderr] 260 | | } [INFO] [stderr] ... | [INFO] [stderr] 264 | | } [INFO] [stderr] 265 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:258:5 [INFO] [stderr] | [INFO] [stderr] 258 | / fn write(&mut self, buf: &[u8]) -> io::Result<usize> { [INFO] [stderr] 259 | | self.0.write(buf) [INFO] [stderr] 260 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:262:5 [INFO] [stderr] | [INFO] [stderr] 262 | / fn flush(&mut self) -> io::Result<()> { [INFO] [stderr] 263 | | self.0.flush() [INFO] [stderr] 264 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:316:1 [INFO] [stderr] | [INFO] [stderr] 316 | / impl Write for Printf { [INFO] [stderr] 317 | | fn write(&mut self, buf: &[u8]) -> io::Result<usize> { [INFO] [stderr] 318 | | let message = CString::new(buf).map_err(|err| [INFO] [stderr] 319 | | io::Error::new(io::ErrorKind::InvalidData, err) [INFO] [stderr] ... | [INFO] [stderr] 344 | | } [INFO] [stderr] 345 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:317:5 [INFO] [stderr] | [INFO] [stderr] 317 | / fn write(&mut self, buf: &[u8]) -> io::Result<usize> { [INFO] [stderr] 318 | | let message = CString::new(buf).map_err(|err| [INFO] [stderr] 319 | | io::Error::new(io::ErrorKind::InvalidData, err) [INFO] [stderr] 320 | | )?; [INFO] [stderr] ... | [INFO] [stderr] 338 | | Ok(ret as _) [INFO] [stderr] 339 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: missing code example in this documentation [INFO] [stderr] --> src/plugin/mod.rs:342:5 [INFO] [stderr] | [INFO] [stderr] 342 | / fn flush(&mut self) -> io::Result<()> { [INFO] [stderr] 343 | | Ok(()) [INFO] [stderr] 344 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 4.95s [INFO] running `"docker" "inspect" "bffe58f88a3cf005d676afc6ef5cac938fbf116ed379de5497d6baecc14367b4"` [INFO] running `"docker" "rm" "-f" "bffe58f88a3cf005d676afc6ef5cac938fbf116ed379de5497d6baecc14367b4"` [INFO] [stdout] bffe58f88a3cf005d676afc6ef5cac938fbf116ed379de5497d6baecc14367b4