diff options
author | Bo Xu <bo_xu@foxitsoftware.com> | 2014-06-12 13:40:04 -0700 |
---|---|---|
committer | Bo Xu <bo_xu@foxitsoftware.com> | 2014-06-12 13:40:04 -0700 |
commit | a5572c3715624b38ac861c87236185f98fa9083b (patch) | |
tree | e1a081264c67430c2aabc33681fc51c07e3b9cbc | |
parent | 3084c79dce15a41c056d4e5c634e09010e7323e0 (diff) | |
download | pdfium-a5572c3715624b38ac861c87236185f98fa9083b.tar.xz |
Enable security removal in FPDF_Doc_Save
R=jam@chromium.org
Review URL: https://codereview.chromium.org/333753002
-rw-r--r-- | core/include/fpdfapi/fpdf_serial.h | 4 | ||||
-rw-r--r-- | core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp | 9 | ||||
-rw-r--r-- | fpdfsdk/include/fpdfsave.h | 3 | ||||
-rw-r--r-- | fpdfsdk/src/fpdfsave.cpp | 7 |
4 files changed, 19 insertions, 4 deletions
diff --git a/core/include/fpdfapi/fpdf_serial.h b/core/include/fpdfapi/fpdf_serial.h index 87ec7b5a05..a91870b5a5 100644 --- a/core/include/fpdfapi/fpdf_serial.h +++ b/core/include/fpdfapi/fpdf_serial.h @@ -1,7 +1,7 @@ // Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - + // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef _FPDF_SERIAL_ @@ -121,6 +121,8 @@ public: ~CPDF_Creator(); + void RemoveSecurity(); + FX_BOOL Create(FX_LPCWSTR filename, FX_DWORD flags = 0); FX_BOOL Create(FX_LPCSTR filename, FX_DWORD flags = 0); diff --git a/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp b/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp index e5bb1cf985..bdbcccdf06 100644 --- a/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp +++ b/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp @@ -1,7 +1,7 @@ // Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - + // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "../../../include/fpdfapi/fpdf_serial.h" @@ -2113,6 +2113,13 @@ FX_BOOL CPDF_Creator::SetFileVersion(FX_INT32 fileVersion ) m_FileVersion = fileVersion; return TRUE; } +void CPDF_Creator::RemoveSecurity() +{ + ResetStandardSecurity(); + m_bSecurityChanged = TRUE; + m_pEncryptDict = NULL; + m_pCryptoHandler = NULL; +} void CPDF_Creator::ResetStandardSecurity() { if ((m_bStandardSecurity || m_bNewCrypto) && m_pCryptoHandler) { diff --git a/fpdfsdk/include/fpdfsave.h b/fpdfsdk/include/fpdfsave.h index a69456086a..0909d5a447 100644 --- a/fpdfsdk/include/fpdfsave.h +++ b/fpdfsdk/include/fpdfsave.h @@ -47,7 +47,8 @@ struct FPDF_FILEWRITE{ #define FPDF_INCREMENTAL 1 /** @brief No Incremental. */ #define FPDF_NO_INCREMENTAL 2 - +/** @brief Remove security. */ +#define FPDF_REMOVE_SECURITY 3 // Function: FPDF_SaveAsCopy // Saves the copy of specified document in custom way. diff --git a/fpdfsdk/src/fpdfsave.cpp b/fpdfsdk/src/fpdfsave.cpp index 0c7acc8c47..6637c784fe 100644 --- a/fpdfsdk/src/fpdfsave.cpp +++ b/fpdfsdk/src/fpdfsave.cpp @@ -60,7 +60,7 @@ FPDF_BOOL _FPDF_Doc_Save(FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite,FPDF if (!pDoc) return 0; - if ( flags < 1 || flags > 2 ) + if ( flags < FPDF_INCREMENTAL || flags > FPDF_REMOVE_SECURITY ) { flags = 0; } @@ -68,6 +68,11 @@ FPDF_BOOL _FPDF_Doc_Save(FPDF_DOCUMENT document,FPDF_FILEWRITE * pFileWrite,FPDF CPDF_Creator FileMaker(pDoc); if(bSetVersion) FileMaker.SetFileVersion(fileVerion); + if(flags == FPDF_REMOVE_SECURITY) + { + flags = 0; + FileMaker.RemoveSecurity(); + } CFX_IFileWrite* pStreamWrite = NULL; FX_BOOL bRet; pStreamWrite = new CFX_IFileWrite; |