storkit: create 437_bug_strip_prefix_ci_panics_on_multi_byte_utf_8_input
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
name: "strip_prefix_ci panics on multi-byte UTF-8 input"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Bug 437: strip_prefix_ci panics on multi-byte UTF-8 input
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
The `strip_prefix_ci` function in `server/src/chat/transport/matrix/assign.rs` slices the input string at `prefix.len()` bytes without checking that the offset is a valid UTF-8 char boundary. When the input message starts with multi-byte characters (e.g. `⏺` which is 3 bytes), the slice can land mid-character, causing a panic.
|
||||||
|
|
||||||
|
## How to Reproduce
|
||||||
|
|
||||||
|
Send a Matrix message to the bot that starts with a multi-byte UTF-8 character (e.g. `⏺ storkit - wizard_confirm`) where the bot name byte length falls inside a multi-byte character.
|
||||||
|
|
||||||
|
## Actual Result
|
||||||
|
|
||||||
|
Thread panics: `byte index 6 is not a char boundary; it is inside '⏺' (bytes 4..7)`
|
||||||
|
|
||||||
|
## Expected Result
|
||||||
|
|
||||||
|
The function should return `None` (no match) without panicking, since an ASCII bot name cannot match a slice containing multi-byte characters.
|
||||||
|
|
||||||
|
## Acceptance Criteria
|
||||||
|
|
||||||
|
- [ ] strip_prefix_ci checks is_char_boundary before slicing
|
||||||
|
- [ ] No panic when input contains multi-byte UTF-8 characters at the prefix boundary
|
||||||
Reference in New Issue
Block a user