Index: core/fpdfapi/fpdf_parser/cpdf_security_handler.cpp |
diff --git a/core/fpdfapi/fpdf_parser/cpdf_security_handler.cpp b/core/fpdfapi/fpdf_parser/cpdf_security_handler.cpp |
index d6416fb05530d8506d364393806d6e739822c3ea..94ef042bc0a80ca6248cb851f65539cc1f301291 100644 |
--- a/core/fpdfapi/fpdf_parser/cpdf_security_handler.cpp |
+++ b/core/fpdfapi/fpdf_parser/cpdf_security_handler.cpp |
@@ -67,15 +67,15 @@ void CalcEncryptKey(CPDF_Dictionary* pEncrypt, |
} // namespace |
-CPDF_SecurityHandler::CPDF_SecurityHandler() { |
- m_Version = 0; |
- m_Revision = 0; |
- m_pParser = NULL; |
- m_pEncryptDict = NULL; |
- m_Permissions = 0; |
- m_Cipher = FXCIPHER_NONE; |
- m_KeyLen = 0; |
-} |
+CPDF_SecurityHandler::CPDF_SecurityHandler() |
+ : m_Version(0), |
+ m_Revision(0), |
+ m_pParser(nullptr), |
+ m_pEncryptDict(nullptr), |
+ m_Permissions(0), |
+ m_Cipher(FXCIPHER_NONE), |
+ m_KeyLen(0), |
+ m_bOwnerUnlocked(false) {} |
CPDF_SecurityHandler::~CPDF_SecurityHandler() {} |
@@ -94,23 +94,21 @@ FX_BOOL CPDF_SecurityHandler::OnInit(CPDF_Parser* pParser, |
} |
return CheckSecurity(m_KeyLen); |
} |
+ |
FX_BOOL CPDF_SecurityHandler::CheckSecurity(int32_t key_len) { |
CFX_ByteString password = m_pParser->GetPassword(); |
- if (CheckPassword(password.raw_str(), password.GetLength(), TRUE, |
+ if (!password.IsEmpty() && |
+ CheckPassword(password.raw_str(), password.GetLength(), TRUE, |
Tom Sepez
2016/05/23 16:30:26
Nit: candiadate for taking a const CFX_ByteStringC
Lei Zhang
2016/05/23 18:41:24
Yep. I will take care of this in a follow up CL.
|
m_EncryptKey, key_len)) { |
- if (password.IsEmpty()) { |
- if (!CheckPassword(password.raw_str(), password.GetLength(), FALSE, |
- m_EncryptKey, key_len)) { |
- return FALSE; |
- } |
- } |
+ m_bOwnerUnlocked = true; |
return TRUE; |
} |
return CheckPassword(password.raw_str(), password.GetLength(), FALSE, |
m_EncryptKey, key_len); |
} |
+ |
uint32_t CPDF_SecurityHandler::GetPermissions() { |
- return m_Permissions; |
+ return m_bOwnerUnlocked ? 0xFFFFFFFF : m_Permissions; |
} |
static FX_BOOL LoadCryptInfo(CPDF_Dictionary* pEncryptDict, |