diff options
Diffstat (limited to 'core/fpdfapi/parser/cpdf_security_handler.cpp')
-rw-r--r-- | core/fpdfapi/parser/cpdf_security_handler.cpp | 8 |
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, |