Commit a800b4eaa125f424fb6fc6868a64a020a22aa7fb

Authored by Jay Berkenbilt
1 parent 218900d2

updated ChangeLog

git-svn-id: svn+q:///qpdf/trunk@947 71b93d88-0707-0410-a8cf-f5a4172ac649
Showing 2 changed files with 41 additions and 0 deletions
ChangeLog
  1 +2010-03-27 Jay Berkenbilt <ejb@ql.org>
  2 +
  3 + * libqpdf/QPDF_optimization.cc (flattenScalarReferences): Flatten
  4 + scalar references for unreferenced objects as well as those seen
  5 + during traversal of the file. This matters when preserving object
  6 + streams that contain unreferenced objects with indirect scalars.
  7 + (Fixes qpdf-Bugs-2974522.) Updated TODO with a description of a
  8 + possibly better fix involving removal of flattenScalarReferences.
  9 +
  10 + * libqpdf/Pl_AES_PDF.cc (finish): Don't complain if an AES input
  11 + buffer is not a multiple of 16 bytes. Instead, just pad with
  12 + nulls and hope for the best. PDF files have been encountered "in
  13 + the wild" that contain AES buffers that aren't a multiple of 16
  14 + bytes.
  15 +
1 2010-01-24 Jay Berkenbilt <ejb@ql.org> 16 2010-01-24 Jay Berkenbilt <ejb@ql.org>
2 17
3 * 2.1.2: release 18 * 2.1.2: release
@@ -15,6 +15,32 @@ @@ -15,6 +15,32 @@
15 General 15 General
16 ======= 16 =======
17 17
  18 + * See whether it's possible to remove the call to
  19 + flattenScalarReferences. I can't easily figure out why I do it,
  20 + but removing it causes strange test failures in linearization. I
  21 + would have to study the optimization and linearization code to
  22 + figure out why I added this to begin with and what in the code
  23 + assumes it's the case. For enqueueObject and unparseChild in
  24 + QPDFWriter, simply removing the checks for indirect scalars seems
  25 + sufficient.
  26 +
  27 + To pursue this, remove the call to flattenScalarReferences in
  28 + QPDFWriter.cc and disable the logic_error exceptions for indirect
  29 + scalars. Just search for flattenScalarReferences in QPDFWriter.cc
  30 + since the logic errors have comments that mention
  31 + flattenScalarReferences. Then run the test suite. Several files
  32 + that explicitly test flattening of scalar references fail, but the
  33 + indirect scalars are properly preserved and written. But then
  34 + there are some linearized files that have a bunch of unreferenced
  35 + objects that contain scalars. Need to figure out what these are
  36 + and why they're there. Maybe they're objects that used to be
  37 + stream lengths. Probably we just need to make sure don't traverse
  38 + through a stream's /Length stream when enqueueing stream
  39 + dictionaries.
  40 +
  41 + If flattenScalarReferences is removed, a new method will be needed
  42 + for checking PDF files.
  43 +
18 * For debugging linearization bugs, consider adding an option to save 44 * For debugging linearization bugs, consider adding an option to save
19 pass 1 of linearization. This code is sufficient. Change the 45 pass 1 of linearization. This code is sufficient. Change the
20 interface to allow specification of a pass1 file, which would 46 interface to allow specification of a pass1 file, which would