/src/poppler/qt5/tests/fuzzing/qt_pdf_fuzzer.cc
Line | Count | Source |
1 | | #include <cstdint> |
2 | | #include <poppler-qt5.h> |
3 | | #include <QtCore/QBuffer> |
4 | | #include <QtGui/QImage> |
5 | | |
6 | 32.0M | static void dummy_error_function(const QString &, const QVariant &) { } |
7 | | |
8 | | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) |
9 | 8.25k | { |
10 | 8.25k | Poppler::setDebugErrorFunction(dummy_error_function, QVariant()); |
11 | 8.25k | QByteArray in_data = QByteArray::fromRawData((const char *)data, size); |
12 | 8.25k | Poppler::Document *doc = Poppler::Document::loadFromData(in_data); |
13 | 8.25k | if (!doc || doc->isLocked()) { |
14 | 399 | delete doc; |
15 | 399 | return 0; |
16 | 399 | } |
17 | | |
18 | 62.2k | for (int i = 0; i < doc->numPages(); i++) { |
19 | 54.4k | Poppler::Page *p = doc->page(i); |
20 | 54.4k | if (!p) { |
21 | 42.3k | continue; |
22 | 42.3k | } |
23 | 12.1k | QImage image = p->renderToImage(72.0, 72.0, -1, -1, -1, -1, Poppler::Page::Rotate0); |
24 | 12.1k | delete p; |
25 | 12.1k | } |
26 | | |
27 | 7.85k | if (doc->numPages() > 0) { |
28 | 7.64k | QList<int> pageList; |
29 | 62.0k | for (int i = 0; i < doc->numPages(); i++) { |
30 | 54.4k | pageList << (i + 1); |
31 | 54.4k | } |
32 | | |
33 | 7.64k | Poppler::PSConverter *psConverter = doc->psConverter(); |
34 | | |
35 | 7.64k | QBuffer buffer; |
36 | 7.64k | buffer.open(QIODevice::WriteOnly); |
37 | 7.64k | psConverter->setOutputDevice(&buffer); |
38 | | |
39 | 7.64k | psConverter->setPageList(pageList); |
40 | 7.64k | psConverter->setPaperWidth(595); |
41 | 7.64k | psConverter->setPaperHeight(842); |
42 | 7.64k | psConverter->setTitle(doc->info("Title")); |
43 | 7.64k | psConverter->convert(); |
44 | 7.64k | delete psConverter; |
45 | 7.64k | } |
46 | | |
47 | 7.85k | delete doc; |
48 | 7.85k | return 0; |
49 | 8.25k | } |