]> Untitled Git - lemmy.git/commitdiff
Add comment depth check (#2940)
authorAnon <makotech222@users.noreply.github.com>
Thu, 8 Jun 2023 14:31:26 +0000 (09:31 -0500)
committerGitHub <noreply@github.com>
Thu, 8 Jun 2023 14:31:26 +0000 (10:31 -0400)
* Add comment depth check

* Move comment depth code

* linter fix

crates/api_crud/src/comment/create.rs

index 5001879475c61dbaab9cc3d290164d23d0b97c4f..4ef8686e2e77f5aebdba299e10cb1a1fc976e2af 100644 (file)
@@ -33,6 +33,7 @@ use lemmy_utils::{
     validation::is_valid_body_field,
   },
 };
+const MAX_COMMENT_DEPTH_LIMIT: usize = 100;
 
 #[async_trait::async_trait(?Send)]
 impl PerformCrud for CreateComment {
@@ -77,6 +78,7 @@ impl PerformCrud for CreateComment {
       if parent.post_id != post_id {
         return Err(LemmyError::from_message("couldnt_create_comment"));
       }
+      check_comment_depth(parent)?;
     }
 
     // if no language is set, copy language from parent post/comment
@@ -186,3 +188,13 @@ impl PerformCrud for CreateComment {
     .await
   }
 }
+
+pub fn check_comment_depth(comment: &Comment) -> Result<(), LemmyError> {
+  let path = &comment.path.0;
+  let length = path.split('.').collect::<Vec<&str>>().len();
+  if length > MAX_COMMENT_DEPTH_LIMIT {
+    Err(LemmyError::from_message("max_comment_depth_reached"))
+  } else {
+    Ok(())
+  }
+}