/ justapi / fuzz / fuzz_targets / fuzz_websocket.rs
swadhinbiswas 📦 v2.0.8: security fixes, documentation, testing improvements · 7/28/2026
84307b8
26 lines · 804 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//! Fuzz target for WebSocket frame parsing.
//!
//! Tests that the WebSocket frame parser handles malformed input gracefully
//! without panicking or memory safety issues.

#![no_main]
use libfuzzer_sys::fuzz_target;

fuzz_target!(|data: &[u8]| {
    // Test WebSocket frame parsing with arbitrary bytes
    // This covers the upgrade handshake and frame parsing logic

    // Simulate a WebSocket upgrade request with fuzzed headers
    let _ = std::str::from_utf8(data);

    // Test SHA-1 computation (used in WebSocket accept key)
    use sha1::Digest;
    let mut sha1 = sha1::Sha1::new();
    sha1.update(data);
    let _ = sha1.finalize();

    // Test base64 encoding (used in WebSocket accept key)
    use base64::Engine;
    let _ = base64::engine::general_purpose::STANDARD.encode(data);
});