summaryrefslogtreecommitdiff
path: root/core/fpdfapi/parser/cpdf_security_handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/parser/cpdf_security_handler.cpp')
-rw-r--r--core/fpdfapi/parser/cpdf_security_handler.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/core/fpdfapi/parser/cpdf_security_handler.cpp b/core/fpdfapi/parser/cpdf_security_handler.cpp
index eeba53ef34..caa82a9ddd 100644
--- a/core/fpdfapi/parser/cpdf_security_handler.cpp
+++ b/core/fpdfapi/parser/cpdf_security_handler.cpp
@@ -119,7 +119,13 @@ bool CPDF_SecurityHandler::CheckSecurity(const ByteString& password) {
}
uint32_t CPDF_SecurityHandler::GetPermissions() const {
- return m_bOwnerUnlocked ? 0xFFFFFFFF : m_Permissions;
+ uint32_t dwPermission = m_bOwnerUnlocked ? 0xFFFFFFFF : m_Permissions;
+ if (m_pEncryptDict && m_pEncryptDict->GetStringFor("Filter") == "Standard") {
+ // See PDF Reference 1.7, page 123, table 3.20.
+ dwPermission &= 0xFFFFFFFC;
+ dwPermission |= 0xFFFFF0C0;
+ }
+ return dwPermission;
}
static bool LoadCryptInfo(const CPDF_Dictionary* pEncryptDict,