Coverage Report

Created: 2026-07-30 07:13

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/qpdf/fuzz/runlength_fuzzer.cc
Line
Count
Source
1
#include <qpdf/Pl_Discard.hh>
2
#include <qpdf/Pl_RunLength.hh>
3
#include <qpdf/global.hh>
4
5
#include <iostream>
6
#include <stdexcept>
7
8
class FuzzHelper
9
{
10
  public:
11
    FuzzHelper(unsigned char const* data, size_t size) :
12
163
        data(data),
13
163
        size(size)
14
163
    {
15
163
    }
16
17
    void
18
    run()
19
163
    {
20
163
        qpdf::global::options::fuzz_mode(true);
21
22
163
        Pl_Discard discard;
23
163
        Pl_RunLength p("decode", &discard, Pl_RunLength::a_decode);
24
163
        try {
25
163
            p.write(data, size);
26
163
            p.finish();
27
163
        } catch (std::runtime_error const& e) {
28
65
            std::cerr << "runtime_error: " << e.what() << '\n';
29
65
        }
30
163
    }
31
32
  private:
33
    unsigned char const* data;
34
    size_t size;
35
};
36
37
extern "C" int
38
LLVMFuzzerTestOneInput(unsigned char const* data, size_t size)
39
163
{
40
163
    FuzzHelper f(data, size);
41
163
    f.run();
42
163
    return 0;
43
163
}