From 50a2233b526426357c8e31509010f7fcb5ffbf3f Mon Sep 17 00:00:00 2001 From: Nutomic Date: Sat, 5 Nov 2022 00:56:38 +0000 Subject: [PATCH] Fix password length check (#2536) --- crates/api_common/src/utils.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/crates/api_common/src/utils.rs b/crates/api_common/src/utils.rs index 6b0b011a9..8c341c44b 100644 --- a/crates/api_common/src/utils.rs +++ b/crates/api_common/src/utils.rs @@ -314,7 +314,7 @@ pub async fn build_federated_instances( /// Checks the password length pub fn password_length_check(pass: &str) -> Result<(), LemmyError> { - if !(10..=60).contains(&pass.len()) { + if !(10..=60).contains(&pass.chars().count()) { Err(LemmyError::from_message("invalid_password")) } else { Ok(()) @@ -791,3 +791,17 @@ pub fn listing_type_with_site_default( &local_site.default_post_listing_type, )?)) } + +#[cfg(test)] +mod tests { + use crate::utils::password_length_check; + + #[test] + #[rustfmt::skip] + fn password_length() { + assert!(password_length_check("Õ¼¾°3yË,o¸ãtÌÈú|ÇÁÙAøüÒI©·¤(T]/ð>æºWæ[C¤bªWöaÃÎñ·{=û³&§½K/c").is_ok()); + assert!(password_length_check("1234567890").is_ok()); + assert!(password_length_check("short").is_err()); + assert!(password_length_check("looooooooooooooooooooooooooooooooooooooooooooooooooooooooooong").is_err()); + } +}