Coverage Report

Created: 2026-10-17 06:09

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.36k
  uint8_t selector = data[0];
11
3.36k
  const char *payload = reinterpret_cast<const char *>(data + 1);
12
3.36k
  size_t payload_size = size - 1;
13
3.36k
  std::string input(payload, payload_size);
14
15
3.36k
  switch (selector % 7) {
16
490
  case 0: {
17
    // parse_range_header
18
490
    httplib::Ranges ranges;
19
490
    httplib::detail::parse_range_header(input, ranges);
20
490
    break;
21
0
  }
22
1.42k
  case 1: {
23
    // parse_accept_header
24
1.42k
    std::vector<std::string> content_types;
25
1.42k
    httplib::detail::parse_accept_header(input, content_types);
26
1.42k
    break;
27
0
  }
28
39
  case 2: {
29
    // extract_media_type with params
30
39
    std::map<std::string, std::string> params;
31
39
    httplib::detail::extract_media_type(input, &params);
32
39
    break;
33
0
  }
34
210
  case 3: {
35
    // parse_multipart_boundary
36
210
    std::string boundary;
37
210
    httplib::detail::parse_multipart_boundary(input, boundary);
38
210
    break;
39
0
  }
40
546
  case 4: {
41
    // parse_disposition_params
42
546
    httplib::Params params;
43
546
    httplib::detail::parse_disposition_params(input, params);
44
546
    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
659
  case 6: {
52
    // can_compress_content_type
53
659
    httplib::detail::can_compress_content_type(input);
54
659
    break;
55
0
  }
56
3.36k
  }
57
58
3.36k
  return 0;
59
3.36k
}