diff --git a/ChangeLog b/ChangeLog index 02937066..d722e3c0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2014-02-22 Jay Berkenbilt + + * Bug fix: if the last object in the first part of a linearized + file had an offset that was below 65536 by less than the size of + the hint stream, the xref stream was invalid and the resulting file + is not usable. This is now fixed. + 2014-01-14 Jay Berkenbilt * 5.1.1: release diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc index 7dd0d54d..0f299a45 100644 --- a/libqpdf/QPDFWriter.cc +++ b/libqpdf/QPDFWriter.cc @@ -2447,7 +2447,7 @@ QPDFWriter::writeXRefStream(int xref_id, int max_id, qpdf_offset_t max_offset, qpdf_offset_t space_before_zero = xref_offset - 1; // field 1 contains offsets and object stream identifiers - int f1_size = std::max(bytesNeeded(max_offset), + int f1_size = std::max(bytesNeeded(max_offset + hint_length), bytesNeeded(max_id)); // field 2 contains object stream indices