Coverage Report

Created: 2026-08-14 08:24

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/poppler/qt6/tests/fuzzing/qt_pdf_fuzzer.cc
Line
Count
Source
1
#include <cstdint>
2
#include <poppler-qt6.h>
3
#include <poppler-form.h>
4
#include <QtCore/QBuffer>
5
#include <QtGui/QImage>
6
7
static void dummy_error_function(const QString &message, const QVariant &closure)
8
19.1M
{
9
19.1M
    Q_UNUSED(message)
10
19.1M
    Q_UNUSED(closure)
11
19.1M
}
12
13
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
14
6.32k
{
15
6.32k
    Poppler::setDebugErrorFunction(dummy_error_function, QVariant());
16
6.32k
    QByteArray in_data = QByteArray::fromRawData((const char *)data, size);
17
6.32k
    std::unique_ptr<Poppler::Document> doc = Poppler::Document::loadFromData(in_data);
18
6.32k
    if (!doc || doc->isLocked()) {
19
352
        return 0;
20
352
    }
21
22
53.2k
    for (int i = 0; i < doc->numPages(); i++) {
23
47.2k
        std::unique_ptr<Poppler::Page> p = doc->page(i);
24
47.2k
        if (!p) {
25
38.2k
            continue;
26
38.2k
        }
27
8.99k
        QImage image = p->renderToImage(72.0, 72.0, -1, -1, -1, -1, Poppler::Page::Rotate0);
28
8.99k
    }
29
30
5.97k
    const std::vector<std::unique_ptr<Poppler::FormFieldSignature>> signatures = doc->signatures();
31
5.97k
    for (const std::unique_ptr<Poppler::FormFieldSignature> &signature : signatures) {
32
5
        const Poppler::SignatureValidationInfo svi = signature->validateAsync(Poppler::FormFieldSignature::ValidateVerifyCertificate).first;
33
5
        signature->validateResult();
34
5
    }
35
36
5.97k
    doc->outline();
37
38
5.97k
    if (doc->numPages() > 0) {
39
5.85k
        QList<int> pageList;
40
53.1k
        for (int i = 0; i < doc->numPages(); i++) {
41
47.2k
            pageList << (i + 1);
42
47.2k
        }
43
44
5.85k
        std::unique_ptr<Poppler::PSConverter> psConverter = doc->psConverter();
45
46
5.85k
        QBuffer buffer;
47
5.85k
        buffer.open(QIODevice::WriteOnly);
48
5.85k
        psConverter->setOutputDevice(&buffer);
49
50
5.85k
        psConverter->setPageList(pageList);
51
5.85k
        psConverter->setPaperWidth(595);
52
5.85k
        psConverter->setPaperHeight(842);
53
5.85k
        psConverter->setTitle(doc->info(QStringLiteral("Title")));
54
5.85k
        psConverter->convert();
55
5.85k
    }
56
57
5.97k
    return 0;
58
6.32k
}