Coverage Report

Created: 2026-02-14 06:42

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
6.33k
{
13
6.33k
    using namespace boost::beast;
14
15
6.33k
    error_code ec;
16
6.33k
    flat_buffer buffer;
17
6.33k
    net::io_context ioc;
18
6.33k
    test::stream remote{ioc};
19
20
6.33k
    websocket::stream<test::stream> ws{
21
6.33k
        ioc, string_view{reinterpret_cast<const char*>(data), size}};
22
23
6.33k
    ws.set_option(websocket::stream_base::decorator(
24
6.33k
        [](websocket::response_type& res)
25
6.33k
        {
26
3.76k
            res.set(http::field::server, "websocket-server-sync");
27
3.76k
        }));
28
29
6.33k
    websocket::permessage_deflate pd;
30
6.33k
    pd.server_enable = (size % 2) != 0;
31
6.33k
    pd.compLevel = static_cast<int>(size % 9);
32
6.33k
    ws.set_option(pd);
33
34
6.33k
    ws.next_layer().connect(remote);
35
6.33k
    ws.next_layer().close_remote();
36
6.33k
    ws.accept(ec);
37
38
6.33k
    if(!ec)
39
3.51k
    {
40
3.51k
        ws.read(buffer, ec);
41
3.51k
        ws.text(ws.got_text());
42
3.51k
        ws.write(buffer.data(), ec);
43
3.51k
    }
44
45
6.33k
    return 0;
46
6.33k
}