contact: forbid indexing and slicing

This commit is contained in:
Alexander Krotov
2020-06-19 02:44:23 +03:00
committed by link2xt
parent ad531876fd
commit c655fd8a64

View File

@@ -1,5 +1,7 @@
//! Contacts module
#![forbid(clippy::indexing_slicing)]
use async_std::path::PathBuf;
use deltachat_derive::*;
use itertools::Itertools;
@@ -1029,10 +1031,10 @@ pub fn addr_normalize(addr: &str) -> &str {
let norm = addr.trim();
if norm.starts_with("mailto:") {
return &norm[7..];
norm.get(7..).unwrap_or(norm)
} else {
norm
}
norm
}
fn sanitize_name_and_addr(name: impl AsRef<str>, addr: impl AsRef<str>) -> (String, String) {
@@ -1042,11 +1044,15 @@ fn sanitize_name_and_addr(name: impl AsRef<str>, addr: impl AsRef<str>) -> (Stri
if let Some(captures) = ADDR_WITH_NAME_REGEX.captures(addr.as_ref()) {
(
if name.as_ref().is_empty() {
normalize_name(&captures[1])
captures
.get(1)
.map_or("".to_string(), |m| normalize_name(m.as_str()))
} else {
name.as_ref().to_string()
},
captures[2].to_string(),
captures
.get(2)
.map_or("".to_string(), |m| m.as_str().to_string()),
)
} else {
(name.as_ref().to_string(), addr.as_ref().to_string())
@@ -1117,24 +1123,17 @@ pub(crate) async fn set_profile_image(
///
/// Typically, this function is not needed as it is called implicitly by `Contact::add_address_book`.
pub fn normalize_name(full_name: impl AsRef<str>) -> String {
let mut full_name = full_name.as_ref().trim();
let full_name = full_name.as_ref().trim();
if full_name.is_empty() {
return full_name.into();
}
let len = full_name.len();
if len > 1 {
let firstchar = full_name.as_bytes()[0];
let lastchar = full_name.as_bytes()[len - 1];
if firstchar == b'\'' && lastchar == b'\''
|| firstchar == b'\"' && lastchar == b'\"'
|| firstchar == b'<' && lastchar == b'>'
{
full_name = &full_name[1..len - 1];
}
match full_name.as_bytes() {
[b'\'', .., b'\''] | [b'\"', .., b'\"'] | [b'<', .., b'>'] => full_name
.get(1..full_name.len() - 1)
.map_or("".to_string(), |s| s.trim().into()),
_ => full_name.to_string(),
}
full_name.trim().into()
}
fn cat_fingerprint(