aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFParser.cc
diff options
context:
space:
mode:
authorm-holger <m-holger@kubitscheck.org>2023-10-27 18:55:09 +0200
committerm-holger <m-holger@kubitscheck.org>2023-11-01 16:38:01 +0100
commitd904eab84c008325289bfb7ddcf60256b36a1b67 (patch)
tree00c57a55bd54e4bd4e484068ed22268eab6b7b47 /libqpdf/QPDFParser.cc
parent90829228b814c6fe3ea3192da34db90dc1e36843 (diff)
downloadqpdf-d904eab84c008325289bfb7ddcf60256b36a1b67.tar.zst
In QPDFParser::parse refactor handling of array_open and dict_open tokens
Diffstat (limited to 'libqpdf/QPDFParser.cc')
-rw-r--r--libqpdf/QPDFParser.cc14
1 files changed, 3 insertions, 11 deletions
diff --git a/libqpdf/QPDFParser.cc b/libqpdf/QPDFParser.cc
index 5bff6af3..12a53851 100644
--- a/libqpdf/QPDFParser.cc
+++ b/libqpdf/QPDFParser.cc
@@ -227,20 +227,15 @@ QPDFParser::parse(bool& empty, bool content_stream)
if (stack.size() > 500) {
QTC::TC("qpdf", "QPDFParser too deep");
warn("ignoring excessively deeply nested data structure");
- if (tooManyBadTokens()) {
- return {QPDF_Null::create()};
- }
- is_null = true;
- state = st_top;
+ return {QPDF_Null::create()};
} else {
- state = st_start;
state_stack.push_back(
(tokenizer.getType() == QPDFTokenizer::tt_array_open) ? st_array
: st_dictionary);
b_contents = false;
stack.emplace_back(input);
+ continue;
}
- break;
case QPDFTokenizer::tt_bool:
object = QPDF_Bool::create((tokenizer.getValue() == "true"));
@@ -349,7 +344,7 @@ QPDFParser::parse(bool& empty, bool content_stream)
break;
}
- if (object == nullptr && !is_null && state != st_start) {
+ if (object == nullptr && !is_null) {
throw std::logic_error("QPDFParser:parseInternal: unexpected uninitialized object");
}
@@ -369,9 +364,6 @@ QPDFParser::parse(bool& empty, bool content_stream)
case st_top:
done = true;
break;
-
- case st_start:
- break;
}
}