Coverage Report

Created: 2026-07-25 06:27

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/boost/libs/beast/test/fuzz/websocket_server.cpp
Line
Count
Source
1
//
2
// Copyright (c) 2024 Mikhail Khachayants
3
//
4
// Distributed under the Boost Software License, Version 1.0. (See accompanying
5
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
//
7
8
#include <boost/beast/websocket.hpp>
9
#include <boost/beast/_experimental/test/stream.hpp>
10
11
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
12
8.65k
{
13
8.65k
    using namespace boost::beast;
14
15
8.65k
    error_code ec;
16
8.65k
    flat_buffer buffer;
17
8.65k
    net::io_context ioc;
18
8.65k
    test::stream remote{ioc};
19
20
8.65k
    websocket::stream<test::stream> ws{
21
8.65k
        ioc, string_view{reinterpret_cast<const char*>(data), size}};
22
23
8.65k
    ws.set_option(websocket::stream_base::decorator(
24
8.65k
        [](websocket::response_type& res)
25
8.65k
        {
26
5.08k
            res.set(http::field::server, "websocket-server-sync");
27
5.08k
        }));
28
29
8.65k
    websocket::permessage_deflate pd;
30
8.65k
    pd.server_enable = (size % 2) != 0;
31
8.65k
    pd.compLevel = static_cast<int>(size % 9);
32
8.65k
    ws.set_option(pd);
33
34
8.65k
    ws.next_layer().connect(remote);
35
8.65k
    ws.next_layer().close_remote();
36
8.65k
    ws.accept(ec);
37
38
8.65k
    if(!ec)
39
4.75k
    {
40
4.75k
        ws.read(buffer, ec);
41
4.75k
        ws.text(ws.got_text());
42
4.75k
        ws.write(buffer.data(), ec);
43
4.75k
    }
44
45
8.65k
    return 0;
46
8.65k
}