aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2019-11-09 17:29:52 +0100
committerJay Berkenbilt <ejb@ql.org>2019-11-09 18:33:15 +0100
commit5508f74603d7a816ab67456939bd3ee57676f842 (patch)
treee918fef9f6da33f7dc0b8a3c8e69369e29dc0a70 /libqpdf
parentb997fa5343ea42054338b9143b3205cb6c164e6e (diff)
downloadqpdf-5508f74603d7a816ab67456939bd3ee57676f842.tar.zst
Allow /P in encryption dictionary to be positive (fixes #382)
Even though this is disallowed by the spec, files like this have been encountered in the wild.
Diffstat (limited to 'libqpdf')
-rw-r--r--libqpdf/QPDFPageObjectHelper.cc1
-rw-r--r--libqpdf/QPDFWriter.cc2
-rw-r--r--libqpdf/QPDF_encryption.cc4
3 files changed, 4 insertions, 3 deletions
diff --git a/libqpdf/QPDFPageObjectHelper.cc b/libqpdf/QPDFPageObjectHelper.cc
index 8ecd0144..d588c322 100644
--- a/libqpdf/QPDFPageObjectHelper.cc
+++ b/libqpdf/QPDFPageObjectHelper.cc
@@ -661,6 +661,7 @@ QPDFPageObjectHelper::getFormXObjectForPage(bool handle_transformations)
return result;
}
+// ABI: name should be std:string const&
std::string
QPDFPageObjectHelper::placeFormXObject(
QPDFObjectHandle fo, std::string name,
diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc
index a31f5da9..7b769ae4 100644
--- a/libqpdf/QPDFWriter.cc
+++ b/libqpdf/QPDFWriter.cc
@@ -762,7 +762,7 @@ QPDFWriter::copyEncryptionParameters(QPDF& qpdf)
V,
encrypt.getKey("/R").getIntValueAsInt(),
key_len,
- encrypt.getKey("/P").getIntValueAsInt(),
+ static_cast<int>(encrypt.getKey("/P").getIntValue()),
encrypt.getKey("/O").getStringValue(),
encrypt.getKey("/U").getStringValue(),
OE,
diff --git a/libqpdf/QPDF_encryption.cc b/libqpdf/QPDF_encryption.cc
index 5a6735ee..9880face 100644
--- a/libqpdf/QPDF_encryption.cc
+++ b/libqpdf/QPDF_encryption.cc
@@ -877,7 +877,7 @@ QPDF::initializeEncryption()
int R = encryption_dict.getKey("/R").getIntValueAsInt();
std::string O = encryption_dict.getKey("/O").getStringValue();
std::string U = encryption_dict.getKey("/U").getStringValue();
- int P = encryption_dict.getKey("/P").getIntValueAsInt();
+ int P = static_cast<int>(encryption_dict.getKey("/P").getIntValue());
// If supporting new encryption R/V values, remember to update
// error message inside this if statement.
@@ -1448,7 +1448,7 @@ QPDF::isEncrypted(int& R, int& P, int& V,
QPDFObjectHandle Pkey = encrypt.getKey("/P");
QPDFObjectHandle Rkey = encrypt.getKey("/R");
QPDFObjectHandle Vkey = encrypt.getKey("/V");
- P = Pkey.getIntValueAsInt();
+ P = static_cast<int>(Pkey.getIntValue());
R = Rkey.getIntValueAsInt();
V = Vkey.getIntValueAsInt();
stream_method = this->m->encp->cf_stream;