Coverage Report

Created: 2026-09-01 06:52

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/fast_float/fuzz/from_chars.cc
Line
Count
Source
1
#include "fast_float/fast_float.h"
2
#include <fuzzer/FuzzedDataProvider.h>
3
#include <string>
4
#include <system_error>
5
6
6.48k
fast_float::chars_format arbitrary_format(FuzzedDataProvider &fdp) {
7
6.48k
  using fast_float::chars_format;
8
6.48k
  switch (fdp.ConsumeIntegralInRange<int>(0, 3)) {
9
1.47k
  case 0:
10
1.47k
    return chars_format::scientific;
11
0
    break;
12
1.36k
  case 1:
13
1.36k
    return chars_format::fixed;
14
0
    break;
15
1.04k
  case 2:
16
1.04k
    return chars_format::fixed;
17
0
    break;
18
6.48k
  }
19
2.59k
  return chars_format::general;
20
6.48k
}
21
22
6.48k
extern "C" int LLVMFuzzerTestOneInput(uint8_t const *data, size_t size) {
23
6.48k
  FuzzedDataProvider fdp(data, size);
24
6.48k
  fast_float::chars_format format = arbitrary_format(fdp);
25
6.48k
  double result_d = 0.0;
26
6.48k
  std::string input_d = fdp.ConsumeRandomLengthString(128);
27
6.48k
  auto answer = fast_float::from_chars(
28
6.48k
      input_d.data(), input_d.data() + input_d.size(), result_d, format);
29
6.48k
  std::string input_f = fdp.ConsumeRandomLengthString(128);
30
6.48k
  float result_f = 0.0;
31
6.48k
  answer = fast_float::from_chars(
32
6.48k
      input_f.data(), input_f.data() + input_f.size(), result_f, format);
33
6.48k
  int result_i = 0;
34
6.48k
  std::string input_i = fdp.ConsumeRandomLengthString(128);
35
6.48k
  answer = fast_float::from_chars(input_i.data(),
36
6.48k
                                  input_i.data() + input_i.size(), result_i);
37
6.48k
  return 0;
38
6.48k
}