Commit 5d3ff8f163051398caa806586b87ea9637dc599e

Authored by m-holger
1 parent cc933c35

Don't set tree root /Limits in NNTreeIterator::resetLimits (fixes #1435)

examples/qtest/name-number-tree/out.pdf
@@ -38,10 +38,6 @@ endobj @@ -38,10 +38,6 @@ endobj
38 6 0 R 38 6 0 R
39 7 0 R 39 7 0 R
40 ] 40 ]
41 - /Limits [  
42 - 7  
43 - 343  
44 - ]  
45 >> 41 >>
46 endobj 42 endobj
47 43
@@ -177,15 +173,15 @@ xref @@ -177,15 +173,15 @@ xref
177 0000000052 00000 n 173 0000000052 00000 n
178 0000000194 00000 n 174 0000000194 00000 n
179 0000000339 00000 n 175 0000000339 00000 n
180 -0000000462 00000 n  
181 -0000000551 00000 n  
182 -0000000878 00000 n  
183 -0000001233 00000 n 176 +0000000432 00000 n
  177 +0000000521 00000 n
  178 +0000000848 00000 n
  179 +0000001203 00000 n
184 trailer << 180 trailer <<
185 /Root 1 0 R 181 /Root 1 0 R
186 /Size 8 182 /Size 8
187 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>] 183 /ID [<31415926535897932384626433832795><31415926535897932384626433832795>]
188 >> 184 >>
189 startxref 185 startxref
190 -1581 186 +1551
191 %%EOF 187 %%EOF
libqpdf/NNTree.cc
@@ -203,7 +203,7 @@ NNTreeIterator::resetLimits(QPDFObjectHandle node, std::list&lt;PathElement&gt;::itera @@ -203,7 +203,7 @@ NNTreeIterator::resetLimits(QPDFObjectHandle node, std::list&lt;PathElement&gt;::itera
203 changed = false; 203 changed = false;
204 } 204 }
205 } 205 }
206 - if (changed) { 206 + if (changed && !node.isSameObjectAs(path.begin()->node)) {
207 node.replaceKey("/Limits", limits); 207 node.replaceKey("/Limits", limits);
208 } 208 }
209 } else { 209 } else {
manual/release-notes.rst
@@ -24,6 +24,12 @@ more detail. @@ -24,6 +24,12 @@ more detail.
24 24
25 - Add missing QPDFFormFieldObjectHelper::isChecked implementation. 25 - Add missing QPDFFormFieldObjectHelper::isChecked implementation.
26 26
  27 + - Fix bug in QPDFNameTreeObjectHelper / QPDFNumberTreeObjectHelper. Under
  28 + certain conditions tree insertions resulted in a /Range entry being
  29 + written to the tree root node, which is not permitted. One of the
  30 + possible consequences is that some readers would not recognize
  31 + embedded / attached files.
  32 +
27 - Build fixes 33 - Build fixes
28 34
29 - Fix Android build issues. 35 - Fix Android build issues.