Commit dca70f13e77a5b20ba4f438350a67e48baa796d0

Authored by m-holger
Committed by Jay Berkenbilt
1 parent e9980efe

Add method QPDFTokenizer::Token::isInteger

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