{"record":{"id":"3ec4112e83a57006","repo":"Pumpkin-MC/Pumpkin","slug":"sent-a-message-with-illegal-characters","errorCode":null,"errorMessage":"sent a message with illegal characters","messagePattern":"sent a message with illegal characters","errorType":"error_code","errorClass":"ChatError","httpStatus":null,"severity":"error","filePath":"crates/pumpkin/src/net/java/play/mod.rs","lineNumber":128,"sourceCode":"            Self::BlockOutOfWorld | Self::InvalidGamemode => Level::TRACE,\n            Self::BlockOutOfReach | Self::InvalidBlockFace | Self::InvalidHand => Level::WARN,\n        }\n    }\n\n    fn client_kick_reason(&self) -> Option<String> {\n        match self {\n            Self::BlockOutOfReach | Self::BlockOutOfWorld | Self::InvalidGamemode => None,\n            Self::InvalidBlockFace => Some(\"Invalid block face\".into()),\n            Self::InvalidHand => Some(\"Invalid hand\".into()),\n        }\n    }\n}\n\n#[derive(Debug, Error)]\npub enum ChatError {\n    #[error(\"sent an oversized message\")]\n    OversizedMessage,\n    #[error(\"sent a message with illegal characters\")]\n    IllegalCharacters,\n    #[error(\"sent a chat with invalid/no signature\")]\n    UnsignedChat,\n    #[error(\"has too many unacknowledged chats queued\")]\n    TooManyPendingChats,\n    #[error(\"sent a chat that couldn't be validated\")]\n    ChatValidationFailed,\n    #[error(\"sent a chat with an out of order timestamp\")]\n    OutOfOrderChat,\n    #[error(\"has an expired public key\")]\n    ExpiredPublicKey,\n    #[error(\"attempted to initialize a session with an invalid public key\")]\n    InvalidPublicKey,\n}\n\nimpl PumpkinError for ChatError {\n    fn is_kick(&self) -> bool {\n        true","sourceCodeStart":110,"sourceCodeEnd":146,"githubUrl":"https://github.com/Pumpkin-MC/Pumpkin/blob/8d4639e25a57c15e47448ec327c780d41bbf2356/crates/pumpkin/src/net/java/play/mod.rs#L110-L146","documentation":"Sentinel variant of ChatError raised when an inbound Java chat/signature packet contains characters the server considers illegal (section signs, control characters outside formatting rules). It is a validation guard over player-supplied chat text at packet-decode time; the offending input is the chat message body itself. The client is normally kicked with this reason.","triggerScenarios":"Thrown at crates/pumpkin/src/net/java/play/mod.rs:128 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Kick the player with an invalid-chat reason","Sanitize or reject messages containing illegal characters","Log the violation at warn level"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8d4639e25a57c15e47448ec327c780d41bbf2356","analyzedAt":"2026-09-09T15:32:22.916Z","contentChangedAt":"2026-09-09T15:32:22.916Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}