• This is CVE-2017-9208.
    
    The QPDF library uses object ID 0 internally as a sentinel to
    represent a direct object, but prior to this fix, was not blocking
    handling of 0 0 obj or 0 0 R as a special case. Creating an object in
    the file with 0 0 obj could cause various infinite loops. The PDF spec
    doesn't allow for object 0. Having qpdf handle object 0 might be a
    better fix, but changing all the places in the code that assumes objid
    == 0 means direct would be risky.
    Jay Berkenbilt authored
     
    Browse File »
  • This is CVE-2017-9210.
    
    The description string for an error message included unparsing an
    object, which is too complex of a thing to try to do while throwing an
    exception. There was only one example of this in the entire codebase,
    so it is not a pervasive problem. Fixing this eliminated one class of
    infinite loop errors.
    Jay Berkenbilt authored
     
    Browse File »









  • Fix exit status for case of errors without warnings, continue after
    errors when possible, add test case for parsing a file with content
    stream errors on some but not all pages.
    Jay Berkenbilt authored
     
    Browse File »





  • Move object parsing code from QPDF to QPDFObjectHandle and
    parameterize the parts of it that are specific to a QPDF object.
    Provide a version that can't handle indirect objects and that can be
    called on an arbitrary string.
    
    A side effect of this change is that the offset used when reporting
    invalid stream length has changed, but since the new value seems like
    a better value than the old one, the test suite has been updated
    rather than making the code backward compatible.  This only effects
    the offset reported for invalid streams that lack /Length or have an
    invalid /Length key.
    
    Updated some test code and exmaples to use QPDFObjectHandle::parse.
    
    Supporting changes include adding a BufferInputSource constructor that
    takes a string.
    Jay Berkenbilt authored
     
    Browse File »



  • QPDFObjectHandle::{new,is,assert}Reserved, QPDF::replaceReserved
    provide a mechanism to add objects to a PDF file when there are
    circular references.  This is a prerequisite to copying objects from
    one PDF to another.
    Jay Berkenbilt authored
     
    Browse File »