summaryrefslogtreecommitdiff
path: root/core/fpdfapi/parser/cpdf_security_handler.cpp
diff options
context:
space:
mode:
authorArtem Strygin <art-snake@yandex-team.ru>2018-07-24 10:14:24 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-07-24 10:14:24 +0000
commitaa50728980036f07fda232cea974fd80c89b7cb7 (patch)
tree101e954b24a44f1d818923076695bd25759d6b14 /core/fpdfapi/parser/cpdf_security_handler.cpp
parentc62aa207e9acb919c33df5f3694fe159619dda86 (diff)
downloadpdfium-aa50728980036f07fda232cea974fd80c89b7cb7.tar.xz
Fix encryption dictionary owning.
Return encryption dictionary as const reference from CPDF_Parser. Create a copy in CPDF_Creator if needed. Change-Id: I270f71d307d818fba7f65ebe379f5942ae816934 Reviewed-on: https://pdfium-review.googlesource.com/38390 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Art Snake <art-snake@yandex-team.ru>
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,