Commit dca70f13e77a5b20ba4f438350a67e48baa796d0
Committed by
Jay Berkenbilt
1 parent
e9980efe
Add method QPDFTokenizer::Token::isInteger
Showing
3 changed files
with
13 additions
and
10 deletions
include/qpdf/QPDFTokenizer.hh
| ... | ... | @@ -107,6 +107,11 @@ class QPDFTokenizer |
| 107 | 107 | (this->type != tt_bad) && (this->type == rhs.type) && |
| 108 | 108 | (this->value == rhs.value)); |
| 109 | 109 | } |
| 110 | + bool | |
| 111 | + isInteger() const | |
| 112 | + { | |
| 113 | + return this->type == tt_integer; | |
| 114 | + } | |
| 110 | 115 | |
| 111 | 116 | private: |
| 112 | 117 | token_type_e type; | ... | ... |
libqpdf/QPDF.cc
| ... | ... | @@ -461,8 +461,7 @@ QPDF::findStartxref() |
| 461 | 461 | { |
| 462 | 462 | QPDFTokenizer::Token t = readToken(this->m->file); |
| 463 | 463 | if (t == QPDFTokenizer::Token(QPDFTokenizer::tt_word, "startxref")) { |
| 464 | - t = readToken(this->m->file); | |
| 465 | - if (t.getType() == QPDFTokenizer::tt_integer) { | |
| 464 | + if (readToken(this->m->file).isInteger()) { | |
| 466 | 465 | // Position in front of offset token |
| 467 | 466 | this->m->file->seek(this->m->file->getLastOffset(), SEEK_SET); |
| 468 | 467 | return true; |
| ... | ... | @@ -612,10 +611,10 @@ QPDF::reconstruct_xref(QPDFExc& e) |
| 612 | 611 | if (token_start >= next_line_start) { |
| 613 | 612 | // don't process yet -- wait until we get to the line |
| 614 | 613 | // containing this token |
| 615 | - } else if (t1.getType() == QPDFTokenizer::tt_integer) { | |
| 614 | + } else if (t1.isInteger()) { | |
| 616 | 615 | QPDFTokenizer::Token t2 = readToken(this->m->file, MAX_LEN); |
| 617 | 616 | QPDFTokenizer::Token t3 = readToken(this->m->file, MAX_LEN); |
| 618 | - if ((t2.getType() == QPDFTokenizer::tt_integer) && | |
| 617 | + if ((t2.isInteger()) && | |
| 619 | 618 | (t3 == QPDFTokenizer::Token(QPDFTokenizer::tt_word, "obj"))) { |
| 620 | 619 | int obj = QUtil::string_to_int(t1.getValue().c_str()); |
| 621 | 620 | int gen = QUtil::string_to_int(t2.getValue().c_str()); |
| ... | ... | @@ -1682,8 +1681,8 @@ QPDF::readObjectAtOffset( |
| 1682 | 1681 | QPDFTokenizer::Token tgen = readToken(this->m->file); |
| 1683 | 1682 | QPDFTokenizer::Token tobj = readToken(this->m->file); |
| 1684 | 1683 | |
| 1685 | - bool objidok = (tobjid.getType() == QPDFTokenizer::tt_integer); | |
| 1686 | - int genok = (tgen.getType() == QPDFTokenizer::tt_integer); | |
| 1684 | + bool objidok = tobjid.isInteger(); | |
| 1685 | + int genok = tgen.isInteger(); | |
| 1687 | 1686 | int objok = (tobj == QPDFTokenizer::Token(QPDFTokenizer::tt_word, "obj")); |
| 1688 | 1687 | |
| 1689 | 1688 | QTC::TC("qpdf", "QPDF check objid", objidok ? 1 : 0); |
| ... | ... | @@ -1945,10 +1944,10 @@ QPDF::resolveObjectsInStream(int obj_stream_number) |
| 1945 | 1944 | for (int i = 0; i < n; ++i) { |
| 1946 | 1945 | QPDFTokenizer::Token tnum = readToken(input); |
| 1947 | 1946 | QPDFTokenizer::Token toffset = readToken(input); |
| 1948 | - if (!((tnum.getType() == QPDFTokenizer::tt_integer) && | |
| 1949 | - (toffset.getType() == QPDFTokenizer::tt_integer))) { | |
| 1947 | + if (!(tnum.isInteger() && toffset.isInteger())) { | |
| 1950 | 1948 | throw damagedPDF( |
| 1951 | 1949 | input, |
| 1950 | + this->m->last_object_description, | |
| 1952 | 1951 | input->getLastOffset(), |
| 1953 | 1952 | "expected integer in object stream header"); |
| 1954 | 1953 | } | ... | ... |
libqpdf/QPDF_linearization.cc
| ... | ... | @@ -124,8 +124,7 @@ QPDF::isLinearized() |
| 124 | 124 | QPDFTokenizer::Token t2 = readToken(this->m->file); |
| 125 | 125 | QPDFTokenizer::Token t3 = readToken(this->m->file); |
| 126 | 126 | QPDFTokenizer::Token t4 = readToken(this->m->file); |
| 127 | - if ((t1.getType() == QPDFTokenizer::tt_integer) && | |
| 128 | - (t2.getType() == QPDFTokenizer::tt_integer) && | |
| 127 | + if (t1.isInteger() && t2.isInteger() && | |
| 129 | 128 | (t3 == QPDFTokenizer::Token(QPDFTokenizer::tt_word, "obj")) && |
| 130 | 129 | (t4.getType() == QPDFTokenizer::tt_dict_open)) { |
| 131 | 130 | lindict_obj = toI(QUtil::string_to_ll(t1.getValue().c_str())); | ... | ... |