diff --git a/CHANGELOG.md b/CHANGELOG.md index 44f9367..c24f2ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed - Added emoji count check to profile data validator. +- Check mention and link counts when creating post. ## [1.20.0] - 2023-03-07 diff --git a/src/mastodon_api/statuses/views.rs b/src/mastodon_api/statuses/views.rs index 5ac54e1..240cffc 100644 --- a/src/mastodon_api/statuses/views.rs +++ b/src/mastodon_api/statuses/views.rs @@ -59,6 +59,8 @@ use crate::validators::posts::{ clean_content, ATTACHMENT_LIMIT, EMOJI_LIMIT, + MENTION_LIMIT, + LINK_LIMIT, }; use super::helpers::{ build_status, @@ -129,11 +131,17 @@ async fn create_status( // Remove duplicate mentions mentions.sort(); mentions.dedup(); + if mentions.len() > MENTION_LIMIT { + return Err(ValidationError("too many mentions").into()); + }; // Links validation if links.len() > 0 && visibility != Visibility::Public { return Err(ValidationError("can't add links to non-public posts").into()); }; + if links.len() > LINK_LIMIT { + return Err(ValidationError("too many links").into()); + }; // Emoji validation let emojis: Vec<_> = emojis.iter().map(|emoji| emoji.id).collect();