Coverage Report

Created: 2026-08-31 06:31

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/args/fuzz/parse_args_fuzzer.cpp
Line
Count
Source
1
#include <cstdint>
2
#include <vector>
3
4
#include <fuzzer/FuzzedDataProvider.h>
5
#include <args.hxx>
6
7
983
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
8
983
    auto fdp = FuzzedDataProvider(data, size);
9
10
983
    auto parser = args::ArgumentParser("parse_args_fuzzer");
11
12
983
    auto help = args::HelpFlag(parser, "help", "Displays this help menu", {'h', "help"});
13
983
    auto test = args::Flag(parser, "test", "Test flag", {'t', "test"});
14
983
    auto param = args::Flag(parser, "param", "Param flag", {'p', "param"});
15
16
983
    auto count = fdp.ConsumeIntegralInRange(1, 10);
17
983
    auto arguments = std::vector<std::string>();
18
983
    arguments.reserve(count);
19
5.51k
    for (int i = 0; i < count; ++i) {
20
4.53k
        arguments.emplace_back(fdp.ConsumeRandomLengthString());
21
4.53k
    }
22
23
983
    try {
24
983
        parser.ParseArgs(arguments.begin(), arguments.end());
25
983
    } catch (...) {
26
958
    }
27
28
983
    return 0;
29
983
}
30