Coverage Report

Created: 2026-08-31 06:06

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/cpp-httplib/test/fuzzing/header_parser_fuzzer.cc
Line
Count
Source
1
#include <cstdint>
2
#include <cstring>
3
#include <string>
4
5
#include <httplib.h>
6
7
3.36k
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
8
3.36k
  if (size < 2) return 0;
9
10
3.35k
  uint8_t selector = data[0];
11
3.35k
  const char *payload = reinterpret_cast<const char *>(data + 1);
12
3.35k
  size_t payload_size = size - 1;
13
3.35k
  std::string input(payload, payload_size);
14
15
3.35k
  switch (selector % 7) {
16
479
  case 0: {
17
    // parse_range_header
18
479
    httplib::Ranges ranges;
19
479
    httplib::detail::parse_range_header(input, ranges);
20
479
    break;
21
0
  }
22
1.41k
  case 1: {
23
    // parse_accept_header
24
1.41k
    std::vector<std::string> content_types;
25
1.41k
    httplib::detail::parse_accept_header(input, content_types);
26
1.41k
    break;
27
0
  }
28
56
  case 2: {
29
    // extract_media_type with params
30
56
    std::map<std::string, std::string> params;
31
56
    httplib::detail::extract_media_type(input, &params);
32
56
    break;
33
0
  }
34
195
  case 3: {
35
    // parse_multipart_boundary
36
195
    std::string boundary;
37
195
    httplib::detail::parse_multipart_boundary(input, boundary);
38
195
    break;
39
0
  }
40
548
  case 4: {
41
    // parse_disposition_params
42
548
    httplib::Params params;
43
548
    httplib::detail::parse_disposition_params(input, params);
44
548
    break;
45
0
  }
46
3
  case 5: {
47
    // parse_http_date
48
3
    httplib::detail::parse_http_date(input);
49
3
    break;
50
0
  }
51
660
  case 6: {
52
    // can_compress_content_type
53
660
    httplib::detail::can_compress_content_type(input);
54
660
    break;
55
0
  }
56
3.35k
  }
57
58
3.35k
  return 0;
59
3.35k
}