Commit 793d987b5fdd55330f2c0df532114c0ce13a25af

Authored by Jay Berkenbilt
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&lt;QPDFWriter&gt; 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);
... ...