MCPcopy Create free account
hub / github.com/erans/pgsqlite / parse_query_message_safely

Function parse_query_message_safely

tests/protocol_fuzzing_test.rs:188–206  ·  view source on GitHub ↗
(input: &[u8])

Source from the content-addressed store, hash-verified

186}
187
188async 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

Callers 1

test_fuzz_query_messagesFunction · 0.85

Calls 2

parse_queryMethod · 0.80
lenMethod · 0.45

Tested by

no test coverage detected