Enum fs_mistrust::Error
source · #[non_exhaustive]pub enum Error {
Show 17 variants
NotFound(PathBuf),
BadPermission(PathBuf, u32, u32),
BadOwner(PathBuf, u32),
BadType(PathBuf),
CouldNotInspect(PathBuf, Arc<Error>),
Multiple(Vec<Box<Error>>),
StepsExceeded,
CurrentDirectory(Arc<Error>),
CreatingDir(Arc<Error>),
Content(Box<Error>),
Listing(Arc<Error>),
InvalidSubdirectory,
Io {
filename: PathBuf,
action: &'static str,
err: Arc<Error>,
},
MissingField(UninitializedFieldError),
NoSuchGroup(String),
NoSuchUser(String),
PasswdGroupIoError(Arc<Error>),
}
Expand description
An error returned while checking a path for privacy.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
NotFound(PathBuf)
A target (or one of its ancestors) was not found.
BadPermission(PathBuf, u32, u32)
A target (or one of its ancestors) had incorrect permissions.
Only generated on unix-like systems.
The first integer contains the current permission bits, and the second contains the permission bits which were incorrectly set.
BadOwner(PathBuf, u32)
A target (or one of its ancestors) had an untrusted owner.
Only generated on unix-like systems.
The provided integer contains the user_id o
BadType(PathBuf)
A target (or one of its ancestors) had the wrong type.
Ordinarily, the target may be anything at all, though you can override
this with require_file
and
require_directory
.
CouldNotInspect(PathBuf, Arc<Error>)
We were unable to inspect the target or one of its ancestors.
(Ironically, we might lack permissions to see if something’s permissions are correct.)
(The std::io::Error
that caused this problem is wrapped in an Arc
so
that our own Error
type can implement Clone
.)
Multiple(Vec<Box<Error>>)
Multiple errors occurred while inspecting the target.
This variant will only be returned if the caller specifically asked for
it by calling all_errors
.
We will never construct an instance of this variant with an empty Vec
.
StepsExceeded
We’ve realized that we can’t finish resolving our path without taking more than the maximum number of steps. The likeliest explanation is a symlink loop.
CurrentDirectory(Arc<Error>)
We can’t find our current working directory, or we found it but it looks impossible.
CreatingDir(Arc<Error>)
We tried to create a directory, and encountered a failure in doing so.
Content(Box<Error>)
We found a problem while checking the contents of the directory.
Listing(Arc<Error>)
walkdir
only.We were unable to inspect the contents of the directory
This error is only present when the walkdir
feature is enabled.
InvalidSubdirectory
Tried to use an invalid path with a CheckedDir
,
Io
We encountered an error while attempting an IO operation on a file.
Fields
MissingField(UninitializedFieldError)
A field was missing when we tried to construct a
Mistrust
.
NoSuchGroup(String)
A group that we were configured to trust could not be found.
NoSuchUser(String)
A user that we were configured to trust could not be found.
PasswdGroupIoError(Arc<Error>)
Error accessing passwd/group databases or obtaining our uids/gids
Implementations§
source§impl Error
impl Error
sourcepub fn is_bad_permission(&self) -> bool
pub fn is_bad_permission(&self) -> bool
Return true iff this error indicates a problem with filesystem permissions.
(Other errors typically indicate an IO problem, possibly one preventing us from looking at permissions in the first place)
sourcepub fn errors<'a>(&'a self) -> impl Iterator<Item = &Error> + 'a
pub fn errors<'a>(&'a self) -> impl Iterator<Item = &Error> + 'a
Return an iterator over all of the errors contained in this Error.
If this is a singleton, the iterator returns only a single element.
Otherwise, it returns all the elements inside the Error::Multiple
variant.
Does not recurse, since we do not create nested instances of
Error::Multiple
.