Commit 793d987b5fdd55330f2c0df532114c0ce13a25af
1 parent
b07ad679
Update qpdf_fuzzer to increase coverage
Showing
1 changed file
with
20 additions
and
3 deletions
fuzz/qpdf_fuzzer.cc
| ... | ... | @@ -58,9 +58,7 @@ FuzzHelper::getWriter(PointerHolder<QPDF> qpdf) |
| 58 | 58 | { |
| 59 | 59 | PointerHolder<QPDFWriter> w = new QPDFWriter(*qpdf); |
| 60 | 60 | w->setOutputPipeline(&this->discard); |
| 61 | - w->setDeterministicID(true); | |
| 62 | 61 | w->setDecodeLevel(qpdf_dl_all); |
| 63 | - w->setCompressStreams(false); | |
| 64 | 62 | return w; |
| 65 | 63 | } |
| 66 | 64 | |
| ... | ... | @@ -75,6 +73,10 @@ FuzzHelper::doWrite(PointerHolder<QPDFWriter> w) |
| 75 | 73 | { |
| 76 | 74 | std::cerr << e.what() << std::endl; |
| 77 | 75 | } |
| 76 | + catch (std::runtime_error const& e) | |
| 77 | + { | |
| 78 | + std::cerr << e.what() << std::endl; | |
| 79 | + } | |
| 78 | 80 | } |
| 79 | 81 | |
| 80 | 82 | void |
| ... | ... | @@ -87,21 +89,31 @@ FuzzHelper::testWrite() |
| 87 | 89 | |
| 88 | 90 | q = getQpdf(); |
| 89 | 91 | w = getWriter(q); |
| 92 | + w->setDeterministicID(true); | |
| 93 | + w->setQDFMode(true); | |
| 90 | 94 | doWrite(w); |
| 91 | 95 | |
| 92 | 96 | q = getQpdf(); |
| 93 | 97 | w = getWriter(q); |
| 98 | + w->setStaticID(true); | |
| 94 | 99 | w->setLinearization(true); |
| 100 | + w->setR6EncryptionParameters( | |
| 101 | + "u", "o", true, true, true, true, true, true, qpdf_r3p_full, true); | |
| 95 | 102 | doWrite(w); |
| 96 | 103 | |
| 97 | 104 | q = getQpdf(); |
| 98 | 105 | w = getWriter(q); |
| 106 | + w->setStaticID(true); | |
| 99 | 107 | w->setObjectStreamMode(qpdf_o_disable); |
| 108 | + w->setR3EncryptionParameters( | |
| 109 | + "u", "o", true, true, qpdf_r3p_full, qpdf_r3m_all); | |
| 100 | 110 | doWrite(w); |
| 101 | 111 | |
| 102 | 112 | q = getQpdf(); |
| 103 | 113 | w = getWriter(q); |
| 114 | + w->setDeterministicID(true); | |
| 104 | 115 | w->setObjectStreamMode(qpdf_o_generate); |
| 116 | + w->setLinearization(true); | |
| 105 | 117 | doWrite(w); |
| 106 | 118 | } |
| 107 | 119 | |
| ... | ... | @@ -115,6 +127,8 @@ FuzzHelper::testPages() |
| 115 | 127 | QPDFPageLabelDocumentHelper pldh(*q); |
| 116 | 128 | QPDFOutlineDocumentHelper odh(*q); |
| 117 | 129 | QPDFAcroFormDocumentHelper afdh(*q); |
| 130 | + afdh.generateAppearancesIfNeeded(); | |
| 131 | + pdh.flattenAnnotations(); | |
| 118 | 132 | std::vector<QPDFPageObjectHelper> pages = pdh.getAllPages(); |
| 119 | 133 | DiscardContents discard_contents; |
| 120 | 134 | int pageno = 0; |
| ... | ... | @@ -126,10 +140,13 @@ FuzzHelper::testPages() |
| 126 | 140 | ++pageno; |
| 127 | 141 | try |
| 128 | 142 | { |
| 143 | + page.coalesceContentStreams(); | |
| 129 | 144 | page.parsePageContents(&discard_contents); |
| 130 | 145 | page.getPageImages(); |
| 131 | 146 | pldh.getLabelForPage(pageno); |
| 132 | - odh.getOutlinesForPage(page.getObjectHandle().getObjGen()); | |
| 147 | + QPDFObjectHandle page_obj(page.getObjectHandle()); | |
| 148 | + page_obj.getJSON(true).unparse(); | |
| 149 | + odh.getOutlinesForPage(page_obj.getObjGen()); | |
| 133 | 150 | |
| 134 | 151 | std::vector<QPDFAnnotationObjectHelper> annotations = |
| 135 | 152 | afdh.getWidgetAnnotationsForPage(page); | ... | ... |