Commit a367e56afc8ef1ae02ce3042d429550a46d39bb3
1 parent
6d640c56
In QPDF::resolveObjectsInStream avoid creating xref table entries
Invalid entries are created when objects in the stream do not have an existing xref entry.
Showing
1 changed file
with
3 additions
and
2 deletions
libqpdf/QPDF.cc
| @@ -1952,8 +1952,9 @@ QPDF::resolveObjectsInStream(int obj_stream_number) | @@ -1952,8 +1952,9 @@ QPDF::resolveObjectsInStream(int obj_stream_number) | ||
| 1952 | m->last_object_description += "object "; | 1952 | m->last_object_description += "object "; |
| 1953 | for (auto const& iter: offsets) { | 1953 | for (auto const& iter: offsets) { |
| 1954 | QPDFObjGen og(iter.first, 0); | 1954 | QPDFObjGen og(iter.first, 0); |
| 1955 | - QPDFXRefEntry const& entry = m->xref_table[og]; | ||
| 1956 | - if ((entry.getType() == 2) && (entry.getObjStreamNumber() == obj_stream_number)) { | 1955 | + auto entry = m->xref_table.find(og); |
| 1956 | + if (entry != m->xref_table.end() && entry->second.getType() == 2 && | ||
| 1957 | + entry->second.getObjStreamNumber() == obj_stream_number) { | ||
| 1957 | int offset = iter.second; | 1958 | int offset = iter.second; |
| 1958 | input->seek(offset, SEEK_SET); | 1959 | input->seek(offset, SEEK_SET); |
| 1959 | QPDFObjectHandle oh = readObjectInStream(input, iter.first); | 1960 | QPDFObjectHandle oh = readObjectInStream(input, iter.first); |