From 2f359b515ca4f986f1755b524723ccb01c6140c2 Mon Sep 17 00:00:00 2001 From: FujiApple Date: Fri, 31 Jan 2020 13:11:40 +0800 Subject: [PATCH] - Fix recursive `Display::fmt` implementation on `Error` to avoid stack overflow - Added unit test to cover a sample case --- src/errors.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/errors.rs b/src/errors.rs index d634581..49e6f09 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -117,7 +117,7 @@ impl fmt::Display for Error { | ErrorKind::ImmatureSignature | ErrorKind::InvalidAlgorithm | ErrorKind::InvalidKeyFormat - | ErrorKind::InvalidAlgorithmName => write!(f, "{}", self), + | ErrorKind::InvalidAlgorithmName => write!(f, "{:?}", self.0), ErrorKind::Json(ref err) => write!(f, "JSON error: {}", err), ErrorKind::Utf8(ref err) => write!(f, "UTF-8 error: {}", err), ErrorKind::Crypto(ref err) => write!(f, "Crypto error: {}", err), @@ -162,3 +162,14 @@ impl From for Error { new_error(kind) } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_error_rendering() { + assert_eq!("InvalidAlgorithmName", Error::from(ErrorKind::InvalidAlgorithmName).to_string()); + } + +} \ No newline at end of file