aboutsummaryrefslogtreecommitdiff
path: root/pdf-simple-sign.cpp
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2021-12-08 20:39:02 +0100
committerPřemysl Eric Janouch <p@janouch.name>2021-12-08 20:39:02 +0100
commitbcb24af9265133a4d562c4b2ebbf5f54649639af (patch)
treece4e3caec76015304def9fa72b710272e530b0a8 /pdf-simple-sign.cpp
parentc0927c05dd71d99b6407513d7c519fb296461d36 (diff)
downloadpdf-simple-sign-bcb24af9265133a4d562c4b2ebbf5f54649639af.tar.gz
pdf-simple-sign-bcb24af9265133a4d562c4b2ebbf5f54649639af.tar.xz
pdf-simple-sign-bcb24af9265133a4d562c4b2ebbf5f54649639af.zip
Minor revision
Diffstat (limited to 'pdf-simple-sign.cpp')
-rw-r--r--pdf-simple-sign.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/pdf-simple-sign.cpp b/pdf-simple-sign.cpp
index 1050fd9..8b9d1fe 100644
--- a/pdf-simple-sign.cpp
+++ b/pdf-simple-sign.cpp
@@ -64,7 +64,7 @@ std::string ssprintf(const std::string& format, Args... args) {
// -------------------------------------------------------------------------------------------------
/// PDF token/object thingy. Objects may be composed either from one or a sequence of tokens.
-/// The PDF Reference doesn't actually speak of tokens.
+/// The PDF Reference doesn't actually speak of tokens, though ISO 32000-1:2008 does.
struct pdf_object {
enum type {
END, NL, COMMENT, NIL, BOOL, NUMERIC, KEYWORD, NAME, STRING,
@@ -543,8 +543,8 @@ std::string pdf_updater::initialize() {
const auto prev_offset = trailer.dict.find("Prev");
if (prev_offset == trailer.dict.end())
break;
- // FIXME we don't check for size_t over or underflow
- if (!prev_offset->second.is_integer())
+ // FIXME do not read offsets and sizes as floating point numbers
+ if (!prev_offset->second.is_integer() || prev_offset->second.number < 0)
return "invalid Prev offset";
xref_offset = prev_offset->second.number;
}