From 91ef2b671e18680de6b135910491466498896bdb Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Fri, 4 Feb 2022 15:30:55 +0300 Subject: chore(ops/posix_mq.rs): upgrade to nix 0.23 The previous version had a CVE. As part of this upgrade, the handling of errors inside of the Nix crate changed, which we now accommodate. Change-Id: Iad9a473c1782e0d79919cb5dc3f76316852d8a16 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5226 Tested-by: BuildkiteCI Autosubmit: tazjin Reviewed-by: sterni --- ops/posix_mq.rs/src/error.rs | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-) (limited to 'ops/posix_mq.rs/src/error.rs') diff --git a/ops/posix_mq.rs/src/error.rs b/ops/posix_mq.rs/src/error.rs index c509d45c28..84be154bee 100644 --- a/ops/posix_mq.rs/src/error.rs +++ b/ops/posix_mq.rs/src/error.rs @@ -47,7 +47,7 @@ pub enum Error { // Some other unexpected / unknown error occured. This is probably an error from // the nix crate. Bug reports also welcome for this! - UnknownInternalError(Option), + UnknownInternalError(), } impl fmt::Display for Error { @@ -74,7 +74,7 @@ impl fmt::Display for Error { "maximum number of system file descriptors reached" } UnknownForeignError(_) => "unknown foreign error occured: please report a bug!", - UnknownInternalError(_) => "unknown internal error occured: please report a bug!", + UnknownInternalError() => "unknown internal error occured: please report a bug!", }) } } @@ -91,11 +91,20 @@ impl error::Error for Error { /// This from implementation is used to translate errors from the lower-level /// C-calls into sensible Rust errors. -impl From for Error { - fn from(e: nix::Error) -> Self { - match e { - nix::Error::Sys(e) => match_errno(e), - _ => Error::UnknownInternalError(Some(e)), +impl From for Error { + fn from(err: nix::Error) -> Self { + use nix::errno::Errno::*; + match err { + EACCES => Error::PermissionDenied(), + EBADF => Error::InvalidQueueDescriptor(), + EINTR => Error::QueueCallInterrupted(), + EEXIST => Error::QueueAlreadyExists(), + EMFILE => Error::ProcessFileDescriptorLimitReached(), + ENFILE => Error::SystemFileDescriptorLimitReached(), + ENOENT => Error::QueueNotFound(), + ENOMEM => Error::InsufficientMemory(), + ENOSPC => Error::InsufficientSpace(), + _ => Error::UnknownForeignError(err), } } } @@ -111,23 +120,6 @@ impl From for Error { // here because the system is probably seriously broken if those files don't contain numbers. impl From for Error { fn from(_: num::ParseIntError) -> Self { - Error::UnknownInternalError(None) - } -} - -fn match_errno(err: nix::errno::Errno) -> Error { - use nix::errno::Errno::*; - - match err { - EACCES => Error::PermissionDenied(), - EBADF => Error::InvalidQueueDescriptor(), - EINTR => Error::QueueCallInterrupted(), - EEXIST => Error::QueueAlreadyExists(), - EMFILE => Error::ProcessFileDescriptorLimitReached(), - ENFILE => Error::SystemFileDescriptorLimitReached(), - ENOENT => Error::QueueNotFound(), - ENOMEM => Error::InsufficientMemory(), - ENOSPC => Error::InsufficientSpace(), - _ => Error::UnknownForeignError(err), + Error::UnknownInternalError() } } -- cgit 1.4.1