Coverage Report

Created: 2025-06-16 06:16

/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
914
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
8
914
    auto fdp = FuzzedDataProvider(data, size);
9
10
914
    auto parser = args::ArgumentParser("parse_args_fuzzer");
11
12
914
    auto help = args::HelpFlag(parser, "help", "Displays this help menu", {'h', "help"});
13
914
    auto test = args::Flag(parser, "test", "Test flag", {'t', "test"});
14
914
    auto param = args::Flag(parser, "param", "Param flag", {'p', "param"});
15
16
914
    auto count = fdp.ConsumeIntegralInRange(1, 10);
17
914
    auto arguments = std::vector<std::string>();
18
914
    arguments.reserve(count);
19
5.28k
    for (int i = 0; i < count; ++i) {
20
4.37k
        arguments.emplace_back(fdp.ConsumeRandomLengthString());
21
4.37k
    }
22
23
914
    try {
24
914
        parser.ParseArgs(arguments.begin(), arguments.end());
25
914
    } catch (...) {
26
901
    }
27
28
914
    return 0;
29
914
}
30