(input: &[u8])
| 186 | } |
| 187 | |
| 188 | async fn parse_query_message_safely(input: &[u8]) -> Result<FrontendMessage, Box<dyn std::error::Error>> { |
| 189 | let mut cursor = Cursor::new(input); |
| 190 | let parser = MessageParser::new(); |
| 191 | |
| 192 | // Calculate length for query parser |
| 193 | if input.len() < 5 { |
| 194 | return Err("Insufficient data for query message".into()); |
| 195 | } |
| 196 | |
| 197 | let length = u32::from_be_bytes([input[1], input[2], input[3], input[4]]); |
| 198 | |
| 199 | // Skip message type and length |
| 200 | cursor.set_position(5); |
| 201 | |
| 202 | match parser.parse_query(&mut cursor, length - 4).await { |
| 203 | Ok(msg) => Ok(msg), |
| 204 | Err(e) => Err(Box::new(e)) |
| 205 | } |
| 206 | } |
| 207 | |
| 208 | // Fuzz input generators |
| 209 |
no test coverage detected