Index: core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp |
diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp |
index 7604c6224051bbb48420f99145a7a55d4dd810c6..372506d6cce649e0346ea091576e2e6d6fe4f4d4 100644 |
--- a/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp |
+++ b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp |
@@ -881,10 +881,8 @@ |
m_bSecurityChanged(FALSE), |
m_pEncryptDict(m_pParser ? m_pParser->GetEncryptDict() : nullptr), |
m_dwEncryptObjNum(0), |
- m_bEncryptCloned(FALSE), |
m_pCryptoHandler(m_pParser ? m_pParser->GetCryptoHandler() : nullptr), |
m_pMetadata(nullptr), |
- m_pXRefStream(nullptr), |
m_ObjectStreamSize(200), |
m_dwLastObjNum(m_pDocument->GetLastObjNum()), |
m_Offset(0), |
@@ -1961,9 +1959,11 @@ |
CPDF_SecurityHandler handler; |
handler.OnCreate(m_pEncryptDict, m_pIDArray, user_pass.raw_str(), |
user_pass.GetLength(), flag); |
- delete m_pCryptoHandler; |
+ if (m_bLocalCryptoHandler) |
+ delete m_pCryptoHandler; |
m_pCryptoHandler = new CPDF_CryptoHandler; |
m_pCryptoHandler->Init(m_pEncryptDict, &handler); |
+ m_bLocalCryptoHandler = TRUE; |
m_bSecurityChanged = TRUE; |
} |
} |
@@ -2008,6 +2008,10 @@ |
m_pCryptoHandler = nullptr; |
} |
void CPDF_Creator::ResetStandardSecurity() { |
+ if (!m_bLocalCryptoHandler) |
+ return; |
+ |
delete m_pCryptoHandler; |
m_pCryptoHandler = nullptr; |
-} |
+ m_bLocalCryptoHandler = FALSE; |
+} |