aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2022-09-29 13:52:19 +0200
committerJay Berkenbilt <jberkenbilt@users.noreply.github.com>2022-11-20 17:55:02 +0100
commitdca70f13e77a5b20ba4f438350a67e48baa796d0 (patch)
tree2ab2ada7758e1bfbbb3f6b085df3473e96739f84
parente9980efec87a7a678a1a00cfaf8fc60263c54d24 (diff)
downloadqpdf-dca70f13e77a5b20ba4f438350a67e48baa796d0.tar.zst
Add method QPDFTokenizer::Token::isInteger
-rw-r--r--include/qpdf/QPDFTokenizer.hh5
-rw-r--r--libqpdf/QPDF.cc15
-rw-r--r--libqpdf/QPDF_linearization.cc3
3 files changed, 13 insertions, 10 deletions
diff --git a/include/qpdf/QPDFTokenizer.hh b/include/qpdf/QPDFTokenizer.hh
index 4727dac4..3f5e5206 100644
--- a/include/qpdf/QPDFTokenizer.hh
+++ b/include/qpdf/QPDFTokenizer.hh
@@ -107,6 +107,11 @@ class QPDFTokenizer
(this->type != tt_bad) && (this->type == rhs.type) &&
(this->value == rhs.value));
}
+ bool
+ isInteger() const
+ {
+ return this->type == tt_integer;
+ }
private:
token_type_e type;
diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc
index 8e9a52f8..34cefd2f 100644
--- a/libqpdf/QPDF.cc
+++ b/libqpdf/QPDF.cc
@@ -461,8 +461,7 @@ QPDF::findStartxref()
{
QPDFTokenizer::Token t = readToken(this->m->file);
if (t == QPDFTokenizer::Token(QPDFTokenizer::tt_word, "startxref")) {
- t = readToken(this->m->file);
- if (t.getType() == QPDFTokenizer::tt_integer) {
+ if (readToken(this->m->file).isInteger()) {
// Position in front of offset token
this->m->file->seek(this->m->file->getLastOffset(), SEEK_SET);
return true;
@@ -612,10 +611,10 @@ QPDF::reconstruct_xref(QPDFExc& e)
if (token_start >= next_line_start) {
// don't process yet -- wait until we get to the line
// containing this token
- } else if (t1.getType() == QPDFTokenizer::tt_integer) {
+ } else if (t1.isInteger()) {
QPDFTokenizer::Token t2 = readToken(this->m->file, MAX_LEN);
QPDFTokenizer::Token t3 = readToken(this->m->file, MAX_LEN);
- if ((t2.getType() == QPDFTokenizer::tt_integer) &&
+ if ((t2.isInteger()) &&
(t3 == QPDFTokenizer::Token(QPDFTokenizer::tt_word, "obj"))) {
int obj = QUtil::string_to_int(t1.getValue().c_str());
int gen = QUtil::string_to_int(t2.getValue().c_str());
@@ -1682,8 +1681,8 @@ QPDF::readObjectAtOffset(
QPDFTokenizer::Token tgen = readToken(this->m->file);
QPDFTokenizer::Token tobj = readToken(this->m->file);
- bool objidok = (tobjid.getType() == QPDFTokenizer::tt_integer);
- int genok = (tgen.getType() == QPDFTokenizer::tt_integer);
+ bool objidok = tobjid.isInteger();
+ int genok = tgen.isInteger();
int objok = (tobj == QPDFTokenizer::Token(QPDFTokenizer::tt_word, "obj"));
QTC::TC("qpdf", "QPDF check objid", objidok ? 1 : 0);
@@ -1945,10 +1944,10 @@ QPDF::resolveObjectsInStream(int obj_stream_number)
for (int i = 0; i < n; ++i) {
QPDFTokenizer::Token tnum = readToken(input);
QPDFTokenizer::Token toffset = readToken(input);
- if (!((tnum.getType() == QPDFTokenizer::tt_integer) &&
- (toffset.getType() == QPDFTokenizer::tt_integer))) {
+ if (!(tnum.isInteger() && toffset.isInteger())) {
throw damagedPDF(
input,
+ this->m->last_object_description,
input->getLastOffset(),
"expected integer in object stream header");
}
diff --git a/libqpdf/QPDF_linearization.cc b/libqpdf/QPDF_linearization.cc
index ac7e3efe..0c3cd185 100644
--- a/libqpdf/QPDF_linearization.cc
+++ b/libqpdf/QPDF_linearization.cc
@@ -124,8 +124,7 @@ QPDF::isLinearized()
QPDFTokenizer::Token t2 = readToken(this->m->file);
QPDFTokenizer::Token t3 = readToken(this->m->file);
QPDFTokenizer::Token t4 = readToken(this->m->file);
- if ((t1.getType() == QPDFTokenizer::tt_integer) &&
- (t2.getType() == QPDFTokenizer::tt_integer) &&
+ if (t1.isInteger() && t2.isInteger() &&
(t3 == QPDFTokenizer::Token(QPDFTokenizer::tt_word, "obj")) &&
(t4.getType() == QPDFTokenizer::tt_dict_open)) {
lindict_obj = toI(QUtil::string_to_ll(t1.getValue().c_str()));