diff options
author | m-holger <m-holger@kubitscheck.org> | 2023-08-25 13:37:24 +0200 |
---|---|---|
committer | m-holger <m-holger@kubitscheck.org> | 2023-08-25 13:37:24 +0200 |
commit | 52539544c46db0262a3bf7a67036c80b08c7f4ac (patch) | |
tree | c14591b42198901019fe9ad1f2e1be9c1fe033fa | |
parent | 6574dc5c030f866d560dc43cc7a10263ebc71e27 (diff) | |
download | qpdf-52539544c46db0262a3bf7a67036c80b08c7f4ac.tar.zst |
Modify QPDF::replaceReserved to allow replacing indirect nulls
-rw-r--r-- | include/qpdf/QPDF.hh | 4 | ||||
-rw-r--r-- | libqpdf/QPDF.cc | 5 |
2 files changed, 6 insertions, 3 deletions
diff --git a/include/qpdf/QPDF.hh b/include/qpdf/QPDF.hh index 2ee2bb34..9cfcb2c2 100644 --- a/include/qpdf/QPDF.hh +++ b/include/qpdf/QPDF.hh @@ -391,8 +391,8 @@ class QPDF void swapObjects(int objid1, int generation1, int objid2, int generation2); // Replace a reserved object. This is a wrapper around replaceObject but it guarantees that the - // underlying object is a reserved object. After this call, reserved will be a reference to - // replacement. + // underlying object is a reserved object or a null object. After this call, reserved will + // be a reference to replacement. QPDF_DLL void replaceReserved(QPDFObjectHandle reserved, QPDFObjectHandle replacement); diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc index 45bd1847..739ad7ce 100644 --- a/libqpdf/QPDF.cc +++ b/libqpdf/QPDF.cc @@ -1948,7 +1948,10 @@ void QPDF::replaceReserved(QPDFObjectHandle reserved, QPDFObjectHandle replacement) { QTC::TC("qpdf", "QPDF replaceReserved"); - reserved.assertReserved(); + auto tc = reserved.getTypeCode(); + if (!(tc == ::ot_reserved || tc == ::ot_null)) { + throw std::logic_error("replaceReserved called with non-reserverd object"); + } replaceObject(reserved.getObjGen(), replacement); } |