Coverage Report

Created: 2026-10-28 07:06

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