Commit 52539544c46db0262a3bf7a67036c80b08c7f4ac

Authored by m-holger
1 parent 6574dc5c

Modify QPDF::replaceReserved to allow replacing indirect nulls

include/qpdf/QPDF.hh
... ... @@ -391,8 +391,8 @@ class QPDF
391 391 void swapObjects(int objid1, int generation1, int objid2, int generation2);
392 392  
393 393 // Replace a reserved object. This is a wrapper around replaceObject but it guarantees that the
394   - // underlying object is a reserved object. After this call, reserved will be a reference to
395   - // replacement.
  394 + // underlying object is a reserved object or a null object. After this call, reserved will
  395 + // be a reference to replacement.
396 396 QPDF_DLL
397 397 void replaceReserved(QPDFObjectHandle reserved, QPDFObjectHandle replacement);
398 398  
... ...
libqpdf/QPDF.cc
... ... @@ -1948,7 +1948,10 @@ void
1948 1948 QPDF::replaceReserved(QPDFObjectHandle reserved, QPDFObjectHandle replacement)
1949 1949 {
1950 1950 QTC::TC("qpdf", "QPDF replaceReserved");
1951   - reserved.assertReserved();
  1951 + auto tc = reserved.getTypeCode();
  1952 + if (!(tc == ::ot_reserved || tc == ::ot_null)) {
  1953 + throw std::logic_error("replaceReserved called with non-reserverd object");
  1954 + }
1952 1955 replaceObject(reserved.getObjGen(), replacement);
1953 1956 }
1954 1957  
... ...