Coverage Report

Created: 2026-08-14 06:23

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/simdjson/fuzz/fuzz_padded.cpp
Line
Count
Source
1
#include "FuzzUtils.h"
2
#include "simdjson.h"
3
#include <cstddef>
4
#include <cstdint>
5
#include <fstream>
6
#include <string>
7
8
977
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
9
977
  FuzzData fd(Data, Size);
10
11
977
  const int action = fd.getInt<0, 10>();
12
13
977
  const auto s1 = fd.get<size_t>();
14
977
  const auto s2 = fd.get<size_t>();
15
977
  switch (action) {
16
124
  case 0: {
17
124
    simdjson_unused simdjson::padded_string p(s1);
18
124
  } break;
19
248
  case 1: {
20
    // operator== with temp value
21
248
    simdjson_unused simdjson::padded_string p1(s1);
22
248
    simdjson_unused simdjson::padded_string p2(s2);
23
248
    p1 = std::move(p2);
24
248
  } break;
25
259
  case 2: {
26
    // swap
27
259
    simdjson_unused simdjson::padded_string p1(s1);
28
259
    simdjson_unused simdjson::padded_string p2(s2);
29
259
    p1.swap(p2);
30
259
  } break;
31
131
  case 3: {
32
131
    simdjson_unused simdjson::padded_string p(s1);
33
131
    p.data();
34
131
  } break;
35
120
  case 4: {
36
120
    simdjson::padded_string p(s1);
37
120
    simdjson_unused auto sv = static_cast<std::string_view>(p);
38
120
  } break;
39
92
  case 5: {
40
    // load from file.
41
92
    const std::string filename = "/dev/shm/fuzz_padded.tmp";
42
92
    {
43
92
      std::ofstream file(filename);
44
92
      assert(file);
45
92
      const long ssize = static_cast<long>(fd.Size);
46
92
      file.write(fd.chardata(), ssize);
47
92
      assert(file.tellp() == ssize);
48
92
    }
49
92
    simdjson_unused auto data = simdjson::padded_string::load(filename);
50
92
  } break;
51
3
  default:;
52
977
  }
53
977
  return 0;
54
977
}